Lições do módulo (2/2)
Decisões com IF e EVALUATE
A tomada de decisão em COBOL é realizada principalmente usando a instrução condicional IF e a estrutura de seleção multi-ramificação EVALUATE (análoga a switch ou match em linguagens modernas).
A declaração condicional IF
A sintaxe fundamental da instrução IF é:
IF condition
statements-if-true
ELSE
statements-if-false
END-IF.Nas versões modernas do COBOL (COBOL-85 e posteriores), a instrução deve terminar explicitamente com END-IF. em vez de depender apenas do período final ., reduzindo significativamente os erros de análise e lógica.
Condições Comuns
- Maior que:
>ouGREATER THAN - Menor que:
<ouLESS THAN - Igual a:
=ouEQUAL TO - Maior ou igual a:
>=ouGREATER THAN OR EQUAL TO - Menor ou igual a:
<=ouLESS THAN OR EQUAL TO
IF WS-BALANCE < 0
DISPLAY "OVERDRAWN"
ELSE
DISPLAY "ACCOUNT ACTIVE"
END-IF.A declaração AVALIAR
Quando precisamos comparar uma variável com vários valores discretos, as instruções IF aninhadas podem se tornar complexas. A instrução EVALUATE resolve isso estruturando as opções de maneira limpa:
EVALUATE WS-USER-ROLE
WHEN "ADMIN"
DISPLAY "FULL ACCESS"
WHEN "EDITOR"
DISPLAY "EDIT ACCESS"
WHEN OTHER
DISPLAY "LIMITED ACCESS"
END-EVALUATE.WHEN OTHER: Identifica o branch substituto (equivalente adefaultou oelsefinal em linguagens modernas).END-EVALUATE.: Fecha a estrutura.
Experimente você mesmo
Escreva um bloco IF-ELSE-END-IF que verifique se a variável WS-USER-AGE é maior ou igual a 18. Se verdadeiro, imprima 'ADULT', caso contrário imprima 'MINOR' usando DISPLAY.
Mostrar dica
Use >= para comparação, DISPLAY para saída e END-IF. (com o ponto no final do bloco).
Solução disponível após 3 tentativas
Complete a estrutura EVALUATE para verificar a variável WS-STATUS. Se o valor for 'A' imprima 'ATIVO', se for 'I' imprima 'INATIVO', caso contrário, para qualquer outro valor imprima 'DESCONHECIDO'.
Mostrar dica
Escreva cada ramificação WHEN seguida por seu DISPLAY e use WHEN OTHER para lidar com o substituto.
Solução disponível após 3 tentativas