A instrução EVALUATE é a estrutura de decisão múltipla do COBOL, equivalente ao SWITCH de outras linguagens, mas ainda mais poderosa. Ela permite substituir diversas instruções IF aninhadas por uma estrutura mais clara e organizada.

📌 Para que serve

  • Tomar decisões com múltiplas possibilidades.

  • Avaliar constantes, expressões, condições ou mesmo lógica booleana (TRUE/FALSE).

  • Melhorar a legibilidade de decisões complexas.

  • Substituir múltiplos IF / ELSE IF / ELSE.

🧾 Sintaxe básica

EVALUATE expressão-ou-condição
    WHEN condição-1
        instruções-1
    WHEN condição-2
        instruções-2
    ...
    WHEN OTHER
        instruções-padrão
END-EVALUATE.

✅ Palavras-chave úteis

Palavra-chave Significado
WHEN Define o valor ou condição esperada.
OTHER Executado se nenhuma das condições anteriores for satisfeita.
THRU / THROUGH Define um intervalo de valores para a condição.
TRUE / FALSE Permite avaliação booleana explícita.
ANY Aceita qualquer valor (corresponde a qualquer entrada).
NOT Inverte uma condição ou valor lógico.

🔍 Exemplos

Exemplo 1 – Avaliação de entrada

EVALUATE MENU-OPCAO
    WHEN "1"
        PERFORM CONSULTAR-CLIENTE
    WHEN "2"
        PERFORM CADASTRAR-CLIENTE
    WHEN "3" THRU "5"
        PERFORM EXCLUIR-CLIENTE
    WHEN OTHER
        DISPLAY "Opção inválida!"
END-EVALUATE.

Exemplo 2 – Avaliação booleana

EVALUATE TRUE
    WHEN NOT CLIENTE-ENCONTRADO
        DISPLAY "Cliente não encontrado."
    WHEN CLIENTE-ATIVO
        DISPLAY "Cliente ativo."
    WHEN OTHER
        DISPLAY "Situação desconhecida."
END-EVALUATE.

Exemplo 3 – Equivalente com IF

IF MENU-OPCAO = "1"
    PERFORM CONSULTAR-CLIENTE
ELSE IF MENU-OPCAO = "2"
    PERFORM CADASTRAR-CLIENTE
ELSE IF MENU-OPCAO >= "3" AND MENU-OPCAO <= "5"
    PERFORM EXCLUIR-CLIENTE
ELSE
    DISPLAY "Opção inválida!"
END-IF.

⚠️ Considerações

  • Apenas um único assunto pode ser avaliado por EVALUATE.

  • Não é permitido WHEN sem instruções associadas.

  • Operações com NATIONAL podem exigir conversão para Unicode.

  • Em programas otimizados, variáveis eliminadas pelo compilador podem não estar disponíveis para avaliação.

  • Ideal para manter a lógica estruturada, evitando o uso de ALTER ou GO TO.

 

✅ Conclusão

A instrução EVALUATE é uma ferramenta poderosa para simplificar decisões complexas em COBOL, tornando o código mais limpo, estruturado e legível. Seu uso é recomendado em substituição a vários IF encadeados, sendo compatível com expressões, condições e até intervalos de valores.