A CASE statement has the form:
CASE Expr OF
L_1 => S_1
| ...
| L_n => S_n
ELSE S_0
END
where Expr is an expression whose type is an ordinal type and each
L is a list of constant expressions or ranges of constant expressions
denoted by ``e_1..e_2'', which represent the values from e_1 to
e_2 inclusive. If e_1 exceeds e_2, the range is empty.
It is a static error if the sets represented by any two L's overlap or
if the value of any of the constant expressions is not a member of the type of
Expr. The ``ELSE S_0'' is optional.
The statement evaluates Expr. If the resulting value is in any
L_
, then S_
is executed. If the value is in no
L_
and ``ELSE S_0'' is present, then it is executed. If the
value is in no L_
and ``ELSE S_0'' is absent, a checked
runtime error occurs.