A sintaxe formal da estrutura de controle de fluxo é:
Case of
:(Expressão Booleana)
instrução(ções)
:(Expressão Booleana)
instrução(ções)
.
.
.
:(Expressão Booleana)
instrução(ções)
Else
instrução(ções)
End case
Observe que a parte Else é opcional, você pode escrever:
Case of
:(Expressão Booleana)
instrução(ções)
:(Expressão Booleana)
instrução(ções)
.
.
.
:(Expressão Booleana)
instrução(ções)
End case
Assim como a estrutura , a estrutura também permite que o seu método escolha entre alternativas de ação. Ao contrário da estrutura , a estrutura pode testar um número ilimitado de expressões booleanas e agir, dependendo de qual delas seja VERDADEIRA.
Cada expressão booleana é antecedida por dois pontos (:). Esta combinação de dois pontos e a expressão booleana é chamado de caso. Por exemplo, a linha a seguir é um caso:
:(bValidar=1)
Apenas as declarações seguintes do primeiro caso TRUE (e até o próximo caso) será executada. Se nenhum dos casos for VERDADEIRO, nenhuma das declarações será executada (se o Else não estiver incluído).
Você pode incluir uma declaração Else após o último caso. Se todos os casos são FALSOS, a declaração Else será executada.
Este exemplo testa uma variável numérica e exibe uma caixa de alerta com uma palavra nela:
Case of
:(vResult=1)
ALERT("um.")
:(vResult=2)
ALERT("dois.")
:(vResult=3)
ALERT("três.")
Else
ALERT("Não foi um, nem dois, nem três.")
End case
Para efeito de comparação, aqui é a versão do mesmo método:
If(vResult=1)
ALERT("Uno.")
Else
If(vResult=2)
ALERT("Dos.")
Else
If(vResult=3)
ALERT("Tres.")
Else
ALERT("Não foi um, nem dois, nem três.")
End if
End if
End if
Lembre-se que com uma estrutura Case of...Else...End case, apenas o primeiro caso TRUE é executado. Mesmo que dois ou mais casos sejam verdadeiros, apenas as instruções seguintes ao primeiro caso TRUE será executada.
Conseqüentemente, quando você deseja implementar testes hierárquico, deve certificar-se das declarações desde que sejam menores no esquema hierárquico aparecem primeiro na sequência do teste. Por exemplo, o teste para a presença da condition1 abrange o teste para a presença de condition1 & condition2 e deve ser localizado passado a sequência do teste. Por exemplo, o seguinte código nunca irá ver a sua última condição detectada:
Case of
:(vResult=1)
...
:((vResult=1) & (vCondição#2))
...
End case
.
No código acima, a presença do segundo requisito não é detectada já que o teste vResult = "1" é detectado antes de qualquer teste adicional. Para o código funcionar corretamente, você pode escrever como a seguir:
Case of
:((vResult=1) & (vCondição#2))
...
:(vResult=1)
...
End case
.
Além disso, se você quiser implementar testes hierárquicos, você pode considerar o uso de código hierárquico.
Conselho: Um teste condicional pode ser realizado sem instruções a serem executadas em um caso ou outro. Ao desenvolver um algoritmo ou uma aplicação especializada, nada o impede de escrever:
Case of
:(Expressão_Booleana)
:(Expressão_Booleana)
.
.
.
:(Expressão_Booleana)
instrução(ções)
Else
instrução(ções)
End case
ou:
Case of
:(Expressão_Booleana)
:(Expressão_Booleana)
instrução(ções)
.
.
.
:(Expressão_Booleana)
instrução(ções)
Else
End case
ou:
Case of
Else
instrução(ções)
End case