Stufennummer 88

Hier handelt es sich nicht um eine Datenbereichsreservierung wie bei anderen Stufennummern, sondern um einen (oder mehrere) 'Schalter'. Gebraucht wird dieser Schalter, um Abfragen die an Bedingungsvariablen erfolgen sollen, zu erleichtern.

Beispiel:
Nehmen wir an, in einem Programm werden unter Anderem Fähigkeiten von Bewerbern beurteilt. Hat der Bewerber Kenntnisse in Cobol, so wird ein Wert der normalerweise auf 0 gesetzt ist, auf 1 gesetzt. Hierfür wird ein Feld 'Cobkenn' in der WORKING-STORAGE SECTION definiert, und mit einem oben beschriebenen 'Abfrageschalter', wie folgt, versehen:

01 Cobkenn PIC 9 VALUE 0.
      88 Cobolkenntnis VALUE 1.

In der PROCEDURE DIVISION kann nun die Abfrage, ob der Bewerber Cobolkenntnisse besitzt oder nicht ganz einfach formuliert werden:

IF Cobolkenntnis THEN ADD 5 TO Punkte.

Die Abfrage addiert 5 zu der Variablen 'Punkte', wenn der Bewerber Cobolkenntnisse besitzt. Der Schalter 'Cobolkenntnis' ist also nur gesetzt, wenn die Variable 'Cobkenn' den Wert 1 hat. Natürlich könnte die Abfrage daher auch lauten:

IF Cobkenn = 1 THEN ADD 5 TO Punkte.


...


Interessanter wird es jedoch, wenn einem Datenfeld mehrere Schalter zugeordnet werden.
Nehmen wir wieder unseren Bewerber. Diesmal soll er in einer Scala von 1-10 seine Cobolkenntnisse bewerten. Hierzu würde wieder in der WORKING-STORAGE SECTION ein Datenfeld definiert und mit entsprechenden Schaltern versehen:

01 Cobstand PIC 99.
      88 Stand1 VALUE 1 THRU 3.
      88 Stand2 VALUE 4 THRU 6.
      88 Stand3 VALUE 7 THRU 9.
      88 Stand4 VALUE 10.
				

Sollen jetzt Bewerber mit extrem hohen Cobol-Kenntnisstand (10) herausgefiltert werden (= Variable 'Coboleignung' wird mit dem Wort "Spezialist" gefüllt), so kann der Filter in der PROCEDURE DIVISION wie folgt lauten:

IF Stand4 THEN MOVE "Spezialist" TO Coboleignung.
				


Der 'Schalter' kann natürlich auch eingesetzt werden, um über ihn beispielsweise das erreichte Ende einer Datei abzufragen. Das könnte dann in etwa so aussehen:

DATA DIVISION.
01 Warnung PIC X.
	88 Datenende VALUE 1.

	    :
	    :

PROCEDURE DIVISION.
READ Daten AT END SET Datenende TO TRUE.
		

Hier wird der Wert 1 an Variable 'Warnung' übertragen, wenn das Dateiende erreicht ist. Hierfür wird die SET-Anweisung benötigt.

Natürlich ist vorausgesetzt, daß auch alle anderen verwendeten Variablen, entsprechend ihrer Klasse in der WORKING-STORAGE SECTION mit der PICTURE-Klausel definiert wurden.

...