🧠 Erros Clássicos que Só Aparecem em Produção
COBOL IBM Mainframe – Manual de Sobrevivência do Padawan
“Em DEV tudo funciona.
Em HOMO quase tudo funciona.
Em PROD… a verdade aparece.”
☠️ 1. S0C7 Fantasma (o mais famoso)
🔥 Sintoma
-
Job rodou meses sem erro
-
Um belo dia: S0C7
🎯 Causa real
-
Campo numérico não inicializado
-
Registro vazio vindo de PROD
-
Arquivo com dado “zoado” (espaço onde deveria ser número)
💀 Por que só em PROD?
-
DEV não tem dados sujos
-
PROD tem histórico de 20 anos
🛠️ Dica Bellacosa™
☑️ Nunca confie em dados externos.
☠️ 2. S0C4 Intermitente (o assassino silencioso)
🔥 Sintoma
-
Programa roda 9 vezes
-
Na 10ª, S0C4
🎯 Causa real
-
Ponteiro inválido
-
PERFORM mal fechado
-
Índice fora do limite
💀 Por que só em PROD?
-
Volume alto
-
Caminhos de código raros
🛠️ Dica Bellacosa™
☑️ Nunca confie em índice implícito.
☠️ 3. Loop Infinito que Só Existe à Noite
🔥 Sintoma
-
Job nunca termina
-
CPU sobe
-
Operação liga
🎯 Causa real
-
Condição de saída depende de dado real
-
Arquivo maior que o previsto
-
Flag nunca setada
💀 Por que só em PROD?
-
Volume real
-
Dado fora do padrão “bonitinho”
🛠️ Dica Bellacosa™
☑️ Sempre logar:
-
Contadores
-
Último registro processado
☠️ 4. Abend de Espaço (SB37 / SD37 / SE37)
🔥 Sintoma
-
Job cai por espaço
-
Ontem rodou, hoje não
🎯 Causa real
-
Arquivo cresceu
-
SORT maior
-
Layout mudou
💀 Por que só em PROD?
-
Crescimento orgânico de dados
🛠️ Dica Bellacosa™
☑️ Nunca confie em:
📌 Produção cresce, sempre.
☠️ 5. Erro de Data “Impossível”
🔥 Sintoma
-
31/02
-
Ano 0000
-
Data negativa (!)
🎯 Causa real
-
Campo mal definido
-
MOVE sem validação
-
Dado legado podre
💀 Por que só em PROD?
-
Histórico antigo
-
Migrações mal feitas
🛠️ Dica Bellacosa™
☑️ Valide sempre datas externas.
☠️ 6. Deadlock DB2 da Madrugada
🔥 Sintoma
-
SQLCODE -911 / -913
-
Job aborta aleatoriamente
🎯 Causa real
-
Concorrência real
-
Lock longo
-
Commit mal posicionado
💀 Por que só em PROD?
-
DEV não tem 200 jobs rodando juntos
🛠️ Dica Bellacosa™
☑️ COMMIT frequente
☑️ Ordem consistente de acesso
☠️ 7. Arquivo Vazio que Ninguém Testou
🔥 Sintoma
-
S0C4
-
S0C7
-
Relatório errado
🎯 Causa real
-
Arquivo esperado com dados… veio vazio
💀 Por que só em PROD?
-
Erro operacional
-
Falha em job anterior
🛠️ Dica Bellacosa™
☑️ Arquivo vazio é cenário obrigatório.
☠️ 8. Codificação EBCDIC vs ASCII
🔥 Sintoma
-
Caracteres estranhos
-
Comparações falham
🎯 Causa real
-
Arquivo vindo de sistema externo
-
Conversão inexistente
💀 Por que só em PROD?
-
Integrações reais
-
DEV usa massa fake
🛠️ Dica Bellacosa™
☑️ Conheça a origem do dado
☑️ Converta explicitamente
☠️ 9. Parâmetro Errado no JCL
🔥 Sintoma
-
Programa certo
-
Resultado errado
🎯 Causa real
-
DDNAME trocado
-
Dataset errado
-
Parâmetro esquecido
💀 Por que só em PROD?
-
JCL é copiado e colado há anos
🛠️ Dica Bellacosa™
☑️ Validar SYSIN
☑️ Logar parâmetros recebidos
☠️ 10. Warning Ignorado Vira Incidente
🔥 Sintoma
-
“Sempre funcionou”
-
Agora não funciona
🎯 Causa real
-
Warning ignorado na compilação
-
Nova versão do compilador
💀 Por que só em PROD?
-
Volume + tempo
🛠️ Dica Bellacosa™
☑️ Warning ≠ inofensivo
☑️ Warning é dívida técnica
🧠 Mandamentos Bellacosa™ do Padawan COBOL
1️⃣ Inicialize tudo
2️⃣ Valide tudo
3️⃣ Logue o essencial
4️⃣ Teste cenário ruim
5️⃣ Não confie em dados
6️⃣ Não confie em DEV
7️⃣ Nunca diga “isso nunca acontece”
🏁 Conclusão
“Produção não testa código.
Produção testa premissas erradas.”