Skip to main content

ST-Anweisung: CASE

Die CASE-Anweisung ist eine bedingte Kontrollstruktur, die bewirkt, dass eine Anweisung oder ein Anweisungsabschnitt nur unter einer bestimmten Bedingung ausgeführt wird. Welcher Abschnitt ausgeführt wird, wird durch einen Vergleich von Bedingung und Label bestimmt.

Syntax:

CASE <condition> OF
    <label-1> : 
        <instruction-1>
    <label-2> : 
        <instruction-2>
    <label-3, label-4, label-5> : 
        <instruction-3>
    <label-6 .. labe-10> : 
        <instruction-4>
    <label-n> : 
        <instruction-n>
    ELSE <ELSE-instruction>
END_CASE

condition

Ganzzahlige Variable für die Bedingung

Beispiel: iCondition

Der Wert der Variablen wird mit den im Konstrukt deklarierten Labels verglichen.

Innerhalb einer CASE-Anweisung sind beliebig viele mindestens jedoch 2 Labels zu verwenden. Ansonsten kann das Konstrukt übersichtlicher mit einem IF-THEN-ELSE-Konstrukt dargestellt werden.

Alle Labels müssen unterschiedliche Werte haben.

label-n

Konstante, Literal oder konstanter Ausdruck mit gleichem Datentyp wie die Bedingung

Fungiert als Label (Sprungziel) innerhalb des CASE-Konstrukts.

Beispiel: 1, 5, c_ONE, c_TWO

Wenn dieser Wert gleich condition ist, wird die nachfolgende Anweisungen durchlaufen.

Wenn dieser Wert ungleich condition ist, wird die zugehörige Anweisung ignoriert und es wird zum nächsten Label gesprungen.

<label-n >, < label-n1>

Komma-separierte Liste mit mehreren Labels, die als Sprungziel fungieren

Beispiel: 1, 5

Wenn eines der Labels mit der Bedingung condition übereinstimmt, wird der nachfolgende Abschnitt durchlaufen.

<label-n1>..<label-n2>

Bereich mit unterem und oberem Grenzlabel

10..20

Wenn die Bedingung condition einen Wert aus dem Bereich von label-n1 bis label-n2 annimmt, wird der folgende Abschnitt durchlaufen.

ELSE

Optional, maximal einmal

Default-Sprungziel, das angesprungen wird, wenn alle vorherigen Labels nicht mit der Bedingung übereinstimmen.

instruction-n

ELSE-instruction

Anweisung oder Anweisungsabschnitt bestehend aus mehrere Anweisungen

Eine Anweisung ist immer abgeschlossen mit einem ;

Beispiel 72. Beispiel
CASE iCondition OF
    1, 5, c_ONE, C_TWO: 
        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