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. 
 
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
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