Das BS2000 stellt jedem Auftrag (Task) 32 Auftragsschalter (nummeriert von 0 bis 31) und jeder Benutzerkennung 32 Benutzerschalter (nummeriert von 0 bis 31) zur Verfügung (siehe Handbuch [3]); sie können jeweils die Zustände ON und OFF annehmen. Mit ihrer Hilfe lassen sich die Abläufe innerhalb eines Auftrags steuern bzw. mehrere Aufträge miteinander koordinieren. So verwendet man z.B.
Auftragsschalter, wenn sich innerhalb eines Auftrags mehrere (COBOL-) Programme verständigen müssen, etwa weil der Ablauf eines Programms von den Verarbeitungsschritten eines zuvor aufgerufenen Programms abhängt
Benutzerschalter, wenn sich mehrere Aufträge miteinander verständigen sollen. Falls Aufträge unter verschiedenen Kennungen ablaufen, können die Benutzerschalter einer Kennung zwar von Aufträgen einer anderen Kennung ausgewertet, von ihnen jedoch nicht verändert werden.
Auftrags- und Benutzerschalter können sowohl auf Betriebssystem-Ebene durch Kommandos als auch auf Programm-Ebene über COBOL-Anweisungen abgefragt und verändert werden. Den Zugriff auf Auftrags- und Benutzerschalter unterstützt COBOL2000 durch folgende Sprachmittel (siehe Handbuch „COBOL2000-Sprachbeschreibung“ [1]):
Die Vereinbarung programminterner Merknamen für Auftrags- und Benutzerschalter und ihre Zustände im SPECIAL-NAMES-Paragrafen der ENVIRONMENT DIVISION.
Über diese Merknamen können sich Anweisungen der PROCEDURE DIVISION auf die zugeordneten Schalter und deren Zustände beziehen (siehe unten). Diese Merknamen können folgendermaßen vereinbart werden:
Für die Auftragsschalter über die Herstellernamen TSW-0, TSW-1,..., TSW-31, wobei die zusätzlichen Angaben ON IS... und OFF IS... die Festlegung von Bedingungsnamen für den jeweiligen Schalterzustand ermöglichen.
So lassen sich z.B. Merknamen für Auftragsschalter 17 und seine Zustände vereinbaren durch die AngabenTSW-17 IS merkname-17 ON IS schalterzustand-ein-17 OFF IS schalterzustand-aus-17
Für die Benutzerschalter über die Herstellernamen USW-0, USW-1,..., USW-31, wobei die zusätzlichen Angaben ON IS... und OFF IS... die Festlegung von Bedingungsnamen für den jeweiligen Schalterzustand ermöglichen.
So lassen sich z.B. Merknamen für Benutzerschalter 18 und seine Zustände vereinbaren durch die AngabenUSW-18 IS merkname-18 ON IS schalterzustand-ein-18 OFF IS schalterzustand-aus-18
Die Abfrage und Veränderung von Schaltern in der PROCEDURE DIVISION:
Bedingungen (z.B. in der IF-, PERFORM-, EVALUATE-Anweisung) können die im SPECIAL-NAMES-Paragrafen vereinbarten Bedingungsnamen von Schalterzuständen enthalten und sie auf diese Weise für die Steuerung des Programmablaufs auswerten.
SET (Format 3; siehe Handbuch „COBOL2000-Sprachbeschreibung“ [1]) kann über die im SPECIAL-NAMES-Paragrafen vereinbarten Merknamen auf Schalter zugreifen und ihre Zustände verändern.
Beispiel 8-2
Verwendung von Auftragsschaltern
Im folgenden Ausschnitt aus einem Dialogauftrag sieht eine Prozedur verschiedene Verarbeitungsvarianten vor, die abhängig vom Zustand der Auftragsschalter 12 und 13 ausgeführt werden. Die Schalter werden sowohl auf Betriebssystem-Ebene als auch auf Programm-Ebene verändert und ausgewertet:
Zunächst kann Auftragsschalter 12 auf Betriebssystem-Ebene gesetzt werden, um die Verarbeitung innerhalb der folgenden Prozedur zu steuern. Dort wird auf Programmebene sein Zustand ausgewertet und, abhängig vom Programmablauf, Auftragsschalter 13 gesetzt. Dieser wird anschließend auf Betriebssystem-Ebene ausgewertet.
|
(1) | Auftragsschalter 12 erhält den Status ON, 13 den Status OFF auf Betriebssystem-Ebene. |
(2) | Ausschnitt aus einer Prozedur. |
(3) | Das COBOL-Programm PROG-1 wird aufgerufen. |
(4) | Für die Auftragsschalter 12 (TSW-12) bzw. 13 (TSW-13) werden die programminternen Namen SCHALTER-12 bzw. SCHALTER-13 vereinbart; für ihren jeweiligen ON-Status die Bedingungsnamen EIN-12 bzw. EIN-13. |
(5) | Falls Auftragsschalter 12 den Status ON hat (siehe (1)), wird die Anweisung PERFORM A vor PERFORM B ausgeführt. |
(6) | Falls am Ende des Programmablaufs der Indikator FELD den Wert 99 enthält, setzt PROG-1 den Auftragsschalter 13 auf ON. |
(7) | Die Prozedur wertet den Status des Auftragsschalters 13 aus: Falls er vonPROG-1 nicht auf ON gesetzt wurde, verzweigt sie zum Ende, andernfalls führt sie zusätzlich zu PROG-1 das Programm PROG-2 aus. |
(8) | Auf Betriebssystem-Ebene werden die Auftragsschalter 12 und 13 zurückgesetzt. |
Beispiel 8-3
Verwendung von Benutzerschaltern
Im folgenden Ausschnitt erzeugt ein Dialogauftrag A zwei Stapelaufträge B und C. Im Auftrag B wird eine ISAM-Datei aktualisiert. Erst danach kann Auftrag C ablaufen. Benutzerschalter 21 wird in drei verschiedenen Aufträgen verwendet. Auf Programm-Ebene wird er gesetzt, auf Betriebssystem-Ebene wird er ausgewertet und rückgesetzt.
(1) | Der Benutzerschalter 21 wird mit OFF initialisiert. |
(2) | Die ENTER-Prozedur B.STAPEL wird aufgerufen; sie erzeugt den Stapelauftrag B. |
(3) | Stapelauftrag B ruft das COBOL-Programm COB-ISAM auf. |
(4) | COB-ISAM aktualisiert die Datei ISAM-DATEI. |
(5) | Am Ende der Aktualisierung setzt COB-ISAM den Benutzerschalter 21 auf ON. |
(6) | Die ENTER-Prozedur C.STAPEL wird aufgerufen; sie erzeugt den Stapelauftrag C. |
(7) | Auftrag C wartet solange, bis im Auftrag B der Benutzerschalter den Status ON erhält. |
(8) | Sobald der Benutzerschalter 21 auf ON gesetzt ist, ruft Auftrag C das COBOL-Programm FOLGE-PR auf; es kann dann auf die im Auftrag B aktualisierteISAM-DATEI zugreifen. |
(9) | Benutzerschalter 21 erhält den Zustand OFF, um das (normale) Ende von Auftrag C zu markieren. |