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.