Translate

Mostrar mensagens com a etiqueta erros. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta erros. Mostrar todas as mensagens

quarta-feira, 11 de fevereiro de 2026

🔥 SEU PROGRAMA NÃO MORRE… ELE DEIXA PISTAS 💀

 

Bellacosa Mainframe analisando o RTM

🔥 SEU PROGRAMA NÃO MORRE… ELE DEIXA PISTAS 💀

O guia proibido do RTM que revela como o z/OS investiga, sobrevive e aprende com cada falha

Você vê um ABEND e pensa:

👉 “deu erro…”

O z/OS pensa diferente:

💥 “vamos registrar, analisar, aprender e continuar rodando.”

Esse é o papel do Recovery Termination Manager (RTM) — o sistema que transforma falhas em evidência técnica.

Se você quer sair do nível “rodou ou não rodou” e entrar no nível engenharia de diagnóstico, esse é o mapa definitivo 👊🔥


🧠 1. A FILOSOFIA DO z/OS SOBRE ERROS

No mundo distribuído:

👉 erro = problema

No mainframe:

👉 erro = evento analisável


💡 Tradução Bellacosa

“falhar é permitido… repetir o erro não.”


⚙️ 2. RTM — O “INVESTIGADOR OFICIAL”

O RTM entra em ação quando:

  • ocorre erro (ABEND)
  • há falha de hardware
  • há erro de sistema
  • ou até quando tudo termina normalmente

🔥 Funções principais

  • capturar erro
  • chamar rotinas de recuperação
  • gerar dumps
  • registrar LOGREC
  • limpar recursos

💡 Insight

RTM atua até quando o programa termina certo


🧩 3. RTM1 vs RTM2 — DOIS NÍVEIS DE SOBREVIVÊNCIA

🔹 RTM1 (System)

  • protege o sistema
  • chama FRR

🔹 RTM2 (Task)

  • trata a task
  • chama ESTAE

🔥 Fluxo real

Erro → RTM1 → RTM2 → Recovery → Dump → Cleanup

💡 Tradução

“primeiro o sistema sobrevive… depois a task”


🛡️ 4. ESTAE — A AUTODEFESA DO PROGRAMA

Programas podem registrar:

👉 rotinas de recuperação


🔥 Como funciona

  • programa define ESTAE
  • erro ocorre
  • RTM chama essa rotina

💡 Tradução Bellacosa

“seu programa pode tentar se salvar antes do fim”


🧠 Exemplo real

COBOL acessa memória inválida

ESTAE intercepta

log + tratamento

💀 5. DUMPS — A CENA DO CRIME

Um dump é:

👉 uma foto completa do sistema no erro


🔥 Tipos

  • SYSABEND → completo
  • SYSMDUMP → técnico
  • SYSUDUMP → básico
  • SVC Dump → sistema
  • Stand-alone → sistema morto

💡 Tradução

“dump é o momento congelado da falha”


🧠 Exemplo

S0C4

dump gerado

IPCS analisa

🧠 6. LOGREC — O HISTÓRICO DOS ERROS

LOGREC registra:

  • falhas de hardware
  • erros de software
  • condições do sistema

💡 Insight

é o primeiro lugar que um sysprog olha


🔥 Tradução Bellacosa

“LOGREC = diário dos problemas”


📜 7. LOGS — A LINHA DO TEMPO

🔹 Principais:

  • SYSLOG → sistema
  • OPERLOG → sysplex
  • JESMSGLG → job

💡 Uso

👉 entender o “antes” do erro


🎥 8. TRACES — O FILME COMPLETO

Enquanto dump = foto
👉 trace = vídeo


🔹 Tipos:

  • System Trace
  • GTF
  • Component Trace

💡 Uso

👉 analisar fluxo ao longo do tempo


🧠 9. DAE — INTELIGÊNCIA DE DUMP

Evita:

👉 dumps repetidos


🔥 Usa:

  • SYS1.DAE

💡 Tradução

“não repetir análise inútil”


🔎 10. IPCS — O CSI DO MAINFRAME

Ferramenta para:

  • ler dumps
  • interpretar dados
  • analisar erro

💡 Tradução Bellacosa

“IPCS = laboratório forense”


🧨 11. SLIP TRAPS — PEGANDO ERRO NO FLAGRA

Você pode definir:

👉 “quando isso acontecer… capture tudo”


💡 Exemplo

Se S0C4 ocorrer → gerar dump completo

🔥 Tradução

“armadilha inteligente”


⚙️ 12. CLEANUP — O FINAL OBRIGATÓRIO

