sábado, 2 de março de 2013

🧠 Erros Clássicos que Só Aparecem em Produção COBOL IBM Mainframe

 


🧠 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™

INITIALIZE WS-AREA

☑️ 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™

PERFORM VARYING IDX FROM 1 BY 1 UNTIL IDX > MAX

☑️ 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:

SPACE=(CYL,(5,5))

📌 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™

IF WS-DATA IS NUMERIC

☑️ 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™

IF EOF PERFORM TRATAR-ARQUIVO-VAZIO

☑️ 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.”

 

Sem comentários:

Enviar um comentário