A CASE
statement has the form:
CASE Expr OF L_1 => S_1 | ... | L_n => S_n ELSE S_0 ENDwhere
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.