5.4 Case Statements
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
Name Resolution Rules
Legality Rules
The possible values of the
selecting_expression
shall be covered (see
3.8.1) as follows:
Otherwise, each value of the base range of the
type of the
selecting_expression
shall be covered (either explicitly or by
others).
Dynamic Semantics
Otherwise (the value is not covered
by any
discrete_choice_list,
perhaps due to being outside the base range), Constraint_Error is raised.
NOTE 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 can be given explicitly.
Examples
Examples of case
statements:
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;
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;
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;
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe