Pascal - Istruzione Nested Case

È possibile avere un file case statement come parte della sequenza di istruzioni di un file outer case statement. Anche se ilcase constants del caso interno ed esterno contengono valori comuni, non sorgeranno conflitti.

Sintassi

La sintassi per un'istruzione case annidata è la seguente:

case (ch1) of
   'A': begin
      writeln('This A is part of outer case' );
         case(ch2) of
            'A': writeln('This A is part of inner case' );
            'B': (* case code *)
            ...
         end; {end of inner case}
      end; (* end of case 'A' of outer statement *)
   'B': (* case code *)
   'C': (* case code *)
   ...
end; {end of outer case}

Esempio

Il seguente programma illustra il concetto.

program checknestedCase;
var
   a, b: integer;
begin
   a := 100;
   b := 200;
   
   case (a) of
      100: begin
         writeln('This  is part of outer statement' );
         case (b) of
            200: writeln('This  is part of inner statement' );
            end;
         end; 
      end;
   
   writeln('Exact value of a is : ', a );
   writeln('Exact value of b is : ', b );
end.

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

This is part of outer switch
This is part of inner switch
Exact value of a is: 100
Exact value of b is: 200