Dieses Dokument behandelt folgende Themen:
Verwandte Statements: FOR | ESCAPE
Gehört zur Funktionsgruppe: Schleifenverarbeitung
Mit dem Statement REPEAT
können Sie eine
Verarbeitungsschleife initiieren.
Zwei unterschiedliche Strukturen sind bei diesem Statement möglich:
Syntax 1 — Statements werden ein- oder mehrmals ausgeführt
Syntax 2 — Statements werden überhaupt nicht oder mehrmals ausgeführt
Wann die Bedingung ausgewertet wird, ist abhängig davon, ob Sie sie an den Anfang oder das Ende der logischen Bedingung stellen.
Weitere Informationen zu logischen Bedingungen, siehe den Abschnitt Logische Bedingungen im Leitfaden zur Programmierung).
Eine Erläuterung der in den Syntax-Diagrammen benutzten Symbole siehe Syntax-Symbole.
REPEAT
|
|||||||
statement | UNTIL
|
logical-condition | |||||
WHILE
|
|||||||
END-REPEAT
|
(nur im Structured Mode) | ||||||
[
LOOP ]
|
(nur im Reporting Mode) |
REPEAT
|
|||||||
UNTIL
|
logical-condition | statement | |||||
WHILE
|
|||||||
END-REPEAT
|
(nur im Structured Mode) | ||||||
[
LOOP ]
|
(nur im Reporting Mode) |
Syntax-Element-Beschreibung:
UNTIL | Die Schleife wird so oft ausgeführt, bis die logische Bedingung erfüllt ist. |
---|---|
WHILE | Die Schleife wird solange ausgeführt, wie die logische Bedingung erfüllt ist. |
logical-condition |
Wenn Sie eine logische Bedingung angeben, bestimmt die Bedingung, wann die Ausführung der Schleife beendet werden soll. Wenn Sie keine logische Bedingung angeben, müssen Sie die Schleife
mit einem |
END-REPEAT | Das für Natural reservierte Wort END−REPEAT muss
zum Beenden des REPEAT -Statements benutzt werden.
|
** Example 'RPTEX1S': REPEAT (structured mode) ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME * 1 #PERS-NR (A8) END-DEFINE * REPEAT INPUT 'ENTER A PERSONNEL NUMBER:' #PERS-NR IF #PERS-NR = ' ' ESCAPE BOTTOM END-IF /* FIND EMPLOY-VIEW WITH PERSONNEL-ID = #PERS-NR IF NO RECORD FOUND REINPUT 'NO RECORD FOUND' END-NOREC DISPLAY NOTITLE NAME END-FIND END-REPEAT * END
Ausgabe des Programms RPTEX1S
:
ENTER A PERSONNEL NUMBER: 11500304
Nach Eingabe und Bestätigung der Personalnummer:
NAME -------------------- KLUGE
Äquivalentes Reporting-Mode-Beispiel: RPTEX1R
.
** Example 'RPTEX2S': REPEAT (with WHILE and UNTIL option) ************************************************************************ DEFINE DATA LOCAL 1 #X (I1) INIT <0> 1 #Y (I1) INIT <0> END-DEFINE * REPEAT WHILE #X <= 5 ADD 1 TO #X WRITE NOTITLE '=' #X END-REPEAT * SKIP 3 REPEAT ADD 1 TO #Y WRITE '=' #Y UNTIL #Y = 6 END-REPEAT * END
Ausgabe des Programms RPTEX2S
:
#X: 1 #X: 2 #X: 3 #X: 4 #X: 5 #X: 6 #Y: 1 #Y: 2 #Y: 3 #Y: 4 #Y: 5 #Y: 6
Äquivalentes Reporting-Mode-Beispiel: RPTEX2R
.