Bedingte Ausführung einer Kommandofolge vereinbaren
Komponente: | JV |
Funktionsbereich: | Jobvariablen |
Anwendungsbereich: | JOB-VARIABLES |
Privilegierung: | STD-PROCESSING |
Funktionsbeschreibung
Mit dem Kommando ADD-CJC-ACTION kann der Benutzer die Ausführung einer CJC-Kommandofolge (Conditional Job Control) von einer Bedingung abhängig machen. Das Kommando ADD-CJC-ACTION definiert:
die Bedingung, unter der die CJC-Kommandofolge zu starten ist (Operand CONDITION)
den Namen der CJC-Kommandofolge (Operand NAME)
den Zeitraum, in dem das Kommando wirksam sein soll (Operand TIME-LIMIT)
die maximale Anzahl von Ausführungen des ersten Teils der CJC-Kommandofolge (Operand REPEAT)
die Adresse (Sprungziel) des zweiten Teils der CJC-Kommandofolge für den Fall: Zeit abgelaufen und „Bedingung nicht erfüllt“ (Operand TIMEOUT-LABEL)
Im Anschluss an das ADD-CJC-ACTION-Kommando gibt der Benutzer die CJC-Kommandofolge ein. Sie darf nur ENTER-JOB-, ENTER-PROCEDURE- und/oder MODIFY-JV-Kommandos enthalten. Dabei ist ENTER-PROCEDURE nur in Nicht-S-Prozeduren erlaubt. Die gesamte CJC-Kommandofolge zwischen ADD-CJC-ACTION und END-CJC-ACTION wird zunächst nur abgespeichert.
Eingabe | Bedeutung |
---|---|
| eröffnet eine CJC-Kommandofolge; definiert die Bedingung und die Art der Ausführung |
oder
oder
| CJC-Kommandofolge, die im Fall „Bedingung erfüllt“ zu starten ist; wird zunächst nur abgespeichert. Dabei ist ENTER-PROCEDURE nur in Nicht-S-Prozeduren erlaubt. |
oder
oder
| CJC-(TIMEOUT-)Kommandofolge, die im Fall „Bedingung nicht erfüllt“ zu starten ist; wird zunächst nur abgespeichert. |
| Schließt und aktiviert die CJC-Kommandofolge |
Beide Kommandofolgen („Bedingung erfüllt“ oder „Bedingung nicht erfüllt“) können wahlweise angegeben werden.
Mit END-CJC-ACTION wird die CJC-Kommandofolge abgeschlossen und aktiviert. Die nachfolgenden Kommandos werden wieder sofort ausgeführt.
Tritt innerhalb des definierten Zeitraums „Bedingung erfüllt“ ein, so wird die Verarbeitung unterbrochen und die entsprechende CJC-Kommandofolge gestartet. Dies gilt für jedes „Bedingung erfüllt“, bis die vereinbarte Zeit abgelaufen oder die maximale Anzahl von CJC-Kommandofolge-Ausführungen erreicht ist.
Ist die Bedingung bereits beim Einrichten der CJC-Kommandofolge erfüllt, werden die CJC-Kommandos sofort ausgeführt.
Ist die Zeit abgelaufen, ohne dass die maximale Anzahl von Ereignissen „Bedingung erfüllt“ eingetreten ist, so wird eine ggf. definierte TIMEOUT-Kommandofolge gestartet. Ist der Ablauf einer CJC-Kommandofolge beendet, so wird die Verarbeitung jeweils am Unterbrechungspunkt fortgesetzt.
Fehlt die entsprechende CJC-Kommandofolge zum Kommando ADD-CJC-ACTION, wird nur das Ereignis, das die angegebene Bedingung erfüllt, durch Meldungen protokolliert.
Format
ADD-CJC-ACTION |
CONDITION = *NONE / <text 0..1800 with-low cond-expr> ,NAME = *NONE / <name 1..8> ,TIME-LIMIT = 600 / <integer 1..65535 seconds> ,TIMEOUT-LABEL = *NONE / <name 1..8> ,REPEAT = 1 / <integer 1..32767> |
Operandenbeschreibung
CONDITION = *NONE / <text 0..1800 with-low cond-expr >
Bedingter Ausdruck (in Klammern eingeschlossen). Die CJC-Kommandofolge wird ausgeführt, sobald das Ereignis „Bedingung erfüllt“ eintritt. Die zulässigen Angaben sind im Abschnitt „Bedingte Ausdrücke (Jobvariablen)" beschrieben. Groß- und Kleinschreibung wird berücksichtigt!
Sonder-Jobvariablen sind hier nicht zulässig.
Voreinstellung ist *NONE, d.h. nur eine TIMEOUT-Kommandofolge kann gestartet werden (siehe Operand TIMEOUT-LABEL). Kommandos vor der TIMEOUT-Marke und ein REPEAT-Wert größer 1 werden abgewiesen.
NAME = *NONE / <name 1..8>
Name für das Kommando ADD-CJC-ACTION. Dieser Name wird in Meldungen neben der systeminternen Identifikation ausgegeben. Über diesen Namen kann auf das Kommando ADD-CJC-ACTION Bezug genommen werden.
Ist der angegebene Name identisch mit dem eines noch wirksamen ADD-CJC-ACTION-Kommandos, so wird die Angabe zwar akzeptiert, aber eine Warnmeldung ausgegeben. Voreingestellt ist *NONE, d.h. es wird nur die vom System vergebene Identifikation in Meldungen ausgegeben. Es kann nur über die systeminterne Identifikation Bezug auf das ADD-CJC-ACTION-Kommando genommen werden.
TIME-LIMIT = 600 / <integer 1..65535 seconds >
Zeitangabe in Sekunden. Die CJC-Kommandofolge wird nur ausgeführt, wenn das Ereignis „Bedingung erfüllt“ im vereinbarten Zeitraum eintritt und die maximal erlaubte Anzahl von Ausführungen (Operand REPEAT) nicht überschritten wird.
Die Zeitnahme beginnt nach Ausführung des END-CJC-ACTION-Kommandos; die durchschnittliche Genauigkeit beträgt 200ms. Eine Zeitangabe größer als 65280 Sekunden bedeutet „unbegrenzte Lebensdauer“ (maximal bis Auftragsende).
TIMEOUT-LABEL = *NONE / <name 1..8>
Sprungziel. Name des Kommandos, mit dem die Verarbeitung fortzusetzen ist, wenn die vereinbarte Zeit abgelaufen ist und die maximale Anzahl von Ereignissen „Bedingung erfüllt“ noch nicht eingetreten ist (TIMEOUT-Kommandofolge).
Voreingestellt ist *NONE, d.h. es ist keine TIMEOUT-Kommandofolge angegeben.
Ist zum Zeitpunkt der END-CJC-ACTION-Eingabe keine TIMEOUT-Kommandofolge mit dem angegebenen Namen definiert, so gilt
bei Prozeduren (Dialog/Batch): die gesamte CJC-Kommandofolge wird abgewiesen.
im Dialog (ohne Prozedur): eine Warnung wird ausgegeben und END-CJC-ACTION wird abgewiesen.
REPEAT = 1 / <integer 1..32767>
Maximale Anzahl von Ausführungen der CJC-Kommandofolge im vereinbarten Zeitraum.
Kommando-Returncode
Kommando-Returncodes, die sich auf das Kommando ADD-CJC-ACTION bzw. auf die Kommandos der CJC-Kommandofolge beziehen, werden erst nach Abschluss der CJC-Kommandofolge mit END-CJC-ACTION zurückgegeben.
(SC2) | SC1 | Maincode | Bedeutung |
---|---|---|---|
0 | CMD0001 | CJC-Kommandofolge ausgeführt | |
1 | CMD0202 | Bedingung fehlerhaft, Syntaxfehler, Kommando der CJC-Kommandofolge unzulässig oder unbekannt, END-CJC-ACTION nicht gefunden oder Timeout-Label existiert nicht | |
32 | CMD0221 | Interner Fehler | |
130 | CJC0002 | JV nicht zugreifbar | |
130 | CJC0003 | Speichersättigung |
Hinweise
- Eine CJC-Kommandofolge wird vom System immer als zusammenhängende Einheit betrachtet, d.h. in eine CJC-Kommandofolge kann nicht von außerhalb gesprungen werden. Bei jeder durchzuführenden Verzweigung (zu einer Marke oder z.B. zu SET-JOB-STEP) wird zunächst nach jedem erkannten ADD-CJC-ACTION das entsprechende nachfolgende END-CJC-ACTION gesucht; erst danach wird die Suche nach dem gewünschten Sprungziel fortgesetzt.
- Ein ADD-CJC-ACTION-Kommando wird in folgenden Fällen unwirksam:
- Die CJC-Kommandofolge wurde so oft ausgeführt, wie im REPEAT-Operanden angegeben war.
- Das im TIME-LIMIT-Operanden angegebene Zeitintervall ist verstrichen und die TIMEOUT-Kommandofolge - falls vorhanden - ist abgearbeitet.
- Ein REMOVE-CJC-ACTION-Kommando wurde gegeben.
- Bei Auftragsbeendigung oder Auftragsabbruch.
- Der eine beteiligte Jobvariable enthaltende Katalog wird auf Dauer exportiert.
- Der Startzeitpunkt einer CJC-Kommandofolge hängt ab vom Modus, in dem sich der Auftrag bei Eintritt des Ereignisses „Bedingung erfüllt“ befindet:
Programm-Modus: | Eine aus dem Programm aufgerufene Systemfunktion wird noch ausgeführt. |
Kommando-Modus | Das aktuelle Kommando wird noch beendet. |
BREAK/ESCAPE-Modus: | Der Start verzögert sich, bis eines der folgenden Kommando eingegeben wird: CANCEL-/RESUME-PROGRAM bzw. CANCEL-/END-/EXIT-/RESUME-PROCEDURE |
WAIT-Modus oder „Bedingung sofort erfüllt“: | Der Start erfolgt sofort. |
der bislang verzögerte Teil für „Bedingung innerhalb der Wartezeit erfüllt“
und der Teil für „Wartezeit abgelaufen“
- Innerhalb der CJC-Kommandofolge sind nur die Kommandos ENTER-JOB, ENTER-PROCEDURE und MODIFY-JV erlaubt. Dabei ist ENTER-PROCEDURE nur in Nicht-S-Prozeduren zulässig. Wird ein unzulässiges Kommando angegeben, bevor die Folge mit END-CJC-ACTION abgeschlossen ist, wird es abgewiesen.
- Ist ENTER-JOB bzw. ENTER-PROCEDURE das erste Kommando der TIMEOUT-Kommandofolge, muss ein angegebener Auftragsname mit dem Namen der Kommandofolge übereinstimmen.
Beispiel:/.ERROR ENTER-JOB JOB.A, JOB-NAME=ERROR
- Im Fall eines Fehlers in ADD-CJC-ACTION oder in der CJC-Kommandofolge gilt in Prozeduren (Dialog/Batch):
Das ADD-CJC-ACTION-Kommando wird abgewiesen und damit unwirksam; es wird zum nächsten der folgenden Kommandos (nach END-CJC-ACTION) verzweigt: SET-JOB-STEP, EXIT-JOB, LOGOFF, CANCEL-PROCEDURE, END-PROCEDURE oder EXIT-PROCEDURE.
Bei fehlendem END-CJC-ACTION wird die Prozedur abnormal beendet. - Das Kommando END-CJC-ACTION wird abgewiesen, wenn das zugehörige ADD-CJC-ACTION-Kommando fehlt.
- CJC-Kommandofolgen werden vom System automatisch mit einer internen Identifikation versehen, die im REMOVE-CJC-ACTION-Kommando verwendet werden kann.
- Solange ein Kommando ADD-CJC-ACTION wirksam ist, kann kein Fixpunkt (Makro WRCPT) geschrieben werden. Ein Restart (Kommando RESTART-PROGRAM) beendet alle noch wirksamen Kommandos ADD-CJC-ACTION.