Die bedingungsabhängige Auftragssteuerung (CJC = Conditional Job Control) erlaubt dem Benutzer, Aktionen nur unter bestimmten Bedingungen auszuführen. Er kann ’bedingte’ Anweisungen an das Betriebssystem geben, die nur - oder erst - dann ausgeführt werden, wenn die angegebenen Bedingungen erfüllt sind.
Die Grundlage für die bedingungsabhängige Auftragssteuerung sind Jobvariablen, die über Operatoren zu einer Bedingung verknüpft werden. Die Bedingung kann ’erfüllt’ oder ’nicht erfüllt’ sein, je nach den Werten der angegebenen Jobvariablen. Die durch eine bedingte Anweisung definierte Aktion wird ausgeführt, wenn die Bedingung erfüllt ist, z.B. wenn sich der Wert einer Jobvariablen entsprechend geändert hat. Als bedingte Anweisungen können folgende Aktionen definiert werden:
Einmalige Auswertung der Bedingung und sofortige Verzweigung im Falle ’Bedingung erfüllt’. Im Falle ’Bedingung nicht erfüllt’ wird der Auftrag mit der nachfolgenden Anweisung fortgesetzt (SKIP-COMMANDS)
Übergang in einen Wartezustand, bis die angegebene Bedingung erfüllt oder ein vorgegebener Zeitraum verstrichen ist, sofern die Bedingung bei der erstmaligen Auswertung nicht bereits erfüllt war (WAIT-EVENT)
Unterbrechung eines Auftrags/ Programmes zur Ausführung zuvor angegebener Aktionen, wenn die angegebene Bedingung erfüllt ist (Häufigkeit kann festgelegt werden) oder ein vorgegebenes Zeitintervall verstrichen ist (ADD-CJC-ACTION).
Diese Funktionen können lokal in einem einzelnen Rechner genutzt werden und stehen auch im MSCF-Verbund zur Verfügung. Insbesondere können Ereignisse in einem Rechner die Ausführung entsprechend definierter Aktionen im selben Rechner und/oder in anderen Rechnern des Verbunds bewirken.
Somit besteht auf der Basis von Jobvariablen eine auftragsübergreifende, verbundweite Kommunikations- und Steuermöglichkeit. Die Jobvariablen dienen dabei den Rechnern, auf denen die beteiligten Aufträge ablaufen, als gemeinsam zugreifbare Informationsträger.
Siehe das Handbuch „Jobvariablen“ [9].
Anwendungsbeispiel
Bild 11: Auftragskontrolle (Erläuterungen zum Bild siehe nächste Seite)
Bild 11 verdeutlicht rechnerübergreifend definierte Auftrags-Abhängigkeiten auf den über eine MSCF-Verbindung gekoppelten Rechnern RECHNER1 und RECHNER2.
Erläuterungen
(1) | Der Auftrag auf RECHNER1 wartet, bis der Auftrag auf RECHNER2 die Jobvariable :A:JV1 auf denselben Wert wie Jobvariable :B:JV2 gesetzt hat. |
(2) | Der Auftrag auf RECHNER2 signalisiert nun dem System, dass er in einem Zeitintervall von 600 Sekunden (= 10 Minuten) max. 10 mal von dem Ereignis Jobvariable :C:JV3 hat den Wert C’READY’ benachrichtigt und zum Starten der ENTER-Datei JOB auf der SPVS unterbrochen werden will. |
(3) | Diese Ereignisse liefert der Auftrag auf RECHNER1 in einer Schleife, die solange durchlaufen wird, bis der Auftrag auf RECHNER2 die Information liefert: Jobvariable :C:JV3 hat keinen C’READY’ entsprechenden Wert |
(4) | Die Jobvariable :C:JV3 wird auf C'END' gesetzt. |
(2) + (3) | Die Bedingung Jobvariable :C:JV3 hat den Wert C’READY’ ist nun nicht mehr erfüllt. Damit unterbleibt der Sprung und beide Aufträge werden mit Kommando EXIT-JOB beendet. |
Verhalten bei Rekonfiguration
Beziehen sich Anweisungen der bedingungsabhängigen Auftragssteuerung auf Jobvariablen importierter Kataloge, so bleiben die Anweisungen auch dann wirksam, wenn ein solcher Katalog während des Wartens auf Ereignisse als ’vorübergehend nicht zugreifbar’ gekennzeichnet wird. Wenn der Katalog wieder verfügbar ist, der angegebene Zeitraum noch nicht verstrichen und das Ereignis nicht eingetreten ist, werden die Anweisungen ordnungsgemäß verarbeitet.
Falls das Ereignis, auf das gewartet wird, während einer Verbindungsunterbrechung eintritt, kann der wartende Rechner nicht benachrichtigt werden. Deshalb wird am Master des Shared Pubsets die Meldung CJC0004 ausgegeben und das Ereignis vollständig deaktiviert. Auch nachdem die Verbindung wiederhergestellt wurde und das Ereignis erneut eingetreten ist, erfolgt keine Benachrichtigung mehr. Die Verarbeitung auf dem wartenden Rechner wird nach Ablauf der Wartezeit fortgesetzt, so als ob das Ereignis nie eingetreten wäre.
Wenn während des Wartens auf ein Ereignis eine Jobvariable nicht verfügbar wird, dann wird die Bearbeitung solcher Anweisungen mit einer Meldung beendet. Im Anschluss daran wird zum nächsten SET-JOB-STEP-Kommando bzw. zum Ende verzweigt.