Für Syntax siehe hier.
Perform mit Aufruf einer Methode:
PERFORM SNLPME1-GET-INDEX
Der generierte Code ist abhängig davon, ob die Methode Anweisungen enthält, die zum Beenden des Programms führen, z.B. EXEC TAA UNREGISTER oder Goback.
Wenn die Anweisung in der Einstiegsmethode steht, entfällt der Rückkehrwert in der return-Anweisung.
Wenn die Anweisung in der Einstiegsmethode steht und die letzte in der Methode ist oder nur durch eine Exit-Anweisung gefolgt wird, entfällt der return vollständig.
// ohne Anweisungen, die zum Beenden des Programms führen: Snlpme1GetIndex(); // mit Anweisungen, die immer zum Beenden des Programms führen: Snlpme1GetIndex(); return false; // mit Anweisungen, die möglicherweise zum Beenden des Programms führen: if (!Snlpme1GetIndex()) return false; } // in der Einstiegsmethode, mit Anweisungen, die möglicherweise zum Beenden des Programms führen: if (!Snlpme1GetIndex()) return; }
Perform mit Times:
PERFORM GET-INFO 2 TIMES
for (var i = 0; i < 2; i++) { GetInfo(); }
PERFORM mit UNTIL:
PERFORM UNTIL B-BEENDEN-JA
do { _ }while(!BBeendenJa);
PERFORM mit VARYING und UNTIL:
PERFORM VARYING L-PRAE-IND-IND FROM 1 BY 1 UNTIL L-PRAE-IND-IND > PRAE-NR-ANZ OR ZW-PRE-NR NOT = K-DUMMY-NR
for (LPraeIndInd = 1; !(LPraeIndInd > SnstrPraeNrSkzRs.PraeNrAnz || ZwPreNr != SnstrPraeNrSkzRs.KDummyNr); LPraeIndInd += 1) {
Syntaktisch erkannt, aber von den Generatoren derzeit nicht unterstützt sind folgende Bestandteile: