:WHILE... :ENDWHILE

Die Script-Anweisung :WHILE 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 die :WHILE-Anweisung 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 Anweisungen in der Schleife verarbeitet. Die Bedingung wird neu bewertet, und wenn sie weiterhin wahr ist, werden die Anweisungen 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 die :ENDWHILE-Anweisung folgt.

Syntax

:WHILEBedingung
[Anweisungen]
:ENDWHILE

Parameter

Hinweise:

Verwenden Sie die folgende Struktur, um Bedingungen zu schreiben:

Wert Vergleichsoperator 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 Strings wird nicht deren Länge geprüft. Die folgende Bedingung ist wahr, da S im Alphabet vor W steht:

:WHILE "Smith" < "Wilson"

Die folgende Script-Anweisung 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 Script-Zeilen des :WHILE-Blocks 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" ,"Bitte geben Sie eine Abteilung ein", &DEP#, "M" 

:   READ &NAME#, "08", "Bitte geben Sie einen Namen ein", &NAME#, "M" 

:ENDREAD

 

:IF SYS_LAST_ERR_NR() <> 0

:   STOP

:ELSE

:   IF SYS_USER_NAME() = &NAME#

:      SET &REPEAT# = "Y"

:      SET_LAST_ERR 10006, "Bitte geben Sie einen anderen Namen als Ihren Namen ein"

:   ELSE

:      SET &REPEAT# = "N"

:   ENDIF

:ENDIF

 

:ENDWHILE

Siehe auch: