Version 6.0
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.
Beispiel
Dieses Beispiel prüft eine numerische Variable und zeigt eine Warnung mit einem Wort an:
Case of : (vResult = 1) ` Prüfe, ob die Nummer gleich 1 ist ALERT("Eins.") ` Wenn ja, zeige eine Warnung : (vResult = 2) ` Prüfe, ob die Nummer gleich 2 ist ALERT("Zwei.") ` Wenn ja, zeige eine Warnung : (vResult = 3) ` Prüfe, ob die Nummer gleich 3 ist ALERT("Drei.") ` Wenn ja, zeige eine Warnung Else ` Ist es weder 1, 2 oder 3, zeige eine Warnung 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) ` Prüfe, ob die Nummer gleich 1 ist ALERT("Eins.") ` Wenn ja, zeige eine Warnung Else If (vResult = 2) ` Prüfe, ob die Nummer gleich 2 ist ALERT("Zwei.") ` Wenn ja, zeige eine Warnung Else If (vResult = 3) ` Prüfe, ob die Nummer gleich 3 ist ALERT("Drei.") `Wenn ja, zeige eine Warnung Else ` Ist es weder 1, 2 oder 3, zeige eine Warnung 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) ... `Instruction(s) : ((vResult = 1) & (vRequest#2)) ` Die nachfolgenden Anweisungen werden NIE ausgeführt ... `Instruction(s)
End case
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) ` Komplexe Bedingungen müssen immer an erster Stelle stehen ... `Instruction(s) : (vResult = 1) ... `Instruction(s) End case
Tip: 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
Referenz
Ablaufsteuerung, For...End for, If...Else...End if, Repeat...Until, While...End while.