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

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.