5.4 Case Statements
1
A
case_statement
selects for execution one of a number of alternative
sequences_of_statements;
the chosen alternative is defined by the value of an expression.
Syntax
2
3
Name Resolution Rules
4
Legality Rules
5
6
The possible values of the
expression
shall be covered as follows:
7
8
9
- Otherwise, each value of the base
range of the type of the expression
shall be covered (either explicitly or by others).
10
Dynamic Semantics
11
12
13
Otherwise
(the value is not covered by any
discrete_choice_list,
perhaps due to being outside the base range), Constraint_Error is raised.
14
4 The execution of a
case_statement
chooses one and only one alternative. Qualification of the expression
of a
case_statement
by a static subtype can often be used to limit the number of choices
that need be given explicitly.
Examples
15
Examples of case
statements:
16
case Sensor is
when Elevation => Record_Elevation(Sensor_Value);
when Azimuth => Record_Azimuth (Sensor_Value);
when Distance => Record_Distance (Sensor_Value);
when others => null;
end case;
17
case Today is
when Mon => Compute_Initial_Balance;
when Fri => Compute_Closing_Balance;
when Tue .. Thu => Generate_Report(Today);
when Sat .. Sun => null;
end case;
18
case Bin_Number(Count) is
when 1 => Update_Bin(1);
when 2 => Update_Bin(2);
when 3 | 4 =>
Empty_Bin(1);
Empty_Bin(2);
when others => raise Error;
end case;