[CLOSE] LOOP [(r)]
|
Dieser Abschnitt behandelt folgende Themen:
Das Statement LOOP dient dazu, eine Verarbeitungsschleife zu schließen. Es
bewirkt, dass der aktuelle Schleifendurchlauf beendet wird und die Kontrolle wieder an den
Anfang der Schleife übergeben wird.
Sobald die Verarbeitungsschleife, auf die sich das LOOP-Statement bezieht,
beendet ist (d.h. sobald alle Datensätze verarbeitet und alle Schleifendurchläufe
ausgeführt sind), wird die Verarbeitung mit dem auf das LOOP-Statement
folgenden Statement fortgesetzt.
Das Statement LOOP wird bei den folgenden Statements verwendet: CALL FILE, CALL LOOP, FIND, FOR,
HISTOGRAM, PARSE JSON, PARSE XML, READ, READLOB, READ
RESULT SET (SQL), READ
WORK FILE, REPEAT, SELECT (SQL), SORT, UPLOAD PC
FILE.
Neben dem Schließen der Schleife(n) bewirkt das LOOP-Statement, dass alle
Referenzierungen von Feldern, die in FIND-, FIND
FIRST, FIND
UNIQUE-, READ- und
GET-Statements innerhalb der
geschlossenen Schleife(n) verwendet werden, eliminiert werden.
Ein Feld, das in einem View enthalten ist, kann auch außerhalb einer mit
LOOP geschlossenen Schleife referenziert werden, und zwar indem bei der
Referenzierung der View-Name angegeben wird.
Dieses Statement gilt nur für Reporting Mode.
Ein LOOP-Statement darf nicht an eine logische Bedingung wie etwa ein
IF- oder AT BREAK-Statement geknüpft werden.
Syntax-Element-Beschreibung:
| Syntax-Element | Beschreibung |
|---|---|
LOOP (r)
|
Statement-Referenzierung:
Sollen mehrere Schleifen geschlossen werden, so kann ein bestimmtes Statement
per Statement-Label oder Quellcode- Zeilennummer referenziert werden (Notation
|
Anmerkungen:
END-Statement alle noch aktiven Verarbeitungsschleifen, die
noch nicht explizit durch ein LOOP-Statement beendet wurden, automatisch geschlossen.
LOOP-Statement weglassen. Das ist jedoch nicht im Sinne
einer guten Kodierpraxis und wird nicht empfohlen.
0010 FIND ... 0020 READ ... 0030 READ ... 0040 LOOP (0010) /* closes all loops
0010 FIND ... 0020 READ ... 0030 READ ... 0040 LOOP /* closes loop initiated on line 0030 0050 LOOP /* closes loop initiated on line 0020 0060 LOOP /* closes loop initiated on line 0010