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;

condition

Ganzzahlige Variable für die Bedingung

Beispiel: nCondition

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.

label-n

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

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

Beispiel: 1, 5, eState1, eState2

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>

Kommaseparierte 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 mehreren Anweisungen.

Eine Anweisung ist immer mit einem „;“ abgeschlossen.

Abarbeitungsschema einer CASE-Anweisung:

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;