2.3.17 Case

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_$i$, then S_$i$ is executed. If the value is in no L_$i$ and ``ELSE S_0'' is present, then it is executed. If the value is in no L_$i$ and ``ELSE S_0'' is absent, a checked runtime error occurs.



m3-support@elego.de