Sentencia case (proceso por casos)

Explicación

Una sentencia case selecciona la ejecución alternativa entre varias secuencias de sentencias. La elección de la sentencia se realiza en función del resultado de una expresión que debe ser de un tipo discreto. La secuencia de sentencias que se ejecutará es la que tenga asociada la discrete_choice que coincida con el resultado de la expresión (o la asociada con la opción others, si el resultado de la expresión no casa con ninguna otra de las opciones).

Sintaxis

case expression is
   case_statement_alternative
   {case_statement_alternative}
end case;

case_statement_alternative ::= 
   when discrete_choice_list =>
      sequence_of_statements

discrete_choice_list ::= discrete_choice {| discrete_choice}

discrete_choice ::= expression | discrete_range | others
discrete_range ::= discrete_subtype_indication | rango

Ejemplo

case Mes is
   when 1 | 3 | 5 | 7 | 8 | 10 | 12 => Días := 31;
   when 2 => Días := 28;
   when others => Días := 30;
end case;
case Día is
   when 1 .. 5 => Put_Line ("Trabajo");
   when 6 | 7  => Put_Line ("Descanso");
end case;

Véase