Die Syntax für die Abfragefolge Case of...Else...End case lautet:
Case of
:(Boolean_Expression)
statement(s)
:(Boolean_Expression)
statement(s)
.
.
.
:(Boolean_Expression)
statement(s)
Else
statement(s)
End case
Die zweite Folge, beginnend mit Else ist optional; Sie können auch nur schreiben:
Case of
:(Boolean_Expression)
statement(s)
:(Boolean_Expression)
statement(s)
.
.
.
:(Boolean_Expression)
statement(s)
End case
Mit der Struktur Case of...Else...End case kann Ihre Methode wie bei der Struktur If...Else...End if zwischen alternativen Aktionen wählen. Im Gegensatz zur Struktur If...Else...End if prüft die Struktur Case of...Else...End case eine unbegrenzte Anzahl von Boolean Ausdrücken und führt bei einer wahren Bedingung eine Aktion aus.
Vor jedem Boolean Ausdruck steht ein Doppelpunkt (:). Die Kombination aus Doppelpunkt und Boolean Ausdruck kennzeichnet eine Bedingung. Beispiel:
:(bValidate=1)
Nur die Anweisungsfolge wird ausgeführt, die bei der Abfrage als erstes mit der Bedingung übereinstimmt. Trifft keine der Bedingungen zu, wird keine Anweisungsfolge ausgeführt.
Sie können nach der letzten Befehlsfolge eine Else Anweisung integrieren. Sind dann alle Bedingungen falsch, wird die Anweisungsfolge nach Else ausgeführt.
Dieses Beispiel prüft eine numerische Variable und zeigt eine Warnung mit einem Wort an:
Case of
:(vResult=1)
ALERT("Eins.")
:(vResult=2)
ALERT("Zwei.")
:(vResult=3)
ALERT("Drei.")
Else
ALERT("Es war weder eins, zwei oder drei.")
End case
Zum Vergleich folgt hier dieselbe Methode mit der Abfrage If...Else...End if:
If(vResult=1)
ALERT("Eins.")
Else
If(vResult=2)
ALERT("Zwei.")
Else
If(vResult=3)
ALERT("Drei.")
Else
ALERT("Es war weder eins, zwei oder drei.")
End if
End if
End if
Beachten Sie, dass bei der Struktur Case of...Else...End case nur die erste Bedingung, die WAHR ist, ausgeführt wird. Selbst wenn zwei oder mehr Bedingungen WAHR sind, werden nur die Befehlsfolgen nach der ersten wahren Bedingung ausgeführt.
Wollen Sie demnach in derselben Methode einfache und komplexe Bedingungen prüfen, müssen Sie die komplexen vor die einfachen Bedingungen setzen, da diese sonst nie ausgeführt werden könnten. Schreiben Sie z.B.:
Case of
:(vResult=1)
...
:((vResult=1) & (vRequest#2))
...
werden die der komplexen Bedingung zugeordneten Anweisungen nie ausgeführt. Denn dieser Fall ist nur WAHR, wenn die beiden booleschen Bedingungen wahr sind. Nun ist jedoch die erste Bedingung die vorangestellte einfache Bedingung. Wenn sie WAHR ist, wird die einfache Bedingung ausgeführt und 4D verlässt die Schleife, ohne die komplexe Bedingung zu bewerten. Das geschieht nur, wenn Sie Ihre Methode folgendermaßen strukturieren:
Case of
:(vResult=1) & (vRequest#2)
...
:(vResult=1)
...
End case
Tipp: Sie können auch Schleifen ohne Befehlsfolge einrichten. Wenn Sie einen Algorithmus oder eine spezifische Anwendung entwickeln, können Sie auch schreiben:
Case of
:(Boolean_Expression)
:(Boolean_Expression)
.
.
:(Boolean_Expression)
statement(s)
Else
statement(s)
End case
oder:
Case of
:(Boolean_Expression)
:(Boolean_Expression)
statement(s)
.
.
:(Boolean_Expression)
statement(s)
Else
End case
oder:
Case of
Else
statement(s)
End case