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

Repost: 🧠 Debugando COBOL no Mainframe: O Caminho do Padawan

 

Debugando cobol no mainframe o caminho feliz do padawan



🐲 Origem dos Wyvern – O Dragão Alado dos Céus dos RPGs

 


🐲 Wyvern – O Dragão Alado dos Céus dos RPGs

🌍 Origem e História

O Wyvern é uma criatura lendária que surgiu na heráldica medieval europeia, especialmente na Inglaterra e no País de Gales.
Enquanto o dragão clássico era símbolo de poder e sabedoria em culturas orientais, o Wyvern ocidental representava força selvagem, pestilência e destruição.

A palavra vem do inglês arcaico wivere (serpente) e do francês vouivre — ambos ligados a criaturas serpentinas com asas.
Na Idade Média, cavaleiros estampavam wyverns em brasões como símbolo de coragem e vigilância — mas também como aviso de ferocidade.

Nos RPGs modernos (como Dungeons & Dragons, Final Fantasy e Dragon Quest), o Wyvern se consolidou como o “dragão menor”, uma versão mais ágil, mas menos inteligente, do dragão ancestral.


⚔️ Diferença entre Dragão e Wyvern

AtributoDragãoWyvern
Número de patas4 + asas2 + asas
InteligênciaAlta, fala e usa magiaInstintivo e animalesco
TamanhoGigantescoMédio a grande
Ataque típicoFogo, Gelo, MagiaCauda venenosa, voo e garras
NaturezaSábio, às vezes divinoSelvagem e territorial

🔹 Resumo: Se o dragão é um deus, o Wyvern é o predador.


💪 Atributos Típicos (em RPG Clássico)

AtributoValor aproximadoDescrição
Força🟥 8/10Garras e mordidas devastadoras
Defesa🟨 6/10Escamas resistentes, mas não impenetráveis
Velocidade🟩 9/10Extremamente ágil em voo
Inteligência🟦 3/10Agem por instinto, não por estratégia
Perigo🔥 7/10Uma ameaça séria em campo aberto
Elemento comumVento / VenenoAlguns cuspem ácido ou fogo leve

💡 Dica de Mestre: o Wyvern adora atacar de cima — prepare arqueiros e magos de longo alcance!


🧭 Curiosidades Bellacosa

  • 🐍 Representação Medieval: em brasões, um wyvern geralmente aparecia enrolado, mostrando domínio e vigilância.

  • ⚗️ Cauda Venenosa: diferente dos dragões, o Wyvern ataca com golpes de cauda envenenada, inspirados em escorpiões.

  • 🎮 Nos jogos:

    • Em Monster Hunter, o termo Wyvern é usado para quase toda espécie de “dragão menor”.

    • Em Skyrim, os “dragões” são tecnicamente wyverns, pois têm duas patas e asas integradas.

  • 🧙‍♂️ Em D&D, Wyverns são bestas não inteligentes, usadas como montaria por magos ou guerreiros das trevas.


🎯 Dicas para Jogadores

  • Evite lutar no ar. Wyverns dominam o espaço aéreo — atraia-o para o solo.

  • Use veneno contra veneno. Resistência a toxinas é essencial.

  • Aposte em gelo e raio. São fraquezas comuns.

  • Monte armadilhas. Se cair do céu, o dano de queda é devastador.


🛡️ Wyvern como Aliado

Em algumas campanhas ou jogos, um wyvern pode ser domado como montaria ou guardião de guilda — algo raro, mas épico.
Domar um exige:

  • Resistência mágica alta

  • Item lendário ou selo dracônico

  • Vínculo de sangue ou magia antiga


📜 Conclusão

O Wyvern é a ponte entre o animal e o mito — feroz, imponente e imprevisível.
Em RPGs, ele é o teste perfeito para separar aventureiros comuns de verdadeiros heróis.
Seu rugido não traz sabedoria, mas um lembrete simples:

“Nem todo dragão precisa falar para ser mortal.”