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