2.4.23 PERFORM
|  | |  | | |
Format:
PERFORM
[Marke1 [{THROUGH / THRU} Marke2] ]
[
{
[ [WITH] TEST {BEFORE / AFTER} ]
UNTIL Bedingung1
/
[ [WITH] TEST {BEFORE / AFTER} ]
VARYING Feld1 FROM Feld2 BY Feld3 UNTIL Bedingung2
[
AFTER VARYING Feld4 FROM Feld5 BY Feld6 UNTIL Bedingung3
[AFTER ...]
]
/
Feld7 TIMES
}
]
[Befehlssequenz]
[END-PERFORM]
| |
|  | |  |
Befehlssequenz darf nur angegeben werden, wenn Marke1 fehlt. Es handelt sich dann um einen sogenannten Inline-PERFORM.
Der PERFORM durchläuft die Cobol-Anweisungen beginnend bei Marke1 bis zur Marke2 (wenn spezifiziert). Danach wird das Programm mit der nächsten Cobol-Anweisung fortgeführt (Rücksprung).
Zur Übersichtlichkeit befindet sich bei der Marke2 üblicherweise die zur besseren Lesbarkeit des Programmes die Cobol-Anweisung EXIT.
Ist Marke2 in der PERFORM - Anweisung nicht angegeben und Marke1 eine SECTION, werden alle Anweisungen bis zum Beginn einer neuen SECTION oder dem Programmende durchlaufen.
Ist Marke1 keine SECTION werden alle Cobol-Anweisungen bis zur nächsten Marke ausgeführt.
Der UNTIL - Zusatz bewirkt, daß die PERFORM - Schleife bis zum Eintreten der Bedingung1 ausgeführt wird. Bedingung1 ist eine normale IF - Anweisung, die auch mit AND und OR verknüpft sein darf.
Beispiel:
PERFORM TEST THRU TESTX UNTIL WERT = 4.
oder
PERFORM TEST THRU TESTX UNTIL WERT > 3 AND WERT < 7.
Der VARYING - Zusatz setzt das angegebene Datenfeld1 auf den angegebenen Startwert Wert1. Nach jedem Durchlaufen der PERFORM - Schleife wird dieses Datenfeld1 um Wert2 erhöht bis die UNTIL - Bedingung zutrifft.
Mit AFTER können mehrere VARYING - Zusätze angegeben werden, wobei die letzte AFTER - Anweisung die höchste Priorität hat, d.h. zuerst wird diese VARYING - Anweisung abgehandelt, danach die zuvorliegende usw.
Beispiel:
PERFORM TEST THRU TESTX
VARYING WERT1 FROM 1 TO 2 BY 1
AFTER VARYING WERT2 FROM 1 TO 3 BY 1.
Hier wird die PERFORM - Schleife insgesamt 6-mal durchlaufen, wobei WERT2 2-mal die Werte 1 bis 3 annimmt.
Wird Marke1 nicht angegegen, handelt es sich um einen sogenannten Inline-PERFORM. Es werden alle nach dem PERFORM folgenden Anweisungen durchlaufen, bis die Anweisung END-PERFORM auftritt.
Die Angabe WITH TEST BEFORE oder AFTER bestimmt ob die Bedingungsangabe vor oder nach dem Durchlaufen der PERFORM - Schleife getestet wird.
Siehe Programm perform.cob
Zurück zu Acc-Cobol Open Statement
Hoch zu Procedure Divison in COBOL
Weiter zu READ
|