ST-Anweisung CASE
Die CASE-Anweisung verwenden Sie, um mehrere bedingte Anweisungen mit derselben Bedingungsvariablen in einem Konstrukt zusammenzufassen.
Syntax:
CASE <condition> OF
<label-1> :
<instruction-1>
<label-2> :
<instruction-2>
<label-3, label-4, label-5> :
<instruction-3>
<label-6 .. label-10> :
<instruction-4>
...
<label-n> :
<instruction-n>
ELSE
<ELSE-instruction>}
END_CASE;
| Ganzzahlige Variable für die Bedingung Beispiel: Der Wert der Variablen wird mit den im Konstrukt deklarierten Labels verglichen. Innerhalb einer CASE-Anweisung sind beliebig viele, mindestens jedoch zwei Labels zu verwenden. Ansonsten kann das Konstrukt übersichtlicher mit einem IF-THEN-ELSE-Konstrukt dargestellt werden. Alle Labels müssen unterschiedliche Werte haben. |
| Konstante, Literal oder konstanter Ausdruck mit gleichem Datentyp wie die Bedingung Fungiert als Label (Sprungziel) innerhalb des CASE-Konstrukts. Beispiel: Wenn dieser Wert gleich Wenn dieser Wert ungleich |
| Kommaseparierte Liste mit mehreren Labels, die als Sprungziel fungieren. Beispiel: Wenn eines der Labels mit der Bedingung |
| Bereich mit unterem und oberem Grenzlabel
Wenn die Bedingung condition einen Wert aus dem Bereich von |
| Optional, maximal einmal Default-Sprungziel, das angesprungen wird, wenn alle vorherigen Labels nicht mit der Bedingung übereinstimmen. |
| Anweisung oder Anweisungsabschnitt bestehend aus mehreren Anweisungen. Eine Anweisung ist immer mit einem „ |
Abarbeitungsschema einer CASE-Anweisung:
- Wenn die Variable <condition> den Wert von <label-n> hat, wird die Anweisung <instruction-n> ausgeführt.
- Wenn die Variable <condition> keinen der angegebenen Werte hat, dann wird die <ELSE-instruction> ausgeführt.
- Wenn für mehrere Werte der Variablen dieselbe Anweisung auszuführen ist, können Sie diese Werte durch Kommata getrennt hintereinanderschreiben.
Beispiel:
CASE nVar OF
1,5 :
bVar1 := TRUE;
bVar3 := FALSE;
2 :
bVar2 := FALSE;
bVar3 := TRUE;
10..20 :
bVar1 := TRUE;
bVar3 := TRUE;
ELSE
bVar1 := NOT bVar1;
bVar2 := bVar1 OR bVar2;
END_CASE;