Auftrag ereignisabhängig in Wartezustand versetzen
Komponente: | BS2000 |
Funktionsbereich: | Jobvariablen |
Anwendungsbereich: | JOB-VARIABLES |
Privilegierung: | STD-PROCESSING |
Funktionsbeschreibung
Mit dem Kommando WAIT-EVENT kann der Benutzer den zeitlichen Ablauf eines Auftrags von Benutzerschalterstellungen und Zeitvorgaben oder vom Zustand einer Jobvariablen (JV) abhängig machen.
Benutzerschalter
Es können die Benutzerschalterstellungen der eigenen oder einer fremden Benutzerkennung abgefragt werden. Sind die gewünschten Schalterstellungen erreicht, bevor die angegebene Zeitgrenze (Operand TIME-LIMIT) überschritten ist, so wird der wartende Auftrag mit dem folgenden Kommando fortgesetzt. Ist die Zeit verstrichen, so wird Spin-Off ausgelöst. In Nicht-S-Prozeduren wird zu einem der folgenden Kommandos verzweigt:
SET-JOB-STEP, EXIT-JOB, CANCEL-PROCEDURE, END-PROCEDURE oder EXIT-PROCEDURE.
In S-Prozeduren wird zum nächsten Fehlerbehandlungsblock verzweigt (siehe Kommando IF-BLOCK-ERROR, Beschreibung der SDF-P-Fehlerbehandlung).
Werden keine Benutzerschalter angegeben (Operand ON bzw. OFF), so wird eine Zeitangabe (Operand TIME-LIMIT) ignoriert und die Verarbeitung sofort mit dem folgenden Kommando fortgesetzt.
Zeitvorgaben
Es können zeitliche Vorgaben in Form einer Zeitspanne oder eines Zeitpunktes gemacht werden. Nach Ablauf der vorgegebenen Zeit wird der wartende Auftrag mit dem folgenden Kommando fortgesetzt. Dies gilt auch, wenn die Zeitvorgabe für das Warten „Null“ ist. Wenn der vorgegebene Zeitpunkt jedoch in der Vergangenheit liegt, dann wird das Kommando abgewiesen.
Jobvariablen (JV)
Der Benutzer definiert eine Bedingung (Operand CONDITION) und setzt eine Zeitgrenze (Operand TIME-LIMIT). Zusätzlich kann er angeben, dass die Bedingung nur überprüft wird, wenn eine der davon betroffenen Jobvariablen während der Wartezeit geändert wird (Operand CHECK-CURRENT-VALUE). Ist die Bedingung erfüllt, bevor die Zeitgrenze erreicht ist, so wird der wartende Auftrag mit dem folgenden Kommando fortgesetzt. Ist die Zeit verstrichen, so wird die Verarbeitung bei dem angegebenen Sprungziel (Operand TIMEOUT-LABEL) fortgesetzt bzw. Spin-Off ausgelöst.
Format
WAIT-EVENT | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Operandenbeschreibung
UNTIL =
Art des Ereignisses.
UNTIL = *USER-SWITCHES(...)
Der Auftrag soll abhängig von Benutzerschalterstellungen warten. Ohne Angabe von Benutzerschaltern in den Operanden ON und OFF wird eine Zeitangabe im Operanden TIME-LIMIT ignoriert und die Verarbeitung sofort mit dem folgenden Kommando fortgesetzt.
USER-IDENTIFICATION = *OWN / <name 1..8>
Benutzerkennung, deren Benutzerschalter abzufragen sind.
Voreingestellt ist *OWN, d.h., es werden die Benutzerschalter der Benutzerkennung des laufenden Auftrags abgefragt.
ON = *NONE / list-poss(32): <integer 0..31>
Benutzerschalter. Der Auftrag wird fortgesetzt, sobald die angegebenen Schalter auf ON gesetzt sind und die im Operanden OFF angegebenen Schalter auf OFF stehen. Voreingestellt ist *NONE, d.h., die Benutzerschalter werden nicht auf die Stellung ON geprüft.
OFF = *NONE / list-poss(32): <integer 0..31>
Benutzerschalter. Der Auftrag wird fortgesetzt, sobald die angegebenen Schalter auf OFF gesetzt sind und die im Operanden ON angegebenen Schalter auf ON stehen. Voreingestellt ist NONE, d.h., die Benutzerschalter werden nicht auf die Stellung OFF geprüft.
TIME-LIMIT = *SHUTDOWN / <integer 0..9999999 minutes>
Zeitangabe in Minuten. Maximale Wartezeit des Auftrags auf Eintritt des Ereignisses.
UNTIL = *PERIOD(...)
Der Auftrag soll eine bestimmte Zeit warten.
SECONDS = 0 / <integer 0..9999999 seconds>
Zeitangabe in Sekunden. Wenn die Zeitvorgabe für das Warten „Null“ ist, dann wird die Verarbeitung sofort mit dem folgenden Kommando fortgesetzt.
UNTIL = *DATE(...)
Der Auftrag soll bis zu einem bestimmten Zeitpunkt warten. Wenn der vorgegebene Zeitpunkt in der Vergangenheit liegt, dann wird das Kommando abgewiesen.
DATE = *TODAY / *TOMORROW / <date>
Datumsangabe.
TIME = <time>
Zeitangabe.
UNTIL = *JV(...)
Der Auftrag soll abhängig vom Zustand einer JV warten.
CONDITION = *NONE / <text 0..1800 with-low cond-expr>
Bedingter Ausdruck (in Klammern eingeschlossen). Der Auftrag wird fortgesetzt, sobald die Bedingung erfüllt ist.
Die zulässigen Angaben sind im Abschnitt „Bedingte Ausdrücke (Jobvariablen)" beschrieben.
Sonder-Jobvariablen sind nicht zulässig.
TIME-LIMIT = 600 / <integer 1..65535 seconds>
Zeitangabe in Sekunden. Maximale Wartezeit des Auftrags auf Eintritt des Ereignisses „Bedingung erfüllt“, wobei der Zeitpunkt der Überprüfung durch den Operanden CHECK-CURRENT-VALUE bestimmt wird. Zeitangaben größer 65280 Sekunden werden als unbegrenzte Wartezeit interpretiert.
TIMEOUT-LABEL = *NONE / <name 1..8>
Sprungziel. Name der Nicht-S-Marke, die das Kommando bezeichnet, mit dem die Verarbeitung fortzusetzen ist, wenn die angegebene Zeit abgelaufen und das Ereignis noch nicht eingetreten ist.
Wird kein Sprungziel definiert, so wird bei Zeitablauf Spin-Off ausgelöst. Im Dialog wird die Angabe eines Sprungziels ignoriert und eine Warnung ausgegeben.
Wurde WAIT-EVENT innerhalb einer Prozedur gegeben, so muss auch das Sprungziel innerhalb dieser Prozedur vorhanden sein, ansonsten erfolgt abnormale Prozedurbeendigung. Tritt das Sprungziel innerhalb einer CJC-Kommandofolge auf (siehe Kommando ADD-CJC-ACTION), so wird es nicht erkannt.
CHECK-CURRENT-VALUE = *YES / *NO
Gibt an, ob die Bedingung sofort überprüft werden soll.
Voreingestellt ist mit *YES die sofortige Überprüfung der Bedingung. Bei Angabe von *NO wird die Bedingung erst dann überprüft, wenn auf eine von der Bedingung betroffene Jobvariable ein Schreibzugriff erfolgt.
Kommando-Returncode
(SC2) | SC1 | Maincode | Bedeutung |
---|---|---|---|
0 | CMD0001 | Kommando ausgeführt | |
1 | 0 | CJC0022 | UNTIL=*JV: |
1 | 0 | CMD0001 | UNTIL=*USER-SWITCHES: |
2 | 0 | CMD0002 | UNTIL=*USER-SWITCHES: |
1 | CMD0202 | Syntaxfehler, Fehler in der Bedingung, Sprungmarke nicht gefunden oder Sprung zu dem WAIT-EVENT-Kommando | |
32 | CMD0221 | Interner Fehler | |
32 | EXC0041 | Systemfehler | |
64 | CMD0025 | Katalog der JV exportiert | |
64 | EXC0868 | Benutzerkennung nicht gefunden | |
64 | EXC0869 | Kommando abgebrochen | |
64 | EXC0878 | Sprungziel nicht gefunden | |
130 | CJC0002 | JV nicht zugreifbar | |
130 | CJC0003 | Speichersättigung | |
130 | CMD2382 | SHUTDOWN bzw. CANCEL-JOB aktiv, Programm geladen, Benutzerkennung gesperrt oder Banddatei geöffnet |
Hinweise
Für einen mittels WAIT-EVENT-Kommando (bei UNTIL=*JV(...)) in den Wartezustand versetzten Auftrag kann der Wartezustand zur Ausführung von CJC-Kommandofolgen vorübergehend aufgehoben werden. Danach geht der Auftrag erneut in den Wartezustand über.
Wenn das Kommando bearbeitet wird (bei UNTIL=*USER-SWITCHES, *PERIOD oder *DATE), werden alle Betriebsmittel eines Auftrags freigegeben, die vorher implizit oder mit einem SECURE-RESOURCE-ALLOCATION-Kommando angefordert worden sind, d.h. die Geräteanforderungen müssen wiederholt werden.
Das WAIT-EVENT-Kommando wird bei UNTIL ungleich *JV abgewiesen, wenn Banddateien eröffnet sind (Fehlermeldung EXC0849).
Der Punkt vor dem Sprungziel darf nicht durch eine Ausdrucksersetzung entstehen, da sonst das Sprungziel als solches nicht mehr gefunden wird.