Оператор Case
Оператор Case определяет список альтернативных вариантов, которые могут быть активизированы в зависимости от значения переменной, группы или выражения, следующего за ключевым словом CASE.
Следующий пример демонстрирует использование оператора Case:
CASE f[].q IS
WHEN H"00" =>
addr[] = 0;
s = a & b;
WHEN H"01" =>
count[].d = count[].q + 1;
WHEN H"02", H"03", H"04" =>
f[3..0].d = addr[4..1];
WHEN OTHERS =>
f[].d = f[].q;
END CASE;
Оператор Case имеет следующие характеристики:
¨ Булевское выражение, группа или конечный автомат располагаются между ключевыми словами CASE и IS (в примере, показанном выше, это f[ ].q).
¨ Оператор Case завершается ключевыми словами END CASE за которыми следует символ (;).
¨ Телом оператора Case является список из одного или более неповторяющихся альтернативных вариантов, следующих за ключевым словом WHEN. Каждому альтернативному варианту предшествует ключевое слово WHEN.
¨ Каждый альтернативный вариант представляет собой одно или более отделенных друг от друга запятыми значений констант, за которыми следует символ (=>).
¨ Если значение булевского выражения, стоящего за ключевым словом CASE, соответствует какому - либо альтернативному варианту, то все операторы, следующие за соответствующим символом (=>) активизируются. В примере, приведенном выше, если f[ ].q равно h”01”, то активизируется булевское выражение count[ ].d = count[ ].q + 1.
¨ Если значение булевского выражения, стоящего за ключевым словом CASE не равно ни одному из альтернативных вариантов, то активизируется альтернативный вариант, стоящий за ключевыми словами WHEN OTHERS. В примере, показанном выше, если значение f[ ].q не равно H”00”, H’01” или H”CF”, то активизируется выражение f[ ].d = f[].q.
¨ Оператор Defaults определяет значение по умолчанию для тех случаев, когда ключевые слова WHEN OTHERS не используются.
¨ Если оператор Case используется для определения переходов конечного автомата, то ключевые слова WHEN OTHERS не могут использоваться для выхода из недопустимых состояний. Если состояния конечного автомата определяются n -мерным кодом и при этом автомат имеет 2^n состояний, то использование ключевых слов WHEN OTHERS является допустимым.
¨ Каждый альтернативный вариант должен заканчиваться символом (;).