Declaración ST: CASE
La declaración CASE es una estructura de control condicional que hace que una declaración o una sección de una declaración se ejecute solo bajo una condición específica. La sección que se ejecuta se determina comparando la condición y la etiqueta.
Sintaxis:
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
| Variable entera para la condición Ejemplo: El valor de las variables se compara con las etiquetas declaradas en la construcción. Se puede utilizar cualquier número de etiquetas (mínimo: 2) dentro de una declaración CASE. De lo contrario, la construcción se puede mostrar más claramente con una construcción IF-THEN-ELSE. Todas las etiquetas deben tener valores diferentes. |
| Expresión constante, literal o constante con el mismo tipo de datos que la condición Actúa como una etiqueta (objetivo de salto) dentro de la construcción CASE. Ejemplo: Si este valor es igual a condición, luego se ejecutan las siguientes declaraciones. Si este valor no es igual a condición, entonces se ignora la declaración respectiva y el sistema salta a la siguiente etiqueta. |
| Lista separada por comas con múltiples etiquetas que actúan como objetivos de salto Ejemplo: Si una de las etiquetas coincide con la condición condición, luego se ejecuta la siguiente sección. |
| Rango con etiqueta de límite inferior y superior
Si la condición condición toma un valor del rango de etiqueta-n1 a etiqueta-n2, luego se ejecuta la siguiente sección. |
| Opcional, máximo una vez Objetivo de salto predeterminado al que se salta si todas las etiquetas anteriores no coincide con la condición. |
| Declaración o segmento de declaración que consta de varias declaraciones Una declaración siempre termina con un punto y coma ( |
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