Executar um entre vários blocos de comandos dependendo de uma condição.
DO CASE
CASE <exp.L1>
<comandos>
[CASE <exp.L2>
<comandos>
...]
[OTHERWISE
<comandos>]
ENDCASE
Cada condição <exp.L> é testada seqüencialmente.
Os testes param na primeira condição verdadeira(.T.).
Neste caso, o conjunto subseqüente de comandos é executado e o comando CASE é encerrado.
A presença do comando OTHERWISE determina a execução de um conjunto de comandos caso nenhuma das condições anteriores tenham sido satisfeitas.
Para desviar o fluxo do programa, em decorrência de condições pré-definidas. É uma alternativa aos IFs aninhados.
EXEMPLO
O exemplo a seguir mostra como executar um conjunto de comandos dependendo da escolha de um MENU.
escolha = 0
* mostra um menu de opções
@ 05,10 PROMPT " incluir "
@ 07,10 PROMPT " alterar "
@ 09,10 PROMPT " excluir "
* obtém a opcao escolhida
MENU TO escolha
* executa a ação escolhida
DO CASE
CASE escolha = 0
MESSAGE " procedimento de inclusão "
DO inclui && Executa procedimento.
CASE escolha = 1
MESSAGE " procedimento de alteração "
DO altera && Executa procedimento.
CASE escolha = 2
MESSAGE " procedimento de exclusão "
DO exclui && Executa procedimento.
OTHERWISE
CLEAR && Limpa a tela do terminal.
MESSAGE "fim de programa" BLINK
QUIT(0)
ENDCASE
CC PROC, DO WHILE, IF, MENU TO, SET EXACT, CHR( ) e IIF( ).