Funktion
Die EXIT PERFORM-Anweisung bietet die Möglichkeit, aus einer „in-line“- PERFORM-Anweisung zum Ende der PERFORM-Anweisung oder zur Wiederholung der Schleife zu verzweigen.
Format
EXIT {[TO TEST OF] PERFORM | PERFORM CYCLE}
Syntaxregeln
Eine EXIT [TO TEST OF] PERFORM-Anweisung kann nur innerhalb eines „in-line“-Perform angegeben werden.
Eine EXIT TO TEST OF PERFORM-Anweisung kann sich nur auf PERFORM-Anweisungen vom Format 2, 3 oder 4 beziehen (siehe „PERFORM-Anweisung").
- Die Anweisung EXIT PERFORM CYCLE ist äquivalent zur Anweisung EXIT TO TEST OF PERFORM.
Allgemeine Regeln
Bei EXIT PERFORM wird die zugehörige „in-line“-PERFORM-Anweisung verlassen.
Abhängig vom Format der PERFORM-Anweisung bewirkt
EXIT TO TEST OF PERFORM unterschiedliche Verzweigungen:Bei Format 2 wird zum Test von „Ende der Schleife“ verzweigt.
Bei Format 3 wird zum Test von „UNTIL bedingung“ verzweigt.
Bei Angabe von TEST AFTER in Format 4 wird zum Test von „UNTIL bedingung“ verzweigt. Ist die Bedingung erfüllt, wird die PERFORM-Anweisung beendet, andernfalls wird die Inkrementierung durchgeführt.
Bei Angabe von TEST BEFORE in Format 4 wird zum Inkrementieren verzweigt. Anschließend erfolgt der Test von „UNTIL bedingung“.
Beispiel 8-39
IDENTIFICATION DIVISION.
PROGRAM-ID. EXITP.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
TERMINAL IS T.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 EINGABE PIC 99.
01 EINGABE-STATUS PIC X VALUE LOW-VALUE.
88 EINGABE-ENDE VALUE HIGH-VALUE.
PIC 9(3).PIC 99.PIC Z9.9(2).
PROCEDURE DIVISION.
PROC SECTION.
BERECHNUNG.
MOVE 0 TO ZAEHLER SUMME
DISPLAY "Berechnung des Durchschnitts von Zahlen" UPON T
PERFORM WITH TEST AFTER UNTIL EINGABE-ENDE
DISPLAY "ZAHLEN EINGEBEN (2 Stellen, Ende bei 00)" UPON T
ACCEPT EINGABE FROM T
IF EINGABE IS NOT NUMERIC
THEN
DISPLAY "Eingabe nicht numerisch/nicht zweistellig!" UPON T
EXIT TO TEST OF PERFORM
END-IF
IF EINGABE = 0
THEN
SET EINGABE-ENDE TO TRUE
EXIT TO TEST OF PERFORM
END-IF
ADD 1 TO ZAEHLER
ADD EINGABE TO SUMME
END-PERFORM
IF ZAEHLER > 0
THEN
COMPUTE DURCHSCHNITT ROUNDED = SUMME / ZAEHLER
DISPLAY "Durchschnitt = " DURCHSCHNITT UPON T
ELSE
DISPLAY "Kein Durchschnitt berechnet" UPON T
END-IF
STOP RUN.
Das Programm berechnet den Durchschnitt von Zahlen, die am Terminal eingegeben werden. Endekriterium ist die Eingabe von 00, Fehleingaben werden gemeldet.