É possível ter um case statement como parte da sequência de instruções de um case statement. Mesmo se ocase constants do caso interno e externo contêm valores comuns, nenhum conflito surgirá.
Sintaxe
A sintaxe para uma instrução de caso aninhado é a seguinte -
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}
Exemplo
O programa a seguir ilustra o conceito.
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 o código acima é compilado e executado, ele produz o seguinte resultado -
This is part of outer switch
This is part of inner switch
Exact value of a is: 100
Exact value of b is: 200