Node:case Statement, Next:for Statement, Previous:if Statement, Up:Statements
case expression of selector: statement; ... selector: statement; endor, with alternative statement sequence:
case ordinal_expression of
selector: statement;
...
selector: statement;
otherwise { ``else'' instead of ``otherwise'' allowed }
statement;
...
statement;
end
or, as part of the invariant record type definition:
type
foo = record
field_declarations
case bar: variant_type of
selector: (field_declarations);
selector: (field_declarations);
...
end;
or, without a variant selector field,
type
foo = record
field_declarations
case variant_type of
selector: (field_declarations);
selector: (field_declarations);
...
end;
The case statement compares the value of ordinal_expression
to each selector, which can be a constant, a subrange, or a list of
them separated by commas, being compatible with the result of
ordinal_expression.
Note: duplicate selectors or range crossing is not allowed unless
{$borland-pascal} is specified. In case of
equality the corresponding statement is executed. If otherwise
is specified and no appropriate selector matched the expression, the
series of statements following otherwise is executed. As a synonym
for otherwise, else can be used. The semicolon before
otherwise is optional.
@@ ???? The expression must match one of the selectors in order to continue, unless an alternative statement series is specified.
For case in a variant record type definition, see Record Types.