:WHILE... :ENDWHILE

Die :WHILE-Script-Anweisung definiert eine Schleife. Verwenden Sie einen :WHILE-Block, wenn Sie Teile eines Scripts mehrmals ausführen müssen, bis eine Bedingung nicht mehr erfüllt ist.

Während eine bestimmte Bedingung zutrifft, durchläuft das:WHILE-Statement einen Prozess im Script. Die Bedingung ist ein logischer Ausdruck, der entweder ein wahres oder ein falsches Ergebnis liefert. Wenn die Bedingung wahr ist, werden die Statements in der Schleife verarbeitet. Die Bedingung wird neu bewertet und wenn die Bedingung noch wahr ist, werden die Statements erneut verarbeitet. Dieser Prozess wiederholt sich, bis die Bedingung nicht mehr wahr ist. In diesem Fall endet die Schleife und das Script fährt mit der Zeile fort, die auf das :ENDWHILE-Statement folgt.

Syntax

:WHILE condition
[statements]
:ENDWHILE

Parameter

Hinweise:

Verwenden Sie die folgende Struktur, um Bedingungen zu schreiben:

Wert Vergleichswert Vergleichswert [OR Vergleichswert...]

Die folgenden Vergleichsoperatoren stehen für Bedingungen zur Verfügung:

Beispiele

Die folgende Bedingung ist wahr:

:WHILE "0" = "0"

Die folgende Bedingung ist falsch:

:WHILE "0" = "abc"

Beim Vergleich von Zeichenfolgen wird nicht deren Länge geprüft. Die folgende Bedingung ist wahr, da S im Alphabet vor W steht:

:WHILE "Smith" < "Wilson"

Das folgende Script-Statement definiert eine Bedingung, die erfordert, dass eine Variable einen von zwei möglichen Werten hat, um wahr zu sein. Wenn die Bedingung wahr ist, werden die Zeilen des :WHILE-Blockscripts verarbeitet.

:WHILE &ABT# = "EDP" OR "AE"

Das Beispiel erfragt vom Benutzer einen Namen und eine Abteilung. Die Abfrage wird solange wiederholt, bis der Benutzer einen Namen eingegeben hat, der nicht sein eigener ist.

:SET &REPEAT# = "Y"

 

:WHILE &REPEAT# = "Y"

:SET &DEP# = SYS_USER_DEP()

:SET &NAME# = SYS_USER_NAME()

 

:BEGINREAD 

:   READ &DEP#, "08" ,"Please enter a department", &DEP#, "M" 

:   READ &NAME#, "08", "Please enter a name", &NAME#, "M" 

:ENDREAD

 

:IF SYS_LAST_ERR_NR() <> 0

:   STOP

:ELSE

:   IF SYS_USER_NAME() = &NAME#

:      SET &REPEAT# = "Y"

:      SET_LAST_ERR 10006, "Please enter a name that is not your own name"

:   ELSE

:      SET &REPEAT# = "N"

:   ENDIF

:ENDIF

 

:ENDWHILE

Siehe auch: