Script-Anweisung: Definition einer Schleife zur mehrfachen Ausführung von Scriptteilen.
:WHILECondition
[Anweisungen]
:ENDWHILE
Syntax |
Beschreibung/Format |
---|---|
Bedingung |
Ein mittels Script-Literalen, Script-Variablen, Script-Funktionen oder numerischen Ausdrücken sowie Operatoren formulierter Ausdruck, der als Ergebnis "Wahr" oder "Falsch" liefert. |
Anweisungen |
Eine oder mehrere Anweisungen, die ausgeführt werden, solange Bedingung den Wert "Wahr" besitzt. |
Die :WHILE-Anweisung ist eine Kontrollstruktur mit der Sie Teile eines Scriptes abhängig vom Ergebnis einer Bedingung mehrfach ausführen können. Bei dieser handelt es sich um einen logischen Ausdruck.
Ist die Bedingung erfüllt (Wahr), so werden die Anweisungen ausgeführt. Anschließend wird die Bedingung erneut ausgewertet und die Anweisungen nochmals ausgeführt, wenn sie "Wahr" ergibt. Dies wiederholt sich bis die Bedingung nicht mehr erfüllt ist (Falsch). In diesem Fall wird das Script mit der nächsten Zeile nach dem :ENDWHILE fortgesetzt.
Achten Sie darauf, dass eine Abbruchbedingung eintritt, da sonst eine Endlos-Schleife entsteht.
Sie können WHILE-Blöcke auch schachteln, wobei es keine Limitierung der Tiefe gibt.
Eine Bedingung weist folgende Struktur auf:
Wert Vergleichsoperator Vergleichswert [OR Vergleichswert...] |
---|
For example:
:WHILE &ABT# = "EDP" OR "AE"
Bis zu 13 OR dürfen in der Bedingung vorhanden sein.
Die Formulierung einer Bedingung besitzt eine der folgenden Vergleichsoperatoren:
Operator |
Abkürzung |
Regel |
---|---|---|
= |
EQ |
Der Ausdruck ist "Wahr", wenn mindestens ein Vergleichswert dem Wert entspricht. |
<> |
NE |
Der Ausdruck ist "Wahr", wenn keiner der Vergleichswerte gleich dem Wert ist. |
< |
LT |
Der Ausdruck ist "Wahr", wenn ein Vergleichswert den angegebenen Begriff erfüllt. |
> |
GT |
|
<= |
LE |
|
>= |
GE |
Da Script-Variablen keinen expliziten Datentyp haben und daher sowohl Zahlen als auch Zeichenfolgen beinhalten können, ist bei den Vergleichen Folgendes zu beachten:
Der Vergleich erfolgt immer dann numerisch, wenn die zu vergleichenden Werte inhaltlich numerisch sind. Dabei spielt es keine Rolle, ob die Variable mit oder ohne Hochkomma angegeben wurde.
Die folgende Bedingung liefert "Wahr":
:WHILE "0" = "0"
Handelt es sich um keine numerischen Werte, so erfolgt ein alphanumerischer Vergleich.
Die folgende Bedingung liefert "Falsch":
:WHILE "0" = "abc"
Beim Vergleich von Zeichenfolgen wird nicht deren Länge geprüft. Die folgende Bedingung liefert "Falsch", da "S" im Alphabet vor "W" steht.
:WHILE "Smith" < "Wilson"
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:
Script-Sprachmittel | Beschreibung |
---|---|
Werten einen Ausdruck aus und führen in Abhängigkeit vom Auswertungsergebnis Anweisungen aus. |
Script-Sprachmittel - Script-Aufbau und -Prozessierung
Allgemeines zum Script
Script-Sprachmittel - Alphabetische Auflistung
Script-Sprachmittel -Funktionelle Gliederung
Automic Documentation - Tutorials - Automic Blog - Resources - Training & Services - Automic YouTube Channel - Download Center - Support |
Copyright © 2016 Automic Software GmbH |