Der einfache Weg zur fehlerfreien JCL Smart/JCL Der einfache Weg zur fehlerfreien JCL Basisworkshop HORIZONT Software für Rechenzentren Garmischer Str. 8 D- 80339 München Tel ++49(0)89 / 540 162 - 0 www.horizont-it.com 1 1 1 1 1 1 1 1 1 1 1
Vorwort Der Basiskurs sollte beim ersten Mal in der vorgegebenen sequentiellen Reihenfolge durchgegangen werden. Er hilft Ihnen, SmartJCL besser kennen zu lernen. Der beste Weg dazu ist jedoch einfach: Benutzen Sie SmartJCL so oft es geht. Falls Sie den Kurs nicht in der sequentiellen Reihenfolge durchgehen, können Sie mit Hilfe des Index (s. nächste Folie) navigieren. Einführung Inhalt 1 Inhalt 2 Inhalt 3 Wenn Sie auf dieses Feld klicken, kommen Sie zurück zum Inhaltsverzeichnis.
Inhaltsverzeichnis Einführung Im Editor JCL prüfen Im Editor Scheduling-Variablen simulieren Tipps zum EDIT-Makro Mit ISPF-Dialog/Batch JCL prüfen Mit ISPF-Dialog/Batch Scheduling-Variablen simulieren Sonstiges zu TWS-Variablen
Einführung SmartJCL ist ein JCL-Checker Aufgabe eines JCL-Checkers ist das Auffinden von Fehlern in der JCL vor Produktionseinsatz Das erfordert folgende Eigenschaften: Einzelne Jobs müssen bei Erstellung geprüft werden: Direkt bei der Änderung im ISPF-Editor Nach der Änderung mittels ISPF-Dialog Batch-Modus
Einführung Erforderliche Eigenschaften (Fs.): Ganze Jobketten, im günstigsten Fall der gesamte Produktionsablauf, müssen geprüft werden Dazu ist eine hohe Verarbeitungsgeschwindigkeit erforderlich Eine Simulation der Katalogaktionen wäre wünschenswert Variablen der Scheduling-Systeme müssen berücksichtigt bzw. aufgelöst werden Für TWS zOS existiert die in SmartJCL integrierte Komponente TWS/SimJCL Günstig wäre es, zukünftige Produktionsabläufe im Vorfeld zu prüfen
Standard-Kommandos In dieser Präsentation werden die Standardaufruf-Kommandos verwendet. In Ihrem Unternehmen könnten die Kommandos anders heißen. Die Standardkommandos beim EDIT-Makro sind: JCK: JCL prüfen OSJ: TWS-Variablen simulieren OSJ JCK: TWS-Variablen simulieren und aufgelöste JCL prüfen
Standard-REXXen In dieser Präsentation werden die Standardaufruf-REXXen verwendet. In Ihrem Unternehmen könnten die Aufrufe anders heißen oder in ISPF integriert sein. Die REXXen in der Datei HLQ.SMARTJCL.CLIST zum Starten des ISPF-Dialoges ist: JCKX: SmartJCL ISPF-Dialog
Aufruf-Varianten SmartJCL kann auf folgende Arten eingesetzt werden: EDIT-Modus Einen Job prüfen Einen Job simulieren Einen Job simulieren und prüfen ISPF-Dialog oder per Batchjob viele Jobs prüfen viele Jobs simulieren viele Jobs simulieren und prüfen
JCL im Editor prüfen Sie editieren JCL und wollen diese prüfen Folgende Varianten sind möglich: Editierte JCL checken prüfen simulieren simulieren und prüfen JCL aus Joblib
JCL im Editor prüfen JCL prüfen Verschiedene Beispiele Beispiel Katalogsimulation Beispiel IDCAMS-Statements prüfen
... und wollen die JCL prüfen. JCL im Editor prüfen Sie editieren Ihre JCL ... ... und wollen die JCL prüfen.
JCL im Editor prüfen Geben Sie JCK ein
JCL im Editor prüfen Wenn SmartJCL keinen Fehler findet, zeigt SmartJCL die Meldung „Check successful“ an. Ihre JCL ist OK.
JCL im Editor prüfen Hinweis: Prozeduren innerhalb des Jobs werden übrigens als NOTE-Zeilen in aufgelöster Form angezeigt
JCL im Editor prüfen Wenn SmartJCL einen Fehler findet, zeigt SmartJCL die Meldung „Errors occured“ an. Ihre JCL ist nicht OK. Alle Fehler werden als NOTE-Zeilen angezeigt, mit Label-Kennung, Messagenummer und einem Fehlertext
JCL im Editor prüfen Wenn Sie zu einem bestimmten Fehler springen wollen, geben Sie bitte „L .label-kennung“ ein, z.B. L .HAAA, um zum ersten Fehler zu kommen
JCL im Editor prüfen SmartJCL springt zum entsprechenden Fehler. Zu jedem fehlerhaften JCL-Statement ist als NOTE-Zeile der Fehlertext eingefügt
JCL im Editor prüfen Der Fehlertext „UNDEFINED PARAMETER DCG ON DD STMT“ zeigt an, das der Parameter DCG nicht erlaubt ist. Korrigieren Sie den Wert (hier DCB statt DCG), korrigieren Sie ggf. auch alle anderen Fehler und rufen Sie erneut JCK auf, ...
..., solange bis SmartJCL meldet, dass die Prüfung erfolgreich war. JCL im Editor prüfen ..., solange bis SmartJCL meldet, dass die Prüfung erfolgreich war.
Beispiele Im Folgenden werden verschiedene Fehlerszenarien und ihre Meldungen gezeigt. Natürlich gibt es jede Menge weitere Fehlerszenarien, die hier nicht alle aufgeführt werden können. Invalid DCB-Parameter Invalid JCL statement, weil Fortsetzungszeichen fehlt Invalid JCL statement, DD falsch Invalid JCL statement, JOB falsch Invalid JCL statement, EXEC falsch Invalid DISP-Parameter Katalogsimulationsfehler, IDCAMS-DEL-Anweisung in Prozedur falsch
Invalid DCB-Parameter Falsch DORG, richtig DSORG
Invalid JCL-Statement Komma für Fortsetzungszeile fehlt
Invalid JCL-Statement Falsch DF, richtig DD
Invalid JCL-Statement Falsch JOP, richtig JOB
Invalid JCL-Statement Falsch XXEC, richtig EXEC
Falsch KATLG, richtig CATLG Invalid DISP Falsch KATLG, richtig CATLG
Katalogaktionen simulieren Wenn neben den JCL-Fehlern auch die Katalogaktionen geprüft werden sollen (dies kann per Parameter gesteuert werden), kann z.B. o.a. Meldung erscheinen „dataset is already cataloged“.
Katalogaktionen simulieren Springen Sie mit „l .haaa“ zu der entsprechenden Stelle
Katalogaktionen simulieren Die Datei soll hier neu angelegt werden. SmartJCL prüft, ob die Datei schon vorhanden ist und stellt fest, dass die Datei in Ihrem Katalog schon existiert und daher nicht noch einmal angelegt werden kann. Suchen Sie im Job nach dem ersten Auftreten des Dateinamens ...
Katalogaktionen simulieren ... und schon erkennen Sie, dass die Datei zu Beginn des Jobs in einer IDCAMS-Prozedur gelöscht werden soll und dass darin die DEL-Anweisung statt mit DEL mit DEK geschrieben wurde.
IDCAMS-Statements Wenn in Ihrer Installation aktiviert ist, dass SmartJCL auch IDCAMS-Statements prüfen soll, bekommen Sie von SmartJCL angezeigt, dass das DEL-Statement falsch geschrieben ist.
Korrigieren Sie das DEK-Statement in DEL IDCAMS-Statements Korrigieren Sie das DEK-Statement in DEL
JCL im Editor simulieren Simulieren bedeutet, dass die Scheduler-Variablen aufgelöst werden. Bisher unterstützte Scheduling-Systeme TWS z/OS
TWS-JCL im Editor simulieren Wenn SmartJCL die JCL mit TWS-Variablen simuliert, kommuniziert SmartJCL mit dem TWS. TWS sucht dabei die JCL in folgender Reihenfolge: 1. In der JS-Datei 2. In den TWS zugeordneten Job-Bibliotheken Daher muss eine zu simulierende JCL entweder in der JS-Datei oder auf einer der TWS-Job-Bibliotheken stehen. Weiterhin muss eine Operation im CP oder in der AD-Datei mit einem identischen Jobnamen existieren. Dies ist auch der Grund, dass SmartJCL oder Sie beim Simulieren einer „neuen“ JCL die JCL zuerst auf eine TWS-Joblib oder in die JS-Datei schreiben und dass zum Jobnamen eine Muster-Operation existieren muss.
TWS-JCL im Editor simulieren JCL von Joblib simulieren Aktuell editierte JCL simulieren JCL simulieren und prüfen JCL simulieren und simulierte JCL in JS-Datei speichern Beispiele für Fehlermeldungen Simulation eines Noch-Nicht-TWS-Jobs Simulation eines Scripts
TWS-JCL im Editor simulieren Sie editieren die JCL auf einer Ihrer TWS-Job-Bibliotheken die JCL hat TWS-Variablen
TWS-JCL im Editor simulieren Sichern Sie die JCL mit SAVE und gehen zur nächsten Folie, oder ... ... klicken Sie hier drauf.
TWS-JCL im Editor simulieren Geben Sie OSJ ein
TWS-JCL im Editor simulieren Job-/Membername Der Jobname wird zuerst im TWS-Tagesplan (CP) gesucht. Meldung erscheint, ob der Job gefunden oder nicht gefunden wurde. Sie werden gefragt, ob der Job zusätzlich in der TWS-Definitionsdatei (AD) gesucht werden soll.
TWS-JCL im Editor simulieren Dabei durchsucht SmartJCL alle Operationen aller Aufträge aus der TWS-Definitionsdatei (AD). Dies kann unter Umständen bei sehr vielen Aufträgen mit sehr vielen Operationen je Systemauslastung etwas dauern.
TWS-JCL im Editor simulieren Alle Jobs aus dem Tagesplan (s. Wert CP in Spalte origin) und alle Jobs aus der Definitionsdatenbank (s. Wert AD in Spalte Origin) werden in einer Auswahlliste angezeigt.
TWS-JCL im Editor simulieren Geben Sie das Simulationsdatum und -zeit ein Geben Sie ein IA-Datum und eine IA-Zeit ein. Die IA ist zwingend, wenn Origin AD ist.
TWS-JCL im Editor simulieren Wählen Sie eine Operation aus
TWS-JCL im Editor simulieren SmartJCL löst die TWS-Variablen auf und zeigt Ihnen die simulierte JCL als NOTE-Zeilen an
Geänderte JCL im Editor simulieren Folgende Vorgehensweise benötigen Sie, wenn: die JCL im Editor verändert wurde und noch nicht gesichert worden ist die JCL noch auf keiner TWS-Job-Bibliothek steht Anmerkung: In beiden Fällen müssen Sie SmartJCL explizit mitteilen, dass es die JCL aus dem Editor zur Simulation verwenden soll.
Geänderte JCL im Editor simulieren Geben Sie OSJ ein
Geänderte JCL im Editor simulieren Der Jobname wird zuerst im TWS-Tagesplan (CP) gesucht. Eine Meldung erscheint, ob der Job gefunden oder nicht gefunden wurde. Sie werden gefragt, ob der Job zusätzlich in der TWS-Definitionsdatei (AD) gesucht werden soll.
Geänderte JCL im Editor simulieren Alle Jobs aus dem Tagesplan (s. Wert CP in Spalte origin) und alle Jobs aus der Definitionsdatenbank (s. Wert AD in Spalte Origin) werden in einer Auswahlliste angezeigt.
Geänderte JCL im Editor simulieren Geben Sie das Simulationsdatum und -zeit ein Geben Sie ein IA-Datum und eine IA-Zeit ein. Die IA ist zwingend, wenn Origin AD ist.
Geänderte JCL im Editor simulieren Geben Sie SP an
Geänderte JCL im Editor simulieren Ein Menü mit mehreren Eingabefeldern öffnet sich
Geänderte JCL im Editor simulieren Wenn Sie die JCL aus dem Editor simulieren wollen, geben Sie hier Y an. Mit F3 verlassen Sie dieses Menü.
Geänderte JCL im Editor simulieren Wählen Sie eine Operation aus
Geänderte JCL im Editor simulieren SmartJCL löst die TWS-Variablen auf und zeigt Ihnen die simulierte JCL als NOTE-Zeilen an
Geänderte JCL im Editor simulieren Technischer Ablauf die JCL aus dem Editor wird in die JS-Datei kopiert eine möglicherweise mit den selben Schlüsseldaten existierende JCL in der TWS-JS-Datei (Key Auftragsname, IA, Operationsnummer) wird von SmartJCL zwischen gespeichert und die „editierte JCL“ in die JS-Datei eingefügt die Simulation wird ausgeführt die „editierte JCL“ wird aus der JS-Datei gelöscht eine zwischen gespeicherte JCL wird zurück in die TWS-JS-Datei kopiert
Geänderte JCL im Editor simulieren Wichtiger Hinweis Wenn Sie die JCL direkt im TWS-Tagesplan-Dialog ändern und die geänderte JCL simulieren wollen, funktioniert der Befehl SP nicht, weil TWS die „eigene“ JCL in diesem Moment gegen Änderungen sperrt. Im SmartJCL-Dialog bekommen Sie die Meldung „OSJM214E INSERT OF JCL TO JS-DATASET NOT DONE “. In Ihrer eigenen User-Session bekommen Sie im DD-Statement EQQMLOG folgende Meldungen angezeigt: EQQY722W DELETE RECORD WITH KEY adid ia NOT DONE, IS BEING UPDATED. EQQY722I RESOURCE IS JS EQQY721W CONCURRENT UPDATE (INSERT) OF RECORD WITH KEY adid ia, UPDATE PERFORMED
Geänderte JCL im Editor simulieren Wichtiger Hinweis (Fortsetzung) Wenn Sie die JCL im TWS-Tagesplan-Dialog simulieren wollen, speichern Sie die JCL bitte in das JS-File, indem Sie den TWS-JCL-Editor einmal verlassen und anschließend gleich wieder die JCL editieren. Verwenden Sie beim Simulieren nicht das Kommando SP.
Simulieren und Prüfen Mit dem Kommando OSJ JCK können Sie das Simulieren und das Checken in einem Durchlauf durchführen lassen.
Simulieren und Prüfen Geben Sie OSJ JCK ein
Der Jobname wird zuerst im TWS-Tagesplan (CP) gesucht. Simulieren und Prüfen Der Jobname wird zuerst im TWS-Tagesplan (CP) gesucht. Meldung erscheint, ob der Job gefunden oder nicht gefunden wurde. Sie werden gefragt, ob der Job zusätzlich in der TWS-Definitionsdatei (AD) gesucht werden soll.
Simulieren und Prüfen Alle Jobs aus dem Tagesplan (s. Wert CP in Spalte origin) und alle Jobs aus der Definitionsdatenbank (s. Wert AD in Spalte origin) werden in einer Auswahlliste angezeigt.
Geben Sie das Simulationsdatum und -zeit ein Simulieren und Prüfen Geben Sie das Simulationsdatum und -zeit ein Geben Sie ein IA-Datum und eine IA-Zeit ein. Die IA ist zwingend, wenn die origin AD ist.
Wählen Sie eine Operation aus Simulieren und Prüfen Wählen Sie eine Operation aus
Simulieren und Prüfen SmartJCL löst die TWS-Variablen auf und zeigt Ihnen die simulierte JCL sowie Fehlermeldungen als NOTE-Zeilen an.
Simulieren und Prüfen In diesem Fall wird die TWS-Variable OCTIME mit dem Wert 0600 ersetzt. Der Dateiname wird auf Gültigkeit geprüft und SmartJCL zeigt an, dass der Dateiqualifier 0600 ungültig ist.
JCL des Editors simulieren und speichern Geben Sie OSJ ein
JCL des Editors simulieren und speichern Der Jobname wird zuerst im TWS-Tagesplan (CP) gesucht. Meldung erscheint, ob der Job gefunden oder nicht gefunden wurde. Sie werden gefragt, ob der Job zusätzlich in der TWS-Definitionsdatei (AD) gesucht werden soll.
JCL des Editors simulieren und speichern Alle Jobs aus dem Tagesplan (s. Wert CP in Spalte origin) und alle Jobs aus der Definitionsdatenbank (s. Wert AD in Spalte origin) werden in einer Auswahlliste angezeigt.
JCL des Editors simulieren und speichern Geben Sie das Simulationsdatum und -zeit ein Geben Sie ein IA-Datum und eine IA-Zeit ein. Die IA ist zwingend, wenn die origin AD ist.
JCL des Editors simulieren und speichern Geben Sie SP an
JCL des Editors simulieren und speichern Ein Menü mit mehreren Eingabefeldern öffnet sich
JCL des Editors simulieren und speichern Wenn Sie die JCL aus dem Editor simulieren wollen, geben Sie hier Y an. Wenn die simulierte JCL in die JS-Datei kopiert werden soll, geben Sie hier Y an. Mit F3 verlassen Sie dieses Menü.
JCL des Editors simulieren und speichern Wählen Sie eine Operation aus
JCL des Editors simulieren und speichern Wenn in der JS-Datei eine JCL existiert, werden Sie gefragt, ob Sie die JS-JCL überschreiben wollen. Geben Sie zum Überschreiben Y an.
Beispiele In den folgenden Folien werden verschiedene Beispiele aufgeführt, welche Fehler u.a. beim Simulieren der TWS-Variablentabellen auftreten können und von SmartJCL bzw. TWS/SimJCL aufgezeigt werden Variablentabelle existiert nicht Unbekannte Variable Ungültiges Variablenformat Überlappende Variablen Unbekanntes oder nicht aktives TWS-System Problem in der Kommunikation bzw. mit dem PIF-Server
Variablentabelle existiert nicht
Variablentabelle existiert nicht Die Variablentabelle existiert im TWS nicht Lösung Variablentabelle im TWS anlegen
Unbekannte Variable
Unbekannte Variable TWS kennt die Variablen mit dem Namen &JOBNAME nicht Lösung korrekten Variablenname angeben, z.B. hier &JOBNAME in &OJOBNAME ändern Variable in einer Variablentabelle anlegen, welche dem Job bekannt ist
Ungültiges Variablenformat
Ungültiges Variablenformat Die Variable ACDATE des SETFORM-Statements ist unbekannt Im SETFORM-Statement können nur dem TWS bekannte datums- oder zeit-bezogene Variablennamen oder „Trennzeichen“ verwendet werden Lösung Variablenname ACDATE in OCDATE ändern, entsprechend ACTIME in OCTIME
Ungültiges Variablenformat Hier sehen Sie die simulierte JCL
Überlappende Variablen Simulation meldet Fehler Simulation meldet Fehler
Überlappende Variablen Lösung: Besser: nur ?-Variablen in einer Zeile gemeinsam verwenden
Überlappende Variablen Hier sehen Sie die Original-JCL
Überlappende Variablen Hier sehen Sie die korrekte JCL
Überlappende Variablen Hier sehen Sie die simulierte JCL
Mögliche Problemsituationen Auf den folgenden Folien werden einige Szenarien erläutert, welche beim Einsatz der TWS-Simulation von SmartJCL auftreten können: Gründe bei der Fehlermeldung „ERROR in PIF-Init“ Falscher TWS-Subsystemname Unbekannter PIF-Server
TWS-Subsystemname falsch Wenn diese Fehlermeldung erscheint, kann SmartJCL nicht mit dem TWS kommunizieren. Das kann verschiedene Gründe haben.
TWS-Subsystemname falsch Sehen Sie sich im SDSF Ihre aktuelle UserId-Session an.
TWS-Subsystemname falsch Bei jedem „Problem mit TWS“ wird die Datei EQQMLOG normalerweise vom TWS mit Meldungen gefüllt. Sehen Sie sich die „letzte EQQMLOG“ an.
TWS-Subsystemname falsch Hier erkennen sie, dass das TWS-System mit dem Namen OPCT nicht aktiv ist. Technischer Hintergrund: SmartJCL möchte mit einem TWS namens OPCT kommunizieren. Im INIT-Statement in der ersten Zeile erkennen Sie, ob SmartJCL das OPCT direkt ruft (es ist kein LUNAME-Parameter angegeben) oder mittels Server (LUNAME ist angegeben) mit dem OPCT kommunizieren möchte.
TWS-Subsystemname falsch Mögliche Gründe, warum sich SmartJCL nicht an das TWS anmelden kann: mit dem Aufruf OSJ wurde ein Edit-Makro aufgerufen, welches sich an ein unbekanntes TWS-System anmelden möchte, z.B. der TWS-Subsystemname ist nicht korrekt Lösung: TWS-Subsystemnamen korrigieren der TWS-Subsystemname ist zwar korrekt, das TWS ist aber auf einem anderen System aktiv als der SmartJCL-Dialog Lösung: Auf das andere System wechseln oder PIF-Server zur Kommunikation einsetzen.
TWS-Subsystemname falsch Prüfen Sie die Parameter des Members OPZXPARM in hlq.SMARTJCL.CLIST TWS-Subsystemname
Unbekannter PIF-Server Hier erkennen sie am LUNAME in der ersten Zeile, dass SmartJCL mittels Server mit dem OPCT kommunizieren möchte. Die TWS-Fehlermeldung in der dritten Zeile bedeutet, dass dabei ein Problem aufgetreten ist.
Unbekannter PIF-Server SmartJCL kann sicht nicht an das TWS anmelden mit dem Aufruf OSJ wurde ein Edit-Makro aufgerufen, welches sich mittels einem PIF-Server an ein TWS-System anmelden möchte Es gab Probleme mit dem PIF-Server, z.B. der PIF-Server ist nicht gestartet Lösung: PIF-Server starten der PIF-Server ist mit falschen Parametern aktiv Lösung: Systemparameter prüfen der PIF-Server ist auf dem System nicht aktiv STC APPC und/oder ASCH sind nicht aktiv Lösung: APPC und/oder ASCH starten
Unbekannter PIF-Server Prüfen Sie die Angaben des Members OPGKEQQP in hlq.SMARTJCL.SKELS. Ist die Angabe bei LUNAME korrekt, muss in Ihrer APPC-Kommunikation und den dazugehörigen Definitionen die Problemursache liegen.
Simulieren eines Nicht-TWS-Jobs Sie editieren einen neuen Job und zu dem Job existiert noch keine Operation im TWS. Sie wollen den Job simulieren. Technischer Hinweis: Beim Aufruf der TWS-Simulation mittels OSJ kommuniziert SmartJCL mit dem TWS. Dabei sucht TWS die JCL auf einer seiner Job-Bibliotheken. Außerdem sucht TWS die Operation mit dem dazugehörigen Jobnamen im Tagesplan (CP) und in seiner Definitionsdatei (AD).
Simulieren eines Nicht-TWS-Jobs Sie editieren den neuen Job. Zum Simulieren rufen Sie das Kommando OSJ auf.
Simulieren eines Nicht-TWS-Jobs SmartJCL bzw. TWS sucht den Job im Tagesplan und zeigt Ihnen an, dass der Job im CP nicht gefunden wurde. Sie könnten den Job auch noch in der Definitionsdatei (AD) suchen. Geben Sie dazu Y an.
Simulieren eines Nicht-TWS-Jobs Wenn der Job weder im CP noch im AD gefunden wird, gibt SmartJCL eine entsprechende Meldung aus. SmartJCL kann den Job also so nicht simulieren.
Simulieren eines Nicht-TWS-Jobs Mittels folgender Vorgehensweise kann auch ein nicht-TWS-Job simuliert werden: Legen Sie im TWS einen Muster-Auftrag mit einem Musterjob anlegen, z.B. mit Auftragsname SMARTJCLTEMPLATE und Jobname SMARTJCL. Kopieren Sie die geänderte JCL in das Musterjob-Member. Editieren Sie den Musterjob. Führen Sie die Simulation mit dem Musterjob aus. Auf den nächsten Folien wird dies veranschaulicht.
Simulieren eines Nicht-TWS-Jobs Speichern Sie die JCL des neuen Jobs. Editieren Sie anschließend den SmartJCL-Musterjob, hier mit dem Jobnamen SMARTJCL.
Simulieren eines Nicht-TWS-Jobs Kopieren Sie Ihren Job in den Musterjob
Simulieren eines Nicht-TWS-Jobs Speichern Sie die JCL des Musterjobs
Simulieren eines Nicht-TWS-Jobs Rufen Sie mit OSJ die Simulation auf
Simulieren eines Nicht-TWS-Jobs SmartJCL meldet hier, dass der Job im Tagesplan (CP) nicht gefunden wurde und dass Sie den Job in der Definitionsdatei (AD) suchen können. Geben Sie dazu Y an.
Simulieren eines Nicht-TWS-Jobs Der Musterjob SMARTJCL des Musterauftrags SMARTJCLTEMPLATE wird gefunden. Wenn Sie mehrere Musterjobs im TWS angelegt hätten, würden alle in der Liste angezeigt. Wählen Sie eine Operation aus.
Simulieren eines Nicht-TWS-Jobs Die simulierte JCL wird angezeigt.
Simulieren/Prüfen eines Nicht-TWS-Jobs Auch einen Nicht-TWS-Job könnten Sie mit dem Kommando OSJ JCK simulieren und gleichzeitig prüfen. Vorgehensweise siehe nächste Folien.
Simulieren/Prüfen eines Nicht-TWS-Jobs Rufen Sie mit OSJ JCK die Simulation inklusive JCL-Prüfung auf
Simulieren/Prüfen eines Nicht-TWS-Jobs SmartJCL meldet hier, dass der Job im Tagesplan (CP) nicht gefunden wurde und dass Sie den Job in der Definitionsdatei (AD) suchen können. Geben Sie dazu Y an.
Simulieren/Prüfen eines Nicht-TWS-Jobs Der Musterjob SMARTJCL des Musterauftrags SMARTJCLTEMPLATE wird gefunden. Wenn Sie mehrere Musterjobs im TWS angelegt hätten, würden alle in der Liste angezeigt. Wählen Sie eine Operation aus.
Simulieren/Prüfen eines Nicht-TWS-Jobs Die JCL wird simuliert angezeigt inkl. gefundener Fehler
TWS-Variable im Script Auch bei “zentraler Script-Haltung” kann die Simulationsfunktion genutzt werden. Als Beispiel sehen Sie hier ein Skript mit einer TWS-Variable &MANDKEY #!/BIN/KSH #-------------------------------------------- #* TEST Script //*%OPC SCAN TU="TEST_0" SRVID="S001V1" P1="&MANDKEY." PFAD="/PROJECT/TEST/SCR/" SCR="TEST01" SUDO SU - TEST_0 -C "$PFAD$SCR $P1" ; EXIT $?
TWS-Variable im Script Z.B. werden bei Batch-Bridge-Produkten häufig TWS-Standard-Variable wie &OJOBNAME eingesetzt, z.B. //*%OPC SCAN //STEP1 EXEC MYPROC //MYSCRIPT DD * #!/BIN/KSH TU="TEST_0" SRVID="S001V1" P1="&MANDKEY." PFAD="/PROJECT/TEST/SCR/" SCR="TEST01" SUDO SU - TEST_0 -C "$PFAD$SCR $P1 %X" ; EXIT $? //SYSIN DD DSN=MY.XYLIB(L4711),DISP=SHR // DD * -C &OJOBNAME..&OOPNO..&OADID..&OYMD1..&OHHMM Variablen
TWS-Variable im Script ******************* JCL PREPARED BY SMARTJCL/SIMJCL ***** //P390KVS2 JOB CLASS=A,MSGCLASS=T,REGION=5M,NOTIFY=P390K //* //*%OPC SCAN //STEP1 EXEC MYPROC //MYSCRIPT DD DATA,DLM='$$' #!/BIN/KSH TU="TEST_0" SRVID="S001V1" P1="HORIZONT" PFAD="/PROJECT/TEST/SCR/" SCR="TEST01" //*%OPC BEGIN ACTION=NOSCAN SUDO SU - TEST_0 -C "$PFAD$SCR $P1 %x" ; EXIT $? //*%OPC END ACTION=NOSCAN $$ //SYSIN DD DSN=MY.XYLIB(L4711),DISP=SHR // DD * -C P390KVS2.075.HELMUTTESTV.030914.0600 ************************** END OF PREPARED JCL ********** Mit der SmartJCL-Simulationsfunktion können auch TWS-Variablen in „zentralen Skripten“ simuliert werden
Tipps zum TWS-EDIT-Makro TWS-Informationen im Editor in JCL anzeigen Simulierte JCL als NOTE-Zeilen anzeigen oder in temporäre Datei
TWS-Daten in der JCL anzeigen Im Edit-Makro (mit dem Standardnamen OSJ) können Sie mit dem Parameter TWSINFO steuern, ob die TWS-Daten angezeigt werden sollen (TWSINFO=Y) oder nicht (TWSINFO=N). Hier ein Auszug des Makros: "SELECT CMD(EXEC '&OPICLIST(OSJXMAC0)'", "'CHK="PARAM" INI= DPT=N TWSINFO=Y') NEWAPPL(OSJ) PASSLIB" Der Standardwert ist TWSINFO=N. Das Ergebnis sehen Sie auf der nächsten Folie.
TWS-Daten in der JCL anzeigen Anzeige der wichtigsten TWS-Informationen im JCL-Editor File Edit Confirm Menu Utilities Compilers Test Help ----------------------------------------------------------------- EDIT P390A.HUP.PLI.DEV($C1) - 01.02 COMMAND ===> ****** ************************ Top of Data ********************* ==MSG> PREDECESSORS: ==MSG> APPLICATION OPNO JOBNAME ==MSG> ------------------------------ ==MSG> XINFO22 61 XXRJCM2 ==MSG> XINFO22 60 XXRJCM1 ==MSG> XINFO22 1 ==MSG> SUCCESSORS: ==MSG> XINFO22 64 XXRJDBLC ==MSG> SPECIAL RESOURCES: ==MSG> -------------------------------------------- ==MSG> DSN1 =NOTE= ******************* JCL PREPARED BY SMARTJCL/SIMJCL ******* 000001 //XXRJCM3 JOB (ACCOUNT),'HORIZONT',MSGCLASS=T,CLASS=A, Predecessor Successor Special Resource
Simulierte JCL als NOTE-Zeilen? Im Edit-Makro (mit dem Standardnamen OSJ) können Sie mit dem Parameter DPT steuern, ob die simulierte und aufgelöste JCL als NOTE-Zeilen zu Beginn des editierten Members angezeigt werden (DPT=N) oder in einer eigenen temporären Datei im ISPF-Browse (DPT=B). Hier ein Auszug des Makros: "SELECT CMD(EXEC '&OPICLIST(OSJXMAC0)'", "'CHK="PARAM" INI= DPT=N TWSINFO=Y') NEWAPPL(OSJ) PASSLIB" Der Standardwert ist DPT=N.
SmartJCL ISPF-Dialog Der ISPF-Dialog von SmartJCL ist in Ihre ISPF-Umgebung integriert. Oder wird mittels der REXX JCKX aufgerufen.
SmartJCL ISPF-Dialog Geben Sie als erstes die JCL-Library an, auf der die Jobs stehen, welche Sie prüfen wollen Definieren Sie, ob Sie den Job, welcher generiert wird, sofort starten wollen (S), oder ob Sie den Job zuerst im Editor sehen wollen.
Jobs über eine Jobliste auswählen SmartJCL ISPF-Dialog Sie können mit diesem Panel steuern, ob Sie einen Job prüfen wollen, ob Sie von einem Job bis zu einem Job prüfen wollen, oder ob Sie die Jobmember über eine Jobliste definieren wollen. 1 Job auswählen von-Job-bis-Job Jobs über eine Jobliste auswählen
1 Job-Member prüfen Wenn Sie genau einen Job prüfen wollen, geben Sie nur im linken Feld (hier mit hahmvara gefüllt) einen Membernamen an. Das rechte Feld muss leer sein.
„von-Job“ – „bis-Job“ prüfen Wenn Sie von einem Job bis zu einem Job prüfen wollen, geben Sie das Startmember im linken Feld und das Ende-Member im rechten Feld an
SmartJCL ISPF-Dialog Wenn Sie im vorigen Panel definiert haben, dass Sie den Job im Editor sehen wollen, wird Ihnen die JCL angezeigt. Mit SUB können Sie den Job starten.
SmartJCL ISPF-Dialog - Ergebnis Kontrollieren Sie den Job. Bei einem Returncode 0 hat SmartJCL keinen JCL-Fehler entdeckt. Im SYSPRINT sehen Sie Ihre JCL und dazugehörige Meldungen.
SmartJCL ISPF-Dialog - Ergebnis Am Ende vom SYSPRINT wird Ihnen eine Zusammenfassung angezeigt.
Viele verschiedene Jobs prüfen Wenn Sie viele verschiedene Jobs prüfen wollen, verwenden Sie das Kommando JOBLIST. Im Feld Joblist müssen Sie einen Dateinamen angeben.
Viele verschiedene Jobs prüfen Wenn die Joblist-Datei existiert, wird diese angezeigt. Andernfalls wird die Datei angelegt und leer angezeigt.
Viele verschiedene Jobs prüfen Mit MEMBER=jobname können Sie je Zeile einen Job spezifizieren. Mit den Platzhaltern % (für 1 Zeichen) und * (für beliebig viele Zeichen) können Sie mehrere Jobs auswählen.
Viele verschiedene Jobs prüfen Definieren Sie, ob Sie den Job, welcher generiert wird, sofort starten wollen (S), oder ob Sie den Job zuerst im Editor sehen wollen.
Viele verschiedene Jobs prüfen Wenn Sie im vorigen Panel definiert haben, dass Sie den Job im Editor sehen wollen, wird Ihnen die JCL angezeigt. Mit SUB können Sie den Job starten.
Viele verschiedene Jobs prüfen Kontrollieren Sie den Job. Bei einem Returncode 0 hat SmartJCL keinen JCL-Fehler entdeckt. Im SYSPRINT sehen Sie Ihre JCL und dazugehörige Meldungen.
Viele verschiedene Jobs prüfen Am Ende vom SYSPRINT wird Ihnen eine Zusammenfassung angezeigt.
TWS/SimJCL ISPF-Dialog Der ISPF-Dialog der TWS-Simulation von SmartJCL ist in Ihre ISPF-Umgebung integriert. Oder wird mittels der REXX OSJX aufgerufen. Diese TWS-Simulations-Komponente wird mit TWS/SimJCL bezeichnet. Es erscheint folgendes Panel
TWS/SimJCL ISPF-Dialog Das Panel ist in mehrere Gruppen aufgeteilt. Mit den Menüpunkten 1 bis 3 selektieren Sie Operationen aus der AD-, der CP-, dem LTP oder einem beliebigen zukünftigen Tag aus. Mit dem Menüpunkt 4 werden die aus 1 bis 3 selektierten Operationen simuliert. Mit dem Menüpunkt 5 können Sie die im Menüpunkt 4 simulierte JCL prüfen. Mit dem Menüpunkt 6 können Sie beliebige JCL prüfen. Der Menüpunkt 7 dient zum Reformatieren. (Hinweis: Verfügbar ab März 2003.)
TWS/SimJCL ISPF-Dialog Selektion Auswahl 1: Selektion AD Auswahl 2: Selektion CP Auswahl 3: Forecast Simulation Auswahl 4: Simulation Check Auswahl 5: Check mit vorheriger Simulation Auswahl 6: Check ohne vorherige Simulation
Menü 1 - AD Wenn Sie Operationen aus der Definitionsdatei (AD) selektieren wollen, geben Sie 1 an.
AD - für x oder alle Aufträge Wenn Sie die Selektion über den Auftragsnamen machen können, geben Sie hier Ihre Selektion an. Geben Sie * für alle Aufträge an.
AD - für x oder alle Aufträge Wenn Sie im vorigen Panel definiert haben, dass Sie den Job im Editor sehen wollen, wird Ihnen die JCL angezeigt. Mit SUB können Sie den Job starten.
AD - für x oder alle Aufträge Kontrollieren Sie den Job. Bei einem Returncode 0 hat SmartJCL keinen JCL-Fehler entdeckt. Im SYSPRINT sehen Sie Ihre JCL und dazugehörige Meldungen.
AD - für x oder alle Aufträge Im SYSPRINT des Steps ADUNL erkennen Sie, wieviele Operationen gefunden wurden.
AD - für x oder alle Aufträge Hier haben 39 Operationen in 9 von 3695 Aufträgen der Selektion entsprochen.
AD - erweiterte Selektion Das Ergebnis ist eine Datei (Defaultdateinamen userid.OSJ.LIST) mit allen gefundenen Operationen. Spalten der Datei: Auftragsname, Workstation, Operationsnummer, Jobnamen.
AD - erweiterte Selektion Wenn Sie die Selektion nicht über den Auftragsnamen machen können, löschen Sie das Feld.
AD - erweiterte Selektion Nun haben Sie verschiedene Selektionsfelder zur Auswahl. Der weitere Ablauf ist identisch dem vorigen.
AD - erweiterte Selektion Alternativ können Sie mit dem Befehl APP eine Applikationsliste editieren, welche als Selektion dient. Der weitere Ablauf ist identisch dem vorigen.
Menü 2 - CP Wenn Sie Operationen aus dem Tagesplan (CP) selektieren wollen, geben Sie 2 an.
CP - für x oder alle Aufträge Wenn Sie die Selektion über den Auftragsnamen machen können, geben Sie hier Ihre Selektion an. Geben Sie * für alle Aufträge an.
CP - für x oder alle Aufträge Wenn Sie im vorigen Panel definiert haben, dass Sie den Job im Editor sehen wollen, wird Ihnen die JCL angezeigt. Mit SUB können Sie den Job starten.
CP - für x oder alle Aufträge Kontrollieren Sie den Job. Bei einem Returncode 0 hat SmartJCL keinen JCL-Fehler entdeckt. Im SYSPRINT sehen Sie Ihre JCL und dazugehörige Meldungen.
CP - für x oder alle Aufträge Hier haben 10 Operationen der Selektion entsprochen.
CP - für x oder alle Aufträge Das Ergebnis ist eine Datei (Defaultdateinamen userid.OSJ.LIST) mit allen gefundenen Operationen. Spalten der Datei: Auftragsname, Workstation, Operationsnummer, Jobnamen, IA, geplante Startzeit.
CP - erweiterte Selektion Wenn Sie die Selektion nicht über den Auftragsnamen machen können, löschen Sie das Feld.
CP - erweiterte Selektion Nun haben Sie verschiedene Selektionsfelder zur Auswahl. Der weitere Ablauf ist identisch dem vorigen.
CP - erweiterte Selektion Alternativ können Sie mit dem Befehl APP eine Applikationsliste editieren, welche als Selektion dient. Der weitere Ablauf ist identisch dem vorigen.
Menü 3 - Forecast Wenn Sie Operationen aus dem Langzeitplan oder für jeden zukünftigen Tag selektieren wollen, geben Sie 3 an.
Menü 3 - Forecast Für x oder alle Aufträge aus AD Für x Aufträge aus AD mit erweiterter Selektion Für alle Aufträge aus LTP Für x Aufträge aus LTP mit erweiterter Selektion
Forecast - für x oder alle Aufträge Wenn Sie Operationen aus dem Langzeitplan oder für jeden zukünftigen Tag selektieren wollen, geben Sie 3 an.
Forecast - für x oder alle Aufträge Geben Sie hier Ihren Simulationszeitraum (Startdatum-zeit, Endedatum,-zeit) an.
Forecast - für x oder alle Aufträge Geben Sie hier an, ob die Aufträge aus dem Langzeitplan (L) ermittelt werden sollen, oder aus der Definitionsdatei (F).
Forecast - für x oder alle Aufträge Wenn Sie die Selektion über den Auftragsnamen machen können, geben Sie hier Ihre Selektion an. Geben Sie * für alle Aufträge an.
Forecast - für x oder alle Aufträge Wenn Sie die Selektion nicht über den Auftragsnamen machen können, löschen Sie das Feld.
Forecast - für x oder alle Aufträge Nun haben Sie verschiedene Selektionsfelder zur Auswahl. Der weitere Ablauf ist identisch dem vorigen.
Forecast - für x oder alle Aufträge Wenn Sie definiert haben, dass Sie den Job im Editor sehen wollen, wird Ihnen die JCL angezeigt. Mit SUB können Sie den Job starten.
Forecast - für x oder alle Aufträge Kontrollieren Sie den Job. Bei einem Returncode 0 hat SmartJCL keinen JCL-Fehler entdeckt. Im SYSPRINT sehen Sie Ihre JCL und dazugehörige Meldungen.
Forecast - für x oder alle Aufträge Hier haben 39 Operationen in 9 von 3695 Aufträgen der Selektion entsprochen.
Forecast - für x oder alle Aufträge Das Ergebnis ist eine Datei (Defaultdateinamen userid.OSJ.LIST) mit allen gefundenen Operationen. Spalten der Datei: Auftragsname, Workstation, Operationsnummer, Jobnamen, IA, geplante Startzeit.
Mit dem Menüpunkt 4 starten Sie die Simulation. Menü 4 - Simulation Mit dem Menüpunkt 4 starten Sie die Simulation.
Simulation Geben Sie hier die Eingabedatei an. Dies ist die Joblisten-Datei der vorherigen Menüpunkte 1 bis 3.
Simulation Geben Sie hier eine Ausgabedatei an, in welche die simulierte JCL geschrieben werden soll.
Simulation Geben Sie Ihren gewünschten Simulationszeitraum an. Sie können eine IA angeben (für &O-Variablen) sowie eine geplante Startzeit (für &C-Variablen). Mit der Option A wird die geplante Startzeit für alle Operationen verwendet, mit U nur für die Operationen, welche keine geplante Startzeit besitzen.
Simulation Wenn Sie im vorigen Panel definiert haben, dass Sie den Job im Editor sehen wollen, wird Ihnen die JCL angezeigt. Mit SUB können Sie den Job starten.
Simulation Kontrollieren Sie den Job. Bei einem Returncode 0 hat SmartJCL keine Fehler zur Simulation entdeckt. Im SYSPRINT sehen Sie Meldungen, z.B. wenn keine JCL gefunden wurde.
Simulation Wenn bei der Simulation Probleme aufgetreten sind, wird Ihnen die relavante Operation gemeldet.
Nach EQQMLOG meldet TWS seine Meldungen. Simulation Nach EQQMLOG meldet TWS seine Meldungen.
Simulation Die simulierte bzw. aufgelöste JCL steht in der Datei userid.OSJ.JCLOUT.
Check der simulierten JCL Mit 5 können Sie die in 4 simulierte JCL prüfen.
Check der simulierten JCL Wenn Sie im vorigen Panel definiert haben, dass Sie den Job im Editor sehen wollen, wird Ihnen die JCL angezeigt. Mit SUB können Sie den Job starten.
Check der simulierten JCL - Ergebnis Die geprüfte JCL inklusive Fehlermeldungen steht in SYSPRINT.
Check der simulierten JCL - Ergebnis Kontrollieren Sie den Job. Bei einem Returncode 0 hat SmartJCL keinen JCL-Fehler entdeckt. Im SYSPRINT sehen Sie Ihre JCL und dazugehörige Meldungen.
Sonstiges Im Folgenden sind verschiedene Themen beschrieben, z.B. wie &O- oder &C-TWS-Variablen aufgelöst werden.
TWS-Variablen auflösen Zur Technik &O- bzw. &Occurence-Datums-/Zeit-Variablen werden mittels dem IA-Wert aus dem Tagesplan (bei origin CP) oder mittels der angegeben IA (bei origin AD) berechnet &C- bzw. &Current-Datums-/Zeit-Variablen werden mittels dem angegeben Simulationszeitraum berechnet Variablen, welche sich auf den Auftragsnamen, den Jobnamen, die Workstation o.ä. beziehen, werden aufgelöst, wenn der Wert ermittelt werden kann
TWS-Variablen auflösen Zur Technik (Fortsetzung) NOSCAN und SCAN-Direktriven werden unterstützt ?-Variablen werden korrekt ermittelt Statements wie SEARCH und TABLE werden berücksichtigt Variablen der globalen TWS-Varieblantabelle werden erkannt die Sonderformen der TWS-Variablen-Statements wie SETFORM, SETVAR, etc. werden aufgelöst, wenn möglich
JCL im Editor simulieren Wenn SmartJCL die JCL mit TWS-Variablen simuliert, kommuniziert SmartJCL mit dem TWS. TWS sucht dabei die JCL in folgender Reihenfolge: 1. In der JS-Datei 2. In den TWS zugeordneten Job-Bibliotheken Daher muss eine zu simulierende JCL entweder in der JS-Datei oder auf einer der TWS-Job-Bibliotheken stehen. Weiterhin muss eine Operation im CP oder in der AD-Datei mit einem identischen Jobnamen existieren. Dies ist auch der Grund, dass SmartJCL oder Sie beim Simulieren einer „neuen“ JCL die JCL zuerst auf eine TWS-Joblib oder in die JS-Datei schreiben und dass zum Jobnamen eine Muster-Operation existieren muss.
Die Liste wird auf der Grundlage des JobNamen des aktuell editierten Members erstellt: d.h. ermittelt wird der Membername des aktuell editierten Members, wird dieser nicht gefunden wird geprüft ob der Aufruf aus einem TWS (Panel: EQQMJCLE) erfolgt und der JobName über eine TWS-Variable (UEJOBNM) in den shared Pool geholt, wird auch hier nichts gefunden (z.B. weil gerade ein temporäres Dataset editiert wird) liest das Programm die ersten 30 Zeilen aus dem edit und sucht den Jobnamen (Probleme kann es hier geben, wenn der Jobname als (TWS-) Variable vorliegt.
Smart/JCL HORIZONT Vielen Dank für Ihre Aufmerksamkeit! Der einfache Weg zur fehlerfreien JCL Vielen Dank für Ihre Aufmerksamkeit! HORIZONT Software für Rechenzentren Garmischer Str. 8 D- 80339 München Tel ++49(0)89 / 540 162 - 0 www.horizont-it.com 1 1 1 1 1 1 1 1 1 1 1