Após erro ou término:

  • memória liberada
  • datasets fechados
  • locks removidos
  • timers cancelados

💡 Tradução

“ninguém sai sem arrumar o ambiente”


🔄 13. PASSO A PASSO COMPLETO

Programa executa

Erro ocorre

RTM acionado

ESTAE / FRR chamados

Dump gerado

LOGREC atualizado

Recursos liberados

Sistema continua

🧨 CURIOSIDADES (NÍVEL ROOT)

🤯 1. RTM roda até em término normal


🔥 2. Dump pode salvar dias de análise


💀 3. LOGREC é ignorado por iniciantes


🧠 4. SLIP é arma de elite


⚡ 5. z/OS foi feito para falhar… e continuar


🎯 RESUMO FINAL

✔ RTM controla término e erro

✔ RTM1 protege sistema

✔ RTM2 trata task

✔ ESTAE = recuperação

✔ Dumps = evidência

✔ LOGREC = histórico

✔ IPCS = análise


💥 FRASE FINAL

“No mainframe, o erro não encerra o sistema… ele inicia a investigação.”

 

sábado, 6 de abril de 2013

📉 Como Caçar MIPS Desperdiçado IBM Mainframe COBOL

 


📉 Como Caçar MIPS Desperdiçado

IBM Mainframe COBOL – Manual do Caçador de Custos para Padawans

“MIPS não somem sozinhos.
Alguém os está queimando.”


🧠 Antes de Tudo: O que é MIPS (na vida real)

  • MIPS = dinheiro

  • Não é performance “bonita”

  • É CPU faturada

  • Batch ruim = fatura triste 😭

☑️ Um programa pode estar correto
☑️ E ser financeiramente criminoso


🐘 Onde os MIPS se Escondem (Mapa do Crime)

ÁreaCrime comum
COBOLMOVE inútil, PERFORM em loop
SORTSort desnecessário
DB2Fetch linha a linha
I/OLeitura registro a registro
JCLClasses erradas
CompilaçãoParâmetro errado


🧪 1. O Maior Vilão: LOOP INÚTIL

🔥 Sintoma

  • CPU alto

  • Pouca E/S

  • Tempo absurdo

💀 Crime clássico

PERFORM 1000000 TIMES MOVE WS-A TO WS-B END-PERFORM

🛠️ Cura Bellacosa™

  • Elimine MOVE redundante

  • Tire código de dentro do loop

☑️ Código dentro de loop custa MIPS


🧪 2. MOVE em Cadeia (o Vampiro Silencioso)

🔥 Sintoma

  • CPU sobe

  • Programa “simples”

💀 Crime clássico

MOVE A TO B MOVE B TO C MOVE C TO D

🛠️ Cura Bellacosa™

MOVE A TO D

☑️ COBOL não cobra por linha… cobra por execução.


🧪 3. PERFORM CALLADO (Sem necessidade)

🔥 Sintoma

  • Modularização “bonita”

  • CPU feia

💀 Crime clássico

PERFORM CALCULA-VALOR

chamado milhões de vezes.

🛠️ Cura Bellacosa™

  • Inline lógica crítica

  • Evite PERFORM em massa

☑️ Modularidade demais custa caro.


🧪 4. SORT Burro (Quando não precisava)

🔥 Sintoma

  • CPU alto

  • Disco suando

💀 Crime clássico

  • SORT de arquivo já ordenado

  • SORT para eliminar duplicidade

🛠️ Cura Bellacosa™

  • Valide se já vem ordenado

  • Use controle lógico

☑️ SORT é um monstro de MIPS.


🧪 5. DB2: FETCH Um a Um (Pecado Mortal)

🔥 Sintoma

  • CPU altíssimo

  • SQL “simples”

💀 Crime clássico

FETCH CURSOR

milhões de vezes.

🛠️ Cura Bellacosa™

  • Use FETCH BLOCK

  • Aumente ARRAY FETCH

☑️ Banco pensa em bloco, não em linha.


🧪 6. COMMIT Mal Posicionado

🔥 Sintoma

  • Lock

  • Reprocesso

  • CPU extra

💀 Crime clássico

  • COMMIT a cada registro

  • COMMIT gigante demais

🛠️ Cura Bellacosa™

  • Commit por lote

  • Ajustar checkpoint


🧪 7. I/O Excessivo (Leitura Burra)

🔥 Sintoma

  • Muito tempo de execução

  • Pouca CPU útil

💀 Crime clássico

  • READ dentro de loop

  • Releitura desnecessária

