Am folgenden Beispiel eines rekonstruierten Jobpools werden Hinweise zur Rekonstruktion einzelner Jobattribute und zu Problemfällen gegeben. In die Prozedurdatei schreibt JMP die folgenden Kommandos:
/"REJECTED: TSN: 0EY4 TYPE: 1 DO REASON: NEXT RPT. IMAGE " 1. /SET-JOB-STEP " -------------------------------------------- " 2. /"IMPORTED: TSN: 0EY3 TYPE: 1 DO ORIGIN: USER-ENTER " 3. /" CALLER: TSN: 0EY2 USERID: TSOS HOST: " /" REPETITION: REPCNT: 0 START: <date>.<time>" /ENTER-JOB - 4. / FROM-FILE = :2BV:$TSOS.OS27.E - 5. / ,PROC-ADMI = *PAR( - 6. / USER-ID = TSOS - / ,ACCOUNT = ADMINSTR - / ,PASS = '????????') - 7. / ,FILE-PASS = *NONE - 7. / ,DELETE = *NO - / ,JOB-CLASS = JCBTSOS - / ,JOB-NAME = OS27KF - / ,MONJV = *NONE - / ,JV-PASS = *NONE - / ,JOB-PRIO = 5 - / ,RERUN-AFTER-CRASH = *NO - / ,FLUSH-AFTER-SHUTDOWN = *NO - / ,SCHEDULING-TIME = *PAR( - / START = *AT (DATE = *TODAY , TIME = 11:00) - 8. / ,REP-JOB = *DAILY ) - / ,LIMIT = *STD - / ,RESOURCES = *PAR( - / RUN-PRIO = 210 - / ,CPU-LIMIT = 20000 - / ,SYSLST-LIM = *NO - / ,SYSOPT-LIM = *NO ) - / ,LOGGING = *PAR( - / LISTING = *NO ) - / ,PROTECTION= *NONE /"REJECTED: TSN: 0EYR TYPE: 2 REASON: PRIVILEGED ENTER" /"REJECTED: TSN: 0EYS TYPE: 2 REASON: PRIVILEGED ENTER" /"REJECTED: TSN: 0EYT TYPE: 2 REASON: PRIVILEGED ENTER" /"REJECTED: TSN: 0EYU TYPE: 2 REASON: PRIVILEGED ENTER" /SET-JOB-STEP " -------------------------------------------- " /"IMPORTED: TSN: 0EYZ TYPE: 2 ORIGIN: USER-ENTER " /" CALLER: TSN: 0EYX USERID: TSOS HOST: " /ENTER-JOB - / FROM-FILE = :2BV:$TSOS.SYSENT.TCP-IP-AP.031.FTPD - / ,PROC-ADMI = *PAR( - / USER-ID = TSOS - / ,ACCOUNT = ADMINSTR - / ,PASS = '????????') - / ,FILE-PASS = *NONE - / ,DELETE = *NO - / ,JOB-CLASS = JCBTSOS - / ,JOB-NAME = FTPSR - / ,MONJV = *NONE - / ,JV-PASS = *NONE - / ,JOB-PRIO = 5 - / ,RERUN-AFTER-CRASH = *NO - / ,FLUSH-AFTER-SHUTDOWN = *NO - / ,SCHEDULING-TIME = *PAR( - / START = *IMMEDIATELY - 9. / ,REP-JOB = *NO ) - / ,LIMIT = *STD - / ,RESOURCES = *PAR( - / RUN-PRIO = 120 - / ,CPU-LIMIT = *NO - / ,SYSLST-LIM = *NO - / ,SYSOPT-LIM = *NO ) - / ,LOGGING = *PAR( - / LISTING = *NO ) - / ,PROTECTION= *NONE /SET-JOB-STEP " -------------------------------------------- " /"IMPORTED: TSN: 0EYW TYPE: 1 DO ORIGIN: USER-ENTER " /" CALLER: TSN: 0AAU USERID: TSOS HOST: " /" REPETITION: REPCNT: 51 START: 0000-00-00.0000" /ENTER-JOB - / FROM-FILE = :2BV:$SYSPRIV.SYSENT.HOLD-SAT - / ,PROC-ADMI = *PAR( - / USER-ID = SYSPRIV - / ,ACCOUNT = SYSACC - / ,PASS = '????????') - / ,FILE-PASS = *NONE - / ,DELETE = *NO - / ,JOB-CLASS = JCBSTD - / ,JOB-NAME = HOLDSAT - / ,MONJV = *NONE - / ,JV-PASS = *NONE - / ,JOB-PRIO = 9 - / ,RERUN-AFTER-CRASH = *NO - / ,FLUSH-AFTER-SHUTDOWN = *NO - / ,SCHEDULING-TIME = *PAR( - / START = *AT-STREAM-STARTUP - / ,REP-JOB = *AT-STREAM-STARTUP ) - / ,LIMIT = *STD - / ,RESOURCES = *PAR( - / RUN-PRIO = 220 - / ,CPU-LIMIT = 32000 - / ,SYSLST-LIM = *NO - / ,SYSOPT-LIM = *NO ) - / ,LOGGING = *PAR( - / LISTING = *NO ) - / ,PROTECTION= *NONE /SET-JOB-STEP " -------------------------------------------- " /"IMPORTED: TSN: 0EYY TYPE: 2 ORIGIN: USER-ENTER " /" CALLER: TSN: 0EYX USERID: TSOS HOST: " /ENTER-JOB - / FROM-FILE = :2BV:$TSOS.SYSENT.TCP-IP-AP.031.TELNETD - / ,PROC-ADMI = *PAR( - / USER-ID = TSOS - / ,ACCOUNT = ADMINSTR - / ,PASS = '????????') - / ,FILE-PASS = *NONE - / ,DELETE = *NO - / ,JOB-CLASS = JCBTSOS - / ,JOB-NAME = TELSR - / ,MONJV = *NONE - / ,JV-PASS = *NONE - / ,JOB-PRIO = 5 - / ,RERUN-AFTER-CRASH = *NO - / ,FLUSH-AFTER-SHUTDOWN = *NO - / ,SCHEDULING-TIME = *PAR( - / START = *IMMEDIATELY - / ,REP-JOB = *NO ) - / ,LIMIT = *STD - / ,RESOURCES = *PAR( - / RUN-PRIO = 120 - / ,CPU-LIMIT = *NO - / ,SYSLST-LIM = *NO - / ,SYSOPT-LIM = *NO ) - / ,LOGGING = *PAR( - / LISTING = *NO ) - / ,PROTECTION= *NONE /"REJECTED: TSN: 0EY6 TYPE: 1 DO REASON: NEXT RPT. IMAGE " /SET-JOB-STEP " -------------------------------------------- " /"IMPORTED: TSN: 0EY5 TYPE: 1 DO ORIGIN: USER-ENTER " /" CALLER: TSN: 0EY2 USERID: TSOS HOST: " /" REPETITION: REPCNT: 0 START: <date>.<time>" /ENTER-JOB - / FROM-FILE = :2BV:$TSOS.OS27.E - / ,PROC-ADMI = *PAR( - / USER-ID = TSOS - / ,ACCOUNT = ADMINSTR - / ,PASS = '????????') - / ,FILE-PASS = *NONE - / ,DELETE = *NO - / ,JOB-CLASS = JCBTSOS - / ,JOB-NAME = OS27KF - / ,MONJV = *NONE - / ,JV-PASS = *NONE - / ,JOB-PRIO = 5 - / ,RERUN-AFTER-CRASH = *NO - / ,FLUSH-AFTER-SHUTDOWN = *NO - / ,SCHEDULING-TIME = *PAR( - / START = *AT (DATE = *TODAY , TIME = 11:00) - / ,REP-JOB = *WEEKLY ) - / ,LIMIT = *STD - / ,RESOURCES = *PAR( - / RUN-PRIO = 210 - / ,CPU-LIMIT = 20000 - / ,SYSLST-LIM = *NO - / ,SYSOPT-LIM = *NO ) - / ,LOGGING = *PAR( - / LISTING = *NO ) - / ,PROTECTION= *NONE /"REJECTED: TSN: 0EY8 TYPE: 1 DO REASON: NEXT RPT. IMAGE " /SET-JOB-STEP " -------------------------------------------- " /"IMPORTED: TSN: 0EY7 TYPE: 1 DO ORIGIN: USER-ENTER " /" CALLER: TSN: 0EY2 USERID: TSOS HOST: " /" REPETITION: REPCNT: 0 START: <date>.<time>" /ENTER-JOB - / FROM-FILE = :2BV:$TSOS.OS27.E - / ,PROC-ADMI = *PAR( - / USER-ID = TSOS - / ,ACCOUNT = ADMINSTR - / ,PASS = '????????') - / ,FILE-PASS = *NONE - / ,DELETE = *NO - / ,JOB-CLASS = JCBTSOS - / ,JOB-NAME = OS27KF - / ,MONJV = *NONE - / ,JV-PASS = *NONE - / ,JOB-PRIO = 5 - / ,RERUN-AFTER-CRASH = *NO - / ,FLUSH-AFTER-SHUTDOWN = *NO - / ,SCHEDULING-TIME = *PAR( - / START = *SOON - / ,REP-JOB = *PERIOD (HOURS = 01, MINUTES = 02)) - / ,LIMIT = *STD - / ,RESOURCES = *PAR( - / RUN-PRIO = 210 - / ,CPU-LIMIT = 20000 - / ,SYSLST-LIM = *NO - / ,SYSOPT-LIM = *NO ) - / ,LOGGING = *PAR( - / LISTING = *NO ) - / ,PROTECTION= *NONE /SET-JOB-STEP " -------------------------------------------- " /"IMPORTED: TSN: 0EY9 TYPE: 1 WT ORIGIN: USER-ENTER " /" CALLER: TSN: 0EY2 USERID: TSOS HOST: " /ENTER-JOB - / FROM-FILE = :2BV:$TSOS.OS27.E - / ,PROC-ADMI = *PAR( - / USER-ID = TSOS - / ,ACCOUNT = ADMINSTR - / ,PASS = '????????') - / ,FILE-PASS = *NONE - / ,DELETE = *NO - / ,JOB-CLASS = JCBTSOS - / ,JOB-NAME = OS27KF - / ,MONJV = *NONE - / ,JV-PASS = *NONE - / ,JOB-PRIO = 5 - / ,RERUN-AFTER-CRASH = *NO - / ,FLUSH-AFTER-SHUTDOWN = *NO - / ,SCHEDULING-TIME = *PAR( - / START = *EARLIEST (DATE = <date>, TIME = <time>) - / ,REP-JOB = *NO ) - / ,LIMIT = *STD - / ,RESOURCES = *PAR( - / RUN-PRIO = 210 - / ,CPU-LIMIT = 20000 - / ,SYSLST-LIM = *NO - / ,SYSOPT-LIM = *NO ) - / ,LOGGING = *PAR( - / LISTING = *NO ) - / ,PROTECTION= *NONE /SET-JOB-STEP " -------------------------------------------- " /"IMPORTED: TSN: 0EZA TYPE: 2 ORIGIN: USER-ENTER " /" CALLER: TSN: 0EY2 USERID: TSOS HOST: " /" REPETITION: REPCNT: 0 START: <date>.<time>" /ENTER-JOB - / FROM-FILE = :2BV:$TSOS.OS27.E - / ,PROC-ADMI = *PAR( - / USER-ID = TSOS - / ,ACCOUNT = ADMINSTR - / ,PASS = '????????') - / ,FILE-PASS = *NONE - / ,DELETE = *NO - / ,JOB-CLASS = JCBTSOS - / ,JOB-NAME = OS27KF - / ,MONJV = *NONE - / ,JV-PASS = *NONE - / ,JOB-PRIO = 5 - / ,RERUN-AFTER-CRASH = *NO - / ,FLUSH-AFTER-SHUTDOWN = *NO - / ,SCHEDULING-TIME = *BY-CALENDAR( - / CALENDAR-NAME = :2BV:$TSOS.OS27.CALENDAR - / ,SYMBOLIC-DATE = HEMUL ) - / ,LIMIT = *STD - / ,RESOURCES = *PAR( - / RUN-PRIO = 210 - / ,CPU-LIMIT = 20000 - / ,SYSLST-LIM = *NO - / ,SYSOPT-LIM = *NO ) - / ,LOGGING = *PAR( - / LISTING = *NO ) - / ,PROTECTION= *NONE /SET-JOB-STEP " -------------------------------------------- " /"IMPORTED: TSN: 0EZB TYPE: 1 WT ORIGIN: USER-ENTER " /" CALLER: TSN: 0EY2 USERID: TSOS HOST: " /" REPETITION: REPCNT: 0 START: <date>.<time>" /ENTER-JOB - / FROM-FILE = :2BV:$TSOS.OS27.E - / ,PROC-ADMI = *PAR( - / USER-ID = TSOS - / ,ACCOUNT = ADMINSTR - / ,PASS = '????????') - / ,FILE-PASS = *NONE - / ,DELETE = *NO - / ,JOB-CLASS = JCBTSOS - / ,JOB-NAME = OS27KF - / ,MONJV = *NONE - / ,JV-PASS = *NONE - / ,JOB-PRIO = 5 - / ,RERUN-AFTER-CRASH = *NO - / ,FLUSH-AFTER-SHUTDOWN = *NO - / ,SCHEDULING-TIME = *BY-CALENDAR( - / CALENDAR-NAME = :2BV:$TSOS.OS27.CALENDAR - / ,SYMBOLIC-DATE = ELCH ) - / ,LIMIT = *STD - / ,RESOURCES = *PAR( - / RUN-PRIO = 210 - / ,CPU-LIMIT = 20000 - / ,SYSLST-LIM = *NO - / ,SYSOPT-LIM = *NO ) - / ,LOGGING = *PAR( - / LISTING = *NO ) - / ,PROTECTION= *NONE /SET-JOB-STEP " -------------------------------------------- " /"IMPORTED: TSN: 0EZC TYPE: 2 ORIGIN: USER-ENTER " /" CALLER: TSN: 0EY2 USERID: TSOS HOST: " /ENTER-JOB - / FROM-FILE = :2BV:$TSOS.OS27.E - / ,PROC-ADMI = *PAR( - / USER-ID = TSOS - / ,ACCOUNT = ADMINSTR - / ,PASS = '????????') - / ,FILE-PASS = *NONE - / ,DELETE = *NO - / ,JOB-CLASS = JCB02000 - / ,JOB-NAME = OS27KF - / ,MONJV = :2BV:$TSOS.OS27.JV.1 - / ,JV-PASS = *NONE - / ,JOB-PRIO = 9 - / ,RERUN-AFTER-CRASH = *YES - / ,FLUSH-AFTER-SHUTDOWN = *YES - / ,SCHEDULING-TIME = *PAR( - / START = *SOON - / ,REP-JOB = *NO ) - / ,LIMIT = *STD - / ,RESOURCES = *PAR( - / RUN-PRIO = 210 - / ,CPU-LIMIT = 2000 - / ,SYSLST-LIM = *NO - / ,SYSOPT-LIM = *NO ) - / ,LOGGING = *PAR( - / LISTING = *NO ) - / ,JOB-PAR = - /C'WRTLPRMFT' - / ,PROTECTION= *NONE /SET-JOB-STEP " -------------------------------------------- " /"IMPORTED: TSN: 0EZD TYPE: 2 ORIGIN: USER-ENTER " /" CALLER: TSN: 0EY2 USERID: TSOS HOST: " /ENTER-JOB - / FROM-FILE = :2BV:$HEMUL.S.IN.0EZD.040323.0913.C - 10. / ,PROC-ADMI = *PAR( - / USER-ID = HEMUL - / ,ACCOUNT = HEMUL - / ,PASS = '????????') - / ,FILE-PASS = *NONE - / ,DELETE = *YES - / ,JOB-CLASS = JCB02000 - / ,JOB-NAME = HOPPLA - / ,MONJV = :2BV:$TSOS.OS27.JV.2 - / ,JV-PASS = *NONE - / ,JOB-PRIO = 9 - / ,RERUN-AFTER-CRASH = *YES - / ,FLUSH-AFTER-SHUTDOWN = *YES - / ,SCHEDULING-TIME = *PAR( - / START = *SOON - / ,REP-JOB = *NO ) - / ,LIMIT = *STD - / ,RESOURCES = *PAR( - / RUN-PRIO = 230 - / ,CPU-LIMIT = 2000 - / ,SYSLST-LIM = *NO - / ,SYSOPT-LIM = *NO ) - / ,LOGGING = *PAR( - / LISTING = *NO ) - / ,JOB-PAR = - /C'OCHGOTTCHEN' - / ,PROTECTION= *CANCEL /SET-JOB-STEP " -------------------------------------------- " /"IMPORTED: TSN: 0EZE TYPE: 2 ORIGIN: USER-ENTER " /" CALLER: TSN: 0EY2 USERID: TSOS HOST: " /" WARNING: COPY OF SYSCMD-FILE NOT POSSIBLE; COPY-RC: 0501" 11. /ENTER-JOB - / FROM-FILE = :2BV:$HEMUL.S.IN.0EZE.040323.0929 - / ,PROC-ADMI = *PAR( - / USER-ID = HEMUL - / ,ACCOUNT = HEMUL - / ,PASS = '????????') - / ,FILE-PASS = *NONE - / ,DELETE = *YES - / ,JOB-CLASS = JCB00050 - / ,JOB-NAME = OS27KF - / ,MONJV = *NONE - / ,JV-PASS = *NONE - / ,JOB-PRIO = 9 - / ,RERUN-AFTER-CRASH = *YES - / ,FLUSH-AFTER-SHUTDOWN = *NO - / ,SCHEDULING-TIME = *PAR( - / START = *EARLIEST (DATE = *TODAY , TIME = 08:00) - / ,REP-JOB = *NO ) - / ,LIMIT = *STD - / ,RESOURCES = *PAR( - / RUN-PRIO = 233 - / ,CPU-LIMIT = 100 - / ,SYSLST-LIM = 2222 - / ,SYSOPT-LIM = 3333 ) - / ,LOGGING = *PAR( - / LISTING = *YES) - / ,PROTECTION= *NONE
Erläuterungen
Nicht alle Jobs, die der Jobpool enthält, werden rekonstruiert. Im vorliegenden Beispiel existiert zu einem Repeatjob bereits das „Next Image“. Würde dieser Job zu einem ENTER-Kommando rekonstruiert und gestartet, käme es zu einer Verdopplung der Ausprägungen des Repeatjobs. Der Hinweis auf solche nicht rekonstruierten Jobs erfolgt in Form eines Kommandokommentars mit Informationen zu diesem Job und einer Auflistung der Ursachen wie z.B.:
Next Repeat Image
Privilegierter ENTER
Beginn eines rekonstruierten Batch-Auftrages.
Hinweise zu dem rekonstruierten Batch-Auftrag und Attribute, die nicht in Form von Operanden des ENTER-Kommandos angegeben werden können. Die Informationen sind in der Regel analog zu denen der STATUS-Kommandos aufgebaut (siehe Handbuch „Kommandos“ [1]).
Im vorliegenden Beispiel:
IMPORTED: Hinweis, dass der Job, der mit der TSN
0EY3
akzeptiert war, rekonstruiert wurde.CALLER: Hinweise auf den Initiator des Batch-Auftrages (TSN, Benutzerkennung, Host-Name).
REPETITION: Nur bei Repeatjobs und Kalenderjobs, Wiederholungszähler und designierter Startzeitpunkt.
Termin-/Repeatjobs werden ungeachtet des Starttermins rekonstruiert. Liegt z.B. der Starttermin vor dem Rekonstruktionslauf und wird das rekonstruierte ENTER-Kommando ungeändert aktiviert, so gilt das Kommando als inkorrekt und wird bei der erneuten Akzeptierung zurückgewiesen.Die Jobs werden grundsätzlich in Form des SDF-Kommandos
/ENTER-JOB
rekonstruiert (ungeachtet dessen, ob der Job mit dem ISP-Kommando/ENTER
oder mit/ENTER-PROCEDURE
gestartet wurde).Die Kommandodatei muss nicht die vom Initiator des ENTER-Kommandos angegebene Originaldatei sein. Siehe hierzu auch unter (10).
Die mit dem Operanden PROCESSING-ADMISSION angegebenen Attribute für die Zugangskontrolle (Benutzerkennung, Abrechnungsnummer, Passwort) sind nur obligatorisch, wenn die Auftraggeber- und Ablaufbenutzerkennung verschieden sind. Bei Gleichheit der Benutzerkennungen ist die Angabe optional. Im rekonstruierten Kommando erscheint dieser Operand immer, unabhängig davon, ob er spezifiziert wurde oder nicht.
Zu beachten ist, dass ein rekonstruiertes ENTER-JOB-Kommando nach Möglichkeit von derselben Benutzerkennung wieder abgegeben wird wie das ursprüngliche. Nur dann gelten kennungsspezifische Defaultierungen weiterhin. Ferner kann dieser Auftrag - wenn er auf einer anderen Kennung zum Ablauf gebracht werden soll - noch von derselben wie der ursprünglichen Auftraggeberkennung administriert werden (Kommandos
/CANCEL-JOB
,/CHANGE-TASK-PRIORITY
,/SHOW-JOB-STATUS
).Weder das LOGON-Passwort noch eventuell angegebene Passwörter zum Schutz von ENTER-Datei bzw. MONJV werden in das rekonstruierte ENTER-Kommando übernommen. Dies ist aus technischen Gründen nicht möglich, weil in der Regel Passwörter in den Datenstrukturen des JMS nicht abgelegt sind. Bei Neustart des ENTER-Kommandos sind die Passwörter in unverschlüsselter Form einzusetzen.
Als Startzeitpunkte werden die Originalwerte (z.B. auch *TODAY) ohne Prüfung eingesetzt. Dies ist zu beachten, wenn im Original feste Termine oder Attribute wie *WITHIN, *LATEST angegeben wurden. Die rekonstruierten Werte können in Bezug auf den beabsichtigten Zeitpunkt des Wiederablaufs fehlerhaft sein.
Bei Wiederholungsläufen von Repeatjobs ist das Startattribut gegenüber der ursprünglichen Angabe des Anwenders u.U. verändert (siehe Beschreibung von
/ENTER-JOB
und/ENTER-PROCEDURE
im Handbuch „Kommandos“ [1]). In diesem Fall wird versucht, aus dem Repeat-Attribut und dem Startzeitpunkt der nächsten Wiederholung ein sinnvolles Startattribut abzuleiten (das Startattribut bestimmt nur den Start des ersten Laufes des Repeatjobs).Wie oben (8) beschrieben, werden Startzeitpunkte von JMP nicht aktualisiert.
S.IN-/S.E-Dateien: Das JMS legt Hilfsdateien mit diesem Präfix unter folgenden Umständen an (siehe Beschreibung von
/ENTER-JOB
und/ENTER-PROCEDURE
im Handbuch „Kommandos“ [1]):Bei Aufruf von
/ENTER-PROCEDURE
wird eine S.E-Datei angelegt, bei Aufruf von/ENTER-JOB
wird die Originalkommandodatei in eine S.IN-Zwischendatei kopiert, wenn angenommen werden muss, dass die Originaldatei zum Zeitpunkt des Ablaufs des Batch-Auftrags nicht zugreifbar ist (z.B. wenn als Originalkommandodatei eine Temporärdatei angegeben wurde). Diese Zwischendateien werden mit einem Zufallspasswort geschützt. Daher kann bei erneutem Aufruf (des rekonstruierten ENTER-Kommandos) auf die ursprünglich vom JMS angelegte Zwischendatei nicht zugegriffen werden. JMP kopiert die Zwischendatei daher in eine neue Zwischendatei ohne Passwort mit dem Namen<name ursprüngliche s.in-/s.e-Datei>.C
.Ist das Erstellen einer Kopie der S.IN- bzw. S.E-Datei nicht möglich (vgl. Punkt 10), so wird eine Kommentarzeile mit dem DMS-Returncode (COPY) ausgegeben.