Mostrar mensagens com a etiqueta sintaxe. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta sintaxe. Mostrar todas as mensagens

quinta-feira, 1 de janeiro de 2026

🧙♂️ COBOL para Padawans: EXIT, IF THEN ELSE e o Poder dos Condition-Names (nível 88)

 


🧙♂️ COBOL para Padawans: EXIT, IF THEN ELSE e o Poder dos Condition-Names (nível 88)

Salve jovem padawan em nosso primeiro artigo de 2026, vamos fazer uma revisão e um olhadela geral sobre o IBM Cobol, onde explico os primeiros passos, apresento algumas curiosidades, sintaxes, boas praticas e ajustes para evitar erros. Este artigo é o pontapé inicial de nossa jornada rumo a Jedi. Espero ajudar e qualquer duvida escreva nos comentarios, que terei o maior prazer em clarifica-las e expandir este artigo.


🌱 Introdução: quando o COBOL começa a fazer sentido

Todo padawan que pisa no mundo do IBM Mainframe COBOL cedo ou tarde tropeça nos mesmos pontos:

  • Para que serve esse tal de EXIT?

  • Por que existem tantos tipos de IF?

  • O que diabos é um nível 88 e por que os veteranos o defendem com unhas e dentes?

Este artigo existe para responder exatamente isso — não com teoria acadêmica, mas com sabedoria de produção, aquela adquirida depois de alguns abends, dumps e noites mal dormidas.



🚪 EXIT: o parágrafo solitário (mas fundamental)

O comando EXIT é simples, discreto e poderoso:

  • Deve ser codificado na margem B

  • É a única instrução do parágrafo

  • Marca explicitamente o fim de um parágrafo

300-FIM.
    EXIT.

Por que isso importa?

O EXIT:

  • Serve como destino de um PERFORM THRU

  • Evita execução acidental de parágrafos seguintes

  • Torna o fluxo do programa previsível

☠️ Easter-egg de produção: programas antigos sem EXIT são mestres em executar lógica indevida no fechamento do batch.


🔢 Parágrafos numerados: herança que ainda faz sentido

100-INICIO.
200-PROCESSA.
300-FIM.

Numerar parágrafos não é moda antiga — é organização mental:

  • Facilita leitura de dumps

  • Ajuda no debug em batch

  • Cria uma narrativa lógica no código

Bellacosa rule: batch bom é batch que conta uma história.


🔀 IF THEN ELSE: decisões no mundo real

O IF THEN ELSE permite que o COBOL escolha caminhos:

IF SALDO > 1000000
    PERFORM 300-MILIONARIOS
ELSE
    PERFORM 200-MENOS-RICOS
END-IF
  • Condição verdadeira → executa o bloco do IF

  • Condição falsa → executa o ELSE

😅 A maioria dos sistemas corporativos conhece bem o segundo caminho.


🚫 CONTINUE: quando não fazer nada é a melhor opção

IF EMPREGADO-PRESENTE
    CONTINUE
ELSE
    PERFORM 400-FERIAS
END-IF

CONTINUE é uma instrução nula — não faz nada, mas deixa claro que isso foi uma decisão consciente.

Dica de veterano: CONTINUE é mais elegante (e mais seguro) do que um IF vazio.


🏷️ Condition-Names (nível 88): o segredo do COBOL elegante

Os condition-names:

  • Usam o nível 88

  • Representam valores válidos de um campo

  • Tornam o código autoexplicativo

🚗 Exemplo clássico: oficina mecânica

01 TIPO-VEICULO        PIC X.
   88 SEDAN            VALUE 'S'.
   88 SUV              VALUE 'U'.
   88 CAMINHAO         VALUE 'C'.
IF SEDAN OR SUV OR CAMINHAO
    PERFORM CONSERTA-VEICULO
ELSE
    PERFORM RECUSA-SERVICO
END-IF

Aqui o código fala português claro.


🧠 Regras de ouro do nível 88

✔ Não usa PIC ✔ Pode ter valores simples ou múltiplos ✔ O nome deve ser único no programa ✔ É semântica pura — valor com significado


🔢 Par ou ímpar sem dor de cabeça

01 IN-INTEGER          PIC 9.
   88 NUMERO-PAR       VALUE 2 4 6 8.
   88 NUMERO-IMPAR     VALUE 1 3 5 7 9.
IF NUMERO-PAR
    PERFORM PAR-PROCESSO
ELSE
    PERFORM IMPAR-PROCESSO
END-IF

Menos IFs, menos bugs, menos CPU.


📂 Fim de arquivo (EOF) como gente grande

01 FILE-SWITCH         PIC X VALUE 'N'.
   88 SEM-MAIS-DADOS   VALUE 'Y'.
PERFORM UNTIL SEM-MAIS-DADOS
    READ ARQUIVO
        AT END
            SET SEM-MAIS-DADOS TO TRUE
    END-READ
END-PERFORM

Sem gambiarras, sem flags mágicas.


✅ SET TO TRUE: o jeito profissional

Evite:

MOVE 'Y' TO FILE-SWITCH

Prefira:

SET SEM-MAIS-DADOS TO TRUE

✔ Mais legível ✔ Menos dependência de valores ✔ Mais fácil de manter


🧩 Os 4 tipos de condições no COBOL

1️⃣ Class Condition

IF CAMPO IS NUMERIC

Verifica o tipo do conteúdo.


2️⃣ Sign Condition

IF TOTAL-MULTAS IS ZERO

Verifica sinal: POSITIVE, NEGATIVE ou ZERO.


3️⃣ Relation Condition

IF TOTAL-PAGO = TOTAL-DEVIDO

Comparação direta entre campos.


4️⃣ Condition-Name Condition ⭐

IF NUMERO-IMPAR
    PERFORM IMPAR
ELSE
    PERFORM PAR
END-IF

A mais simples e poderosa.

🎵 Curiosidade: lembra a música de 1978 de Kenny Rogers — "Just Dropped In (To See What Condition My Condition Was In)".


🎯 Conclusão do El Jefe

Dominar EXIT, IF THEN ELSE e condition-names não é detalhe — é o que separa:

  • Código que apenas funciona

  • De código que sobrevive décadas em produção

👉 Menos IF encadeado 👉 Menos MOVE mágico 👉 Menos CPU 👉 Menos abend

Padawan que entende nível 88 está a meio caminho de virar Jedi do Mainframe.


Se curtiu, no próximo artigo podemos falar de:

  • Erros clássicos que só aparecem em produção

  • Como condition-names economizam MIPS

  • Padrões de código COBOL que envelhecem bem

Nos vemos no próximo batch. 🚀