🛠️ Cura Bellacosa™

  • Buffer

  • Carregar em memória quando possível

☑️ I/O custa caro e demora.


🧪 8. Compilação Errada = MIPS Perdido

🔥 Crime silencioso

  • Compilar COBOL 5 com PARMs antigos

🛠️ Cura Bellacosa™

OPTIMIZE ARCH(13+)

☑️ Compilador moderno gera código melhor.


🧪 9. JCL Mal Enquadrado

🔥 Sintoma

  • Job pequeno em classe errada

💀 Crime clássico

  • Classe de alto consumo

  • Prioridade indevida

🛠️ Cura Bellacosa™

  • Classe certa

  • WLM ajustado


🧪 10. Falta de Métrica = Cegueira

🔥 Erro fatal

  • “Acho que melhorou”

🛠️ Ferramentas

  • SMF

  • RMF

  • Accounting DB2

  • EXPLAIN PLAN

☑️ Sem métrica, não há tuning.


🧠 Checklist Rápido do Caçador de MIPS

☑️ Tirou código de loop
☑️ Reduziu SORT
☑️ Ajustou FETCH
☑️ Ajustou COMMIT
☑️ Compilou certo
☑️ Mediu antes e depois


🧙 Easter Eggs Bellacosa™

  • 1 MOVE em loop pode custar milhões por mês

  • Batch “simples” costuma ser o mais caro

  • Melhor otimização: não executar


🏁 Conclusão

“MIPS não se otimizam…
MIPS se caçam.”

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

 

segunda-feira, 6 de dezembro de 2010

🔥 Os 50 Principais ABENDs em CICS

 

Lista dos 50 principais erros em CICS

🔥 Os 50 Principais ABENDs em CICS
Possíveis causas, soluções e sabedoria de data center


☕ Midnight Lunch, região viva… e o ABEND aparece

14h07.
Tela congelou.
CEMT I TASK mostra status estranho.
O operador solta a clássica frase:

“Deu ABEND no CICS…”

Mas qual ABEND?
E mais importante: por quê?

Hoje vamos entrar no lado sombrio do CICS — os 50 ABENDs mais comuns, com causa raiz, solução e comentários de quem já apagou muito incêndio.


🏛️ História: ABEND não é erro, é aviso

No mundo CICS:

  • ABEND ≠ bug automático

  • ABEND = proteção

  • O sistema prefere matar a task do que corromper dados

📌 ABEND é o CICS dizendo: “daqui não passa”.


🧠 Conceito essencial

Quem entende ABEND, domina produção.


Lista de abends mais comuns em CICS


💥 Top 50 ABENDs em CICS (causas & soluções)


🔴 ABENDs de Programação

  1. AEIP – Comando CICS inválido
    👉 Causa: erro de lógica
    ✅ Solução: revisar comando EXEC CICS

  2. AEIM – Mapa inexistente
    👉 MAPSET não carregado
    ✅ Definir corretamente no CICS

  3. AEI0 – Erro de terminal
    👉 Sessão inválida
    ✅ Validar TC

  4. AEIS – Storage corrompido
    👉 Ponteiro inválido
    ✅ Revisar GETMAIN/FREEMAIN

  5. AEIN – Intervalo inválido
    👉 WAIT TIME errado
    ✅ Ajustar intervalo


🔴 ABENDs de Arquivo (File Control)

  1. AEIO – Erro de I/O
    👉 VSAM indisponível
    ✅ Verificar dataset

  2. AEIL – Arquivo não definido
    👉 FCT incorreta
    ✅ Corrigir definição

  3. AEIR – Registro não encontrado
    👉 READ sem verificação
    ✅ Tratar NOTFND

  4. AEIW – WRITE inválido
    👉 Layout errado
    ✅ Ajustar estrutura

  5. AEID – DELETE inválido
    👉 Registro inexistente
    ✅ Validar chave


🔴 ABENDs de Storage

  1. AEY9 – Falta de storage
    👉 Vazamento de GETMAIN
    ✅ Liberar storage

  2. ASRA – Protection exception
    👉 Storage corrompido
    ✅ Revisar ponteiros

  3. ASRB – Arithmetic exception
    👉 DIVIDE BY ZERO
    ✅ Validar cálculo

  4. AEYA – Storage key error
    👉 Região protegida
    ✅ Revisar chave

  5. AEYD – Stack overflow
    👉 Loop recursivo
    ✅ Corrigir lógica


