Pular para o conteúdo principal
Módulo 2 · Lição 2 de 24/10 no curso~12 min
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 é:

COBOL
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: > ou GREATER THAN
  • Menor que: < ou LESS THAN
  • Igual a: = ou EQUAL TO
  • Maior ou igual a: >= ou GREATER THAN OR EQUAL TO
  • Menor ou igual a: <= ou LESS THAN OR EQUAL TO
COBOL
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:

COBOL
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 a default ou o else final em linguagens modernas).
  • END-EVALUATE.: Fecha a estrutura.

Experimente você mesmo

Exercício#cobol.m2.l2.e1
Tentativas: 0Carregando…

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.

Carregando editor…
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

Exercício#cobol.m2.l2.e2
Tentativas: 0Carregando…

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'.

Carregando editor…
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