| Bellacosa Mainframe e o teste de cobol para padawan |
☕ O Dia em que um Padawan COBOL Enfrentou o Teste Avançado… e Descobriu os Segredos do Mainframe
“Muito antes de microservices, Kubernetes e modinhas passageiras, havia tabelas OCCURS, SORTs colossais e programas que movem bilhões… silenciosamente.”
Se você é um Padawan do COBOL, prepare seu café ☕ — hoje vamos atravessar uma jornada digna de Jedi Mainframe.
Este artigo é inspirado em um cenário real: um teste avançado de COBOL cobrindo tabelas, SORT, subprogramas, comunicação interprogramas e OO COBOL.
E sim… isso é exatamente o que sustenta bancos, seguradoras e governos.
🧠 Capítulo 1 — A Força das Tabelas OCCURS
Todo Padawan descobre cedo que:
COBOL não tem “arrays”… tem tabelas.
Exemplo clássico:
01 Salary-Table.
02 Salary PIC 9(4) OCCURS 100 TIMES.
Para zerar a tabela:
MOVE 1 TO Counter
PERFORM UNTIL Counter > 100
MOVE 0 TO Salary(Counter)
ADD 1 TO Counter
END-PERFORM
🧩 Easter Egg #1 — O jeito Jedi
Um Mestre COBOL faria:
INITIALIZE Salary-Table
💥 Mesma coisa. Menos CPU. Mais elegância.
🏥 Capítulo 2 — Tabelas Multinível: O Labirinto dos Índices
Considere:
01 Patient-Table.
02 Ward OCCURS 10 TIMES.
03 Patient OCCURS 120 TIMES.
04 Patient-Name PIC X(50).
Para acessar:
Patient-Name(ward-index, patient-index)
👉 Ordem: de fora para dentro
⚠️ Pegadinha mortal
Se errar a ordem ou quantidade de subscritos:
💥 Pode sobrescrever memória
💥 Pode causar S0C4
💥 Pode derrubar um batch inteiro às 3h da manhã
⚡ Capítulo 3 — Índices vs Subscripts: Velocidade da Luz
Padawans usam:
Salary(5)
Mestres usam:
SET idx TO 5
Salary(idx)
Porque:
| Característica | Subscript | Index |
|---|---|---|
| Tipo | Número | Offset |
| Performance | Média | Alta |
| Uso em SEARCH ALL | ❌ | ✅ |
🧩 Easter Egg #2
Índices não podem receber MOVE:
MOVE 1 TO idx *> ERRO
SET idx TO 1 *> CORRETO
🔍 Capítulo 4 — SEARCH vs SEARCH ALL
🐢 SEARCH (sequencial)
Procura um a um.
🚀 SEARCH ALL (binário)
Divide ao meio repetidamente.
Mas exige:
✔️ Tabela ordenada
✔️ Índice
✔️ Chave correta
Exemplo:
SEARCH ALL Stock
WHEN Stock-Symbol(idx) = "IBM"
PERFORM Found
END-SEARCH
🧩 Curiosidade histórica
Em grandes bancos:
SEARCH ALL pode reduzir milhões de comparações para poucas dezenas.
🔄 Capítulo 5 — SORT: O Motor Invisível do Batch
O SORT interno envolve três arquivos:
1️⃣ Entrada
2️⃣ Work file (SD)
3️⃣ Saída
SORT Sort-Work
ON ASCENDING KEY Customer-ID
USING Input-File
GIVING Output-File
🔥 Regra de ouro
O Sort Work File:
❌ Não é aberto
❌ Não é fechado
❌ Não é manipulado diretamente
👉 O sistema cuida disso.
🧪 Capítulo 6 — INPUT/OUTPUT PROCEDURE: Magia Avançada
Sem USING/GIVING, você controla tudo:
Entrada → RELEASE
RELEASE Sort-Record
Saída → RETURN
RETURN Sort-Work
💡 Isso permite filtrar, transformar ou gerar dados durante o SORT.
🧩 Capítulo 7 — Subprogramas: Modularidade Jedi
Chamador:
CALL "PROCESS-1" USING parm-area
Subprograma:
LINKAGE SECTION.
01 parm-area PIC X(100).
PROCEDURE DIVISION USING parm-area.
🔥 Regra importante
Por padrão:
👉 Parâmetros são BY REFERENCE
👉 Alterações retornam ao chamador
🌐 Capítulo 8 — Comunicação entre Programas
Tipos de dados compartilhados:
| Tipo | Escopo |
|---|---|
| GLOBAL | Programa + subprogramas embedded |
| EXTERNAL | Todo o run unit |
| LOCAL | Apenas o programa |
🧩 Easter Egg #3
EXTERNAL é como memória compartilhada “secreta” entre módulos.
Usar demais = pesadelo de manutenção.
🧬 Capítulo 9 — OO COBOL: O Lado Moderno da Força
Sim, COBOL também tem:
✔️ Classes
✔️ Objetos
✔️ Herança
✔️ Métodos
✔️ Factory
Exemplo simplificado:
CLASS-ID. Account.
FACTORY.
WORKING-STORAGE SECTION.
01 Interest PIC 9V99.
OBJECT.
WORKING-STORAGE SECTION.
01 Balance PIC 9(7)V99.
🔥 Diferença crucial
| Seção | Papel |
|---|---|
| FACTORY | Nível classe (static) |
| OBJECT | Nível instância |
⚔️ Capítulo 10 — INVOKE vs CALL
Padawan erra:
CALL obj "method"
Mestre usa:
INVOKE obj "method"
👉 CALL → programas
👉 INVOKE → métodos OO
☕ Epílogo — O Verdadeiro Poder do COBOL
Após atravessar tabelas, SORTs, subprogramas e OO…
O Padawan percebe:
COBOL não é antigo.
COBOL é maduro.
Ele roda onde:
💰 O dinheiro circula
🏦 As transações acontecem
🌍 O mundo confia
🧠 Curiosidade Final (Easter Egg Supremo)
Estima-se que:
Mais de 70% das transações financeiras globais ainda passam por sistemas COBOL.
Enquanto você lia este artigo…
Provavelmente bilhões foram movimentados por código parecido com os exemplos acima.
🚀 Se você chegou até aqui…
Você já não é apenas um Padawan.
Está iniciando o caminho para:
Sem comentários:
Enviar um comentário