🔴 ABENDs de Program Control

  1. AEIX – XCTL inválido
    👉 Programa inexistente
    ✅ Corrigir nome

  2. AEIL – LINK inválido
    👉 Parâmetros errados
    ✅ Ajustar COMMAREA

  3. AEIY – Programa não reentrante
    👉 Uso incorreto
    ✅ Tornar reentrante

  4. AEIZ – RETURN inválido
    👉 Fluxo quebrado
    ✅ Revisar lógica

  5. AEIP – LINK circular
    👉 Arquitetura ruim
    ✅ Refatorar fluxo


🔴 ABENDs de Terminal / BMS

  1. AEIM – Mapa não encontrado
    👉 MAPSET não carregado
    ✅ CEDA INSTALL

  2. AEIT – Erro de terminal
    👉 Sessão encerrada
    ✅ Validar conexão

  3. AEIB – Buffer overflow
    👉 Campo maior que área
    ✅ Ajustar tamanho

  4. AEIA – Atributo inválido
    👉 BMS errado
    ✅ Revisar mapa

  5. AEIC – Cursor inválido
    👉 Campo inexistente
    ✅ Corrigir IC


🔴 ABENDs de Transação / Task

  1. AEIT – Task inválida
    👉 Estado inconsistente
    ✅ Revisar RETURN

  2. AEI3 – Transação não definida
    👉 PCT ausente
    ✅ Definir TRANSID

  3. AEI4 – Security violation
    👉 Falta de autorização
    ✅ Ajustar RACF

  4. AEI5 – Time-out
    👉 Loop infinito
    ✅ Otimizar lógica

  5. AEI6 – Deadlock
    👉 Lock excessivo
    ✅ Reduzir escopo


🔴 ABENDs de Integração / Sistema

  1. APCT – Erro de Program Control
    👉 Configuração errada
    ✅ Revisar região

  2. AICA – Conversão inválida
    👉 Dados inconsistentes
    ✅ Validar formatos

  3. AICM – MQ error
    👉 Fila indisponível
    ✅ Verificar MQ

  4. AIDB – DB2 error
    👉 SQLCODE negativo
    ✅ Tratar SQL

  5. AIDS – Data inconsistente
    👉 Conversão errada
    ✅ Sanitizar dados


🔴 ABENDs “Clássicos de Guerra”

  1. ASRA – O mais temido
    👉 Memory overwrite
    ✅ Debug profundo

  2. AEIP – O mais comum
    👉 Código mal tratado
    ✅ Revisar lógica

  3. AEY7 – Storage leak
    👉 GETMAIN sem FREEMAIN
    ✅ Corrigir ciclo

  4. AEZC – CICS internal
    👉 Bug ou stress
    ✅ IBM support

  5. AFCA – File corruption
    👉 VSAM danificado
    ✅ Rebuild


🔴 ABENDs de Segurança

  1. AEI4 – RACF denial
    👉 Permissão faltando
    ✅ Ajustar perfil

  2. AESP – Security program
    👉 Violação
    ✅ Revisar acessos

  3. AEPI – Program protected
    👉 Programa não autorizado
    ✅ CEDA SET PROG

  4. AEXY – User exit failure
    👉 Exit defeituoso
    ✅ Debug exit

  5. AEXZ – Transaction denied
    👉 Perfil incorreto
    ✅ RACF


🔴 Os últimos, mas não menos perigosos

  1. AEZ9 – Resource unavailable
    👉 Falta de recurso
    ✅ Ajustar região

  2. AEZA – Internal error
    👉 Estado crítico
    ✅ Restart controlado

  3. AEZH – Program load failure
    👉 Load module ausente
    ✅ Reinstalar

  4. AEZI – System overload
    👉 Pico de tasks
    ✅ Tuning

  5. AEZZ – O “não documentado”
    👉 Algo muito errado
    ✅ Chamar o mais velho da sala 😈


📚 Guia de estudo para mainframers

Domine:

  • HANDLE ABEND

  • CEMT I TASK

  • DFHDU

  • Dumps CICS

  • SMF + logs

📖 Manual essencial: CICS Problem Determination Guide


🤓 Curiosidades de boteco mainframe

🍺 ASRA já aposentou muita gente
🍺 AEIP é quase rito de passagem
🍺 Todo ABEND ensina algo
🍺 Quem lê dump vira referência


💬 Comentário El Jefe Midnight Lunch

“ABEND não é o fim.
É o CICS pedindo para você pensar.”


🎯 Conclusão Bellacosa

Conhecer ABEND:

  • Reduz MTTR

  • Evita pânico

  • Dá respeito em produção

🔥 Quem entende ABEND, manda no CICS.