📊 Tabela de Erros Comuns no COBOL 4.x
(O museu do código que sobreviveu por sorte)
“COBOL 4 não perdoa erros…
ele apenas adia a cobrança.”
— Bellacosa
🟥 ERROS DE DADOS E NUMÉRICOS (os mais perigosos)
| Erro comum | Por que acontece no COBOL 4 | Sintoma clássico | Risco real |
|---|---|---|---|
| MOVE alfanumérico → numérico sem validação | COBOL 4 é permissivo | Resultado “estranho” | Dados corrompidos |
| Campo COMP com lixo | Falta de NUMCHECK | Valor inválido silencioso | ABEND S0C7 |
| Campo não inicializado | WORKING-STORAGE “herdada” | Resultado imprevisível | Erro intermitente |
| Truncamento implícito | Falta de TRUNC | Perda de centavos | Erro contábil |
| Uso errado de PIC | PIC não condiz com o dado | MOVE aceita | Cálculo errado |
🥚 Easter-egg:
“Nunca deu problema” é o sintoma mais comum.
🟧 ERROS DE CONTROLE DE FLUXO
| Erro comum | Por que passa no COBOL 4 | Sintoma | Consequência |
|---|---|---|---|
| PERFORM sem END-PERFORM | Sintaxe antiga aceita | Loop infinito | CPU 100% |
| GO TO cruzando lógica | Permitido | Fluxo ilegível | Bug fantasma |
| PERFORM THRU mal definido | Dependência de labels | Execução indevida | Lógica quebrada |
| IF sem END-IF | Ambiguidade | Decisão errada | Regra violada |
Bellacosa rule:
Se tem GO TO, alguém já chorou por isso.
🟨 ERROS DE ARQUIVOS (Batch Killers)
| Erro comum | Causa típica | Sintoma | Impacto |
|---|---|---|---|
| FILE STATUS ignorado | “Sempre abre” | JOB termina normal | Dados errados |
| READ sem AT END | Pressuposto errado | Loop infinito | Batch travado |
| WRITE sem verificação | Falta de validação | Arquivo inconsistente | Reprocessamento |
| OPEN errado | Copybook confuso | Abend S013/S213 | Job abortado |
🥚 Easter-egg de produção:
O JOB “rodou verde”, mas gerou arquivo vazio.
🟦 ERROS DE MEMÓRIA E STORAGE
| Erro comum | Por que ocorre | Sintoma | Resultado |
|---|---|---|---|
| REDEFINES mal alinhado | Estrutura errada | Dado incoerente | Corrupção |
| OCCURS sem limites | Falta de índice | Leitura fora | S0C4 |
| INDEX mal usado | Mistura de tipos | Loop errado | Dados perdidos |
| DEPENDING ON inválido | Valor sujo | OCCURS errado | Overrun |
🟪 ERROS DE PERFORMANCES (invisíveis)
| Erro comum | Por que é ignorado | Sintoma | Custo |
|---|---|---|---|
| MOVE desnecessário | Código antigo | CPU alta | MIPS caro |
| Loop mal definido | Falta de controle | Batch lento | SLA estourado |
| Uso excessivo de DISPLAY | Debug legado | Lentidão | I/O inútil |
| Falta de OPTIMIZE | Padrão conservador | Código ineficiente | Mais CPU |
Bellacosa truth:
Performance ruim é bug financeiro.
🟫 ERROS DE COMPILAÇÃO (clássicos)
| Erro comum | COBOL 4 permite | Resultado | Perigo |
|---|---|---|---|
| Compilar sem SSRANGE | Default antigo | Overflow invisível | Crash futuro |
| Compilar sem NUMCHECK | Tolerância excessiva | Dado inválido | S0C7 |
| Ignorar warnings | “Não quebra” | Bug latente | Produção |
| TRUNC errado | Default histórico | Truncamento | Erro monetário |
☠️ ABENDS mais ligados a COBOL 4
| ABEND | Causa típica |
|---|---|
| S0C7 | Campo numérico inválido |
| S0C4 | Endereço inválido |
| S013 | Arquivo mal definido |
| S222 | Loop infinito |
| S0CB | Violação de storage |
🎓 Resumo para Padawans
✔ COBOL 4 funciona por tolerância
✔ Erros ficam escondidos
✔ Bugs surgem anos depois
✔ Migração para COBOL 5 revela tudo
🧠 Frase final Bellacosa™
“COBOL 4 não valida.
Ele confia.
E confiança sem validação é bug.”

.png)