Translate

Mostrar mensagens com a etiqueta Fault Analyzer. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Fault Analyzer. Mostrar todas as mensagens

quarta-feira, 24 de maio de 2023

☕Os Holocrons Esquecidos do Tratamento de Erros no IBM Z - EXCEPTION/ERROR Procedures em COBOL:

 

Bellacosa Mainframe e o tratamento de erro em cobol

☕ EXCEPTION/ERROR Procedures em COBOL: Os Holocrons Esquecidos do Tratamento de Erros no IBM Z

Quando o Padawan Descobre que Tratar Erros é Muito Mais Importante do que Apenas Verificar FILE STATUS

Por muitos anos, grande parte dos desenvolvedores COBOL aprendeu que tratar erros significava simplesmente verificar um FILE STATUS, utilizar um AT END, um INVALID KEY ou, em situações mais modernas, um ON EXCEPTION.

E, para muitos sistemas, isso realmente é suficiente.

Mas o IBM Z esconde mecanismos muito mais sofisticados.

Pouco conhecidos.

Pouco documentados.

E frequentemente esquecidos pelas novas gerações de desenvolvedores.

O Enterprise COBOL possui recursos capazes de interceptar falhas automaticamente, centralizar tratamentos, construir frameworks corporativos de recuperação, conversar com o Language Environment, produzir observabilidade moderna e até integrar eventos de erro com plataformas como MQ, OpenTelemetry, Splunk, Elastic e Grafana.

Foi justamente para explorar esse lado quase arqueológico do COBOL que nasceu a série:

📚 EXCEPTION/ERROR Procedures em COBOL

Os Holocrons Esquecidos do Tratamento de Erros no IBM Z

Uma jornada em quatro capítulos, destinada aos jovens Padawans, arquitetos IBM Z, desenvolvedores seniores e curiosos que desejam compreender como os grandes ambientes corporativos realmente lidam com falhas.


📖 Capítulo 1

O Despertar das DECLARATIVES

Quando o Padawan Descobre que COBOL Possui Seu Próprio Mecanismo Jedi de Tratamento de Erros

Neste primeiro holocron, exploramos um dos recursos mais antigos e menos utilizados do COBOL.

Você aprenderá:

  • O que são DECLARATIVES

  • USE AFTER ERROR PROCEDURE

  • História desde ANSI-74 e ANSI-85

  • Como o runtime COBOL transfere o controle para rotinas especiais

  • Comparação entre FILE STATUS e DECLARATIVES

  • Fluxo interno de execução

  • Estruturas de memória

  • Primeiro programa passo a passo

  • Dicas, cuidados e boas práticas Bellacosa

🔗 https://eljefemidnightlunch.blogspot.com/2023/01/exceptionerror-procedures-em-cobol-os.html


📖 Capítulo 2

O Padawan Aprende a Domar os Abends do Dataset

VSAM, FILE STATUS 35/39/92/93, Retry, Logging e Frameworks Corporativos de Recuperação

Todo desenvolvedor IBM Z já encontrou um misterioso FILE STATUS 35 às duas da manhã.

Neste capítulo estudamos:

  • FILE STATUS detalhado

  • Erros 35, 39, 90, 92 e 93

  • VSAM KSDS, ESDS e RRDS

  • Retry inteligente

  • Logging corporativo

  • Estratégias de recuperação

  • Auditoria

  • Framework Bellacosa de tratamento de falhas

  • Observabilidade para ambientes batch

🔗 https://eljefemidnightlunch.blogspot.com/2023/02/os-holocrons-esquecidos-do-tratamento.html


📖 Capítulo 3

O Lado Sombrio das Exceções

LE, CICS HANDLE CONDITION, ON EXCEPTION, CEEHDLR, Dumps, Fault Analyzer, IPCS e os Monstros do S0C4

Chegamos ao território dos Sysprogs Jedi.

Aqui exploramos:

  • Language Environment (LE)

  • Condition Handling

  • CEEHDLR

  • CEESGL

  • HANDLE CONDITION

  • HANDLE ABEND

  • SOC4

  • SOC7

  • S0CB

  • CEEDUMP

  • Fault Analyzer

  • IPCS

  • Como o runtime trata exceções

  • Estruturas de memória

  • Segurança

  • Performance

Se você sempre quis entender o que acontece quando um programa decide produzir um dump de centenas de páginas, este é o capítulo ideal.

🔗 https://eljefemidnightlunch.blogspot.com/2023/03/os-holocrons-esquecidos-do-tratamento.html


📖 Capítulo 4

O Mestre Bellacosa

Frameworks Corporativos de Tratamento de Erros, MQ Dead Letter Queue, APIs JSON, OpenTelemetry, Splunk e a Arte Jedi de Transformar Falhas em Conhecimento

O último holocron leva o tratamento de erros para um novo patamar.

Abordamos:

  • Logger corporativo

  • Correlation ID

  • MQ Dead Letter Queue

  • APIs JSON

  • OpenTelemetry

  • Splunk

  • Elastic/OpenSearch

  • Grafana

  • SRE

  • Observabilidade

  • Compliance

  • LGPD

  • IA aplicada à análise de falhas

  • Framework Bellacosa para Engenharia de Confiabilidade

O objetivo deixa de ser apenas tratar erros.

Passa a ser transformar erros em métricas, conhecimento e melhoria contínua.

🔗 https://eljefemidnightlunch.blogspot.com/2023/04/os-holocrons-esquecidos-do-tratamento.html


☕ O Conselho Final do Mestre Bellacosa

O jovem Padawan aprende rapidamente a testar:

IF WS-FS NOT = '00'

O Cavaleiro domina DECLARATIVES, HANDLE CONDITION e Fault Analyzer.

Mas o Mestre Bellacosa compreende algo ainda mais importante.

Erros nunca desaparecerão.

Datasets continuarão desaparecendo.

Locks continuarão acontecendo.

JSON continuará chegando corrompido.

Ponteiros continuarão apontando para lugares proibidos.

E algum programa inevitavelmente produzirá um SOC4 em plena sexta-feira às 23h58.

O diferencial não está em escrever sistemas que nunca falham.

Está em construir sistemas capazes de observar, compreender, registrar, correlacionar, aprender e evoluir a partir das falhas.

Porque, no fim das contas, talvez a maior lição destes Holocrons seja bastante simples:

Um bom programa COBOL processa milhões de registros.

Um grande programa COBOL continua elegante, auditável e resiliente mesmo quando a galáxia inteira dos datasets decide entrar em caos.

Boa leitura, jovem Padawan. Que o FILE STATUS seja sempre 00, e que seus CEEDUMPs sejam curtos, raros e perfeitamente documentados. ☕🚀💙🖥️

Atenção aos errros em Cobol


☕ Não se esqueça Padawan COBOL

Um Padawan COBOL não erra menos porque memorizou toda a sintaxe da linguagem. Ele erra menos porque desenvolveu disciplina técnica. A primeira regra é simples: nunca confie apenas na memória. Consulte manuais, padrões internos e documentação IBM sempre que houver dúvida.

Escreva programas pequenos, modulares e legíveis. Utilize copybooks padronizados, nomenclatura consistente e comentários que expliquem decisões de negócio, não o óbvio. Sempre valide retornos de chamadas, FILE STATUS, SQLCODE, RESP/RESP2, RCs e condições excepcionais. Trate erros como parte natural do projeto, não como um detalhe para o fim do desenvolvimento.

Pratique testes unitários utilizando zUnit, automatize builds com DBB (Dependency Based Build), integre pipelines Git, Jenkins, GitHub Actions ou Azure DevOps, e utilize análise estática de código sempre que possível. Aproveite recursos modernos do Enterprise COBOL, como JSON PARSE, JSON GENERATE, LOCAL-STORAGE, DECLARATIVES, compilação com opções de diagnóstico aprimoradas e ferramentas como Fault Analyzer, Debug Tool e Application Delivery Foundation for z/OS.

Revisão de pares, programação a quatro mãos ajudam sempre a ter um codigo melhor e evitar erros de simpatia, nao tente inventar a roda, use o que existe e é homologado na sua instalação, consulte o enxoval para saber as regras e diretrizes do seu projeto.

Aprenda a ler dumps, estudar SMF, compreender o Language Environment e observar métricas de desempenho. Revise código de colegas e aceite revisões no seu próprio código. A humildade técnica é uma das maiores virtudes de um Mestre.

O jovem Padawan escreve programas que funcionam. O Mestre Bellacosa escreve programas que continuam funcionando quando a galáxia inteira resolve apresentar FILE STATUS diferente de 00. ☕🚀💙🖥️


sexta-feira, 7 de abril de 2023

Os Holocrons Esquecidos do Tratamento de Erros no IBM Z – O Mestre Bellacosa - Parte IV

 

Bellacosa Mainframe e o tratamento de erro em cobol parte iv



EXCEPTION/ERROR Procedures em COBOL

Os Holocrons Esquecidos do Tratamento de Erros no IBM Z

Parte 4 – O Mestre Bellacosa

Frameworks Corporativos de Tratamento de Erros, MQ Dead Letter Queue, APIs JSON, OpenTelemetry, Splunk e a Arte Jedi de Transformar Falhas em Conhecimento

Por Bellacosa Mainframe


"O jovem Padawan trata erros. O Cavaleiro registra erros. O Mestre Bellacosa transforma erros em observabilidade, métricas e inteligência operacional."

Mestre Bellacosa Sysprog Jedi


Introdução

Na Parte 1 descobrimos.

DECLARATIVES.

Na Parte 2.

VSAM.

Retry.

FILE STATUS.

Logging.

Na Parte 3.

LE.

CEEHDLR.

SOC4.

IPCS.

Fault Analyzer.

Agora chegamos ao estágio final.

O ponto em que tratamento de erros deixa de ser apenas uma técnica de programação.

E se torna.

Arquitetura.

Governança.

Observabilidade.

Engenharia de Confiabilidade.


O antigo paradigma

Antigamente.

Erro.

DISPLAY.

SYSOUT.

Operador.

Telefone.

Programador.

Café.

Madrugada.


Funcionava.

Mas não escala.


O paradigma moderno

Erro.

Captura

Enriquecimento

Fila

Observabilidade

Análise

Automação

Correção

Conhecimento


O Framework Bellacosa

Arquitetura proposta.

Programa COBOL

↓

DECLARATIVE

↓

CEEHDLR

↓

LOGGER

↓

JSON

↓

MQ

↓

Dead Letter Queue

↓

Splunk

↓

Elastic

↓

OpenTelemetry

↓

Dashboard

↓

Equipe SRE

O Logger Corporativo

A primeira peça.

É o Logger.


Não basta.

DISPLAY.


Precisamos.

Contexto.


Exemplo.

Timestamp

Jobname

Stepname

Programa

Dataset

FILE STATUS

Return Code

Userid

Hostname

Transaction ID

Correlation ID

Exemplo.

{
"program":"PAGT0001",

"status":"39",

"dataset":"CLIENTE.MST",

"timestamp":"2026-06-26T03:14:22"

}

Muito mais útil.


MQ como barramento de erros

Muito elegante.


Ao invés.

Escrever SYSOUT.


Enviar.

Evento.


MQPUT.


Arquitetura.

Erro

↓

COBOL

↓

MQPUT

↓

ERROR.QUEUE

↓

Monitoramento

Muito usado.

Em bancos.


Dead Letter Queue

Pouco conhecida.

Mas poderosa.


DLQ.


Fila.

De mensagens.

Problemáticas.


Exemplo.

SYSTEM.DEAD.LETTER.QUEUE

Erro.

Não tratado.

DLQ.


Excelente.

Auditoria.


JSON Error Payload

Muito moderno.


Exemplo.

{

"program":"CLI0001",

"error":"FILE_STATUS_35",

"severity":"HIGH",

"retryable":true

}

Muito elegante.


APIs

COBOL.

Também produz.

Erros REST.


Exemplo.

HTTP 404.

{
"error":"Cliente não encontrado"
}

HTTP 500.

{

"error":"Erro interno"

}

Muito utilizado.


OpenTelemetry

Talvez a tecnologia.

Mais interessante.

Dos últimos anos.


Objetivo.

Instrumentação.


Métricas.


Traces.


Logs.


Arquitetura.

COBOL

↓

Event

↓

Collector

↓

Jaeger

↓

Grafana

Correlation ID

Fundamental.


Exemplo.

ABC123XYZ

Permite.

Rastrear.

Transação.

Completa.


PIX.

MQ.

API.

COBOL.

DB2.

Resposta.


Tudo rastreável.


Splunk

Muito utilizado.


Exemplo.

status=39

Retorna.

Milhares.

Eventos.


Excelente.

Investigação.


Elastic

Alternativa.

Popular.


Kibana.

Muito amigável.


Grafana

Excelente.

Visualização.


Painéis.


Erro por hora.

Erro por programa.

Erro por região.

Erro por dataset.


Muito útil.


OpenSearch

Também.

Muito adotado.


Observabilidade

Conceito moderno.


Três pilares.


Logs.


Metrics.


Traces.


Visualmente.

Logs

+

Metrics

+

Traces


=

Observability

SRE

Site Reliability Engineering.


Conceito Google.


Também aplicável.

Ao IBM Z.


Objetivos.


Disponibilidade.


Confiabilidade.


Tempo resposta.


SLA.


SLO.


Error Budget.


Inteligência Artificial

Muito interessante.


IA.

Pode detectar.


Anomalias.


SOC4.


Aumento.

Status 39.


Picos.

Timeout.


Antes.

Do usuário.

Perceber.


Segurança

Muito importante.


LGPD.


PCI DSS.


SOX.


ISO 27001.


Não exponha.


CPF.

Senha.

Cartão.

Token.

Dump.


Muito comum.

Esquecer.


Sanitização

Exemplo.

Antes.

CPF 12345678900

Depois.

CPF ********900

Muito melhor.


Framework Bellacosa Avançado

Arquitetura.

Programa

↓

Declarative

↓

CEEHDLR

↓

Logger

↓

JSON Event

↓

MQ

↓

DLQ

↓

Splunk

↓

OpenTelemetry

↓

Grafana

↓

Equipe SRE

↓

Knowledge Base

Curiosidade

Grandes bancos.

Fazem isso.

Há anos.


Usuário.

Nunca percebe.


Aplicativo.

Continua.

Funcionando.


Erro.

Foi.

Capturado.

Roteado.

Analisado.

Monitorado.


Automaticamente.


Bellacosa Best Practices

Sempre

Tenha Logger.


Sempre

Correlation ID.


Sempre

Retry.

Controlado.


Sempre

MQ.

Para erros críticos.


Sempre

Dashboards.


Sempre

Fault Analyzer.


Sempre

OpenTelemetry.

Quando possível.


Nunca

DISPLAY.

Como única estratégia.


Nunca

Ignorar.

SOC4.

SOC7.


Nunca

Expor.

Dados sensíveis.


O Conselho Final do Mestre Bellacosa

No início da jornada, o Padawan acreditava que tratamento de erros era apenas escrever:

IF WS-FS NOT = '00'

Depois descobriu DECLARATIVES.

Aprendeu FILE STATUS.

Conheceu VSAM.

Conversou com o Language Environment.

Leu CEEDUMPs.

Estudou Fault Analyzer.

Decifrou IPCS.

E finalmente compreendeu algo importante.

Falhas são inevitáveis.

Sempre existirão.

Discos falham.

Datasets desaparecem.

Locks acontecem.

Ponteiros ficam inválidos.

JSON chega corrompido.

APIs ficam indisponíveis.

Mensagens MQ se perdem.

E sistemas distribuídos inevitavelmente apresentam comportamento inesperado.

O verdadeiro diferencial não é construir software que nunca falha.

É construir software capaz de observar a falha.

Compreendê-la.

Registrá-la.

Correlacioná-la.

Aprender com ela.

E continuar servindo o negócio com elegância.

Porque talvez esta seja a maior lição dos Holocrons Esquecidos do IBM Z.

O jovem Padawan tenta evitar erros.

O Cavaleiro aprende a tratá-los.

O Mestre Bellacosa transforma erros em conhecimento operacional.

E o Conselho Jedi do IBM Z chama isso simplesmente de Engenharia de Confiabilidade.


Fim do Holocron Bellacosa Mainframe

EXCEPTION/ERROR Procedures em COBOL – Parte 1 a Parte 4 concluídas

"Que o FILE STATUS seja sempre 00. E que seus CEEDUMPs sejam curtos, raros e perfeitamente documentados." ☕🚀💙🖥️


segunda-feira, 13 de março de 2023

Os Holocrons Esquecidos do Tratamento de Erros no IBM Z – O Lado Sombrio das Exceções - Parte III

 

Bellacosa Mainframe e o tratamento de erros em cobol parte III



EXCEPTION/ERROR Procedures em COBOL

Os Holocrons Esquecidos do Tratamento de Erros no IBM Z

Parte 3 – O Lado Sombrio das Exceções

LE, CICS HANDLE CONDITION, ON EXCEPTION, CEEHDLR, Dumps, Fault Analyzer, IPCS e os Monstros do S0C4

Por Bellacosa Mainframe


"Um Padawan trata FILE STATUS. Um Cavaleiro domina DECLARATIVES. Um Mestre Bellacosa sabe conversar com o Language Environment enquanto observa um CEEDUMP às três horas da manhã."

Mestre Bellacosa Sysprog Jedi


Introdução

Na Parte 1 aprendemos:

  • DECLARATIVES

  • USE AFTER ERROR PROCEDURE

  • Tratamento centralizado

Na Parte 2 aprendemos:

  • FILE STATUS

  • VSAM

  • Retry

  • Logging

  • Frameworks corporativos

Mas existe um outro universo.

Muito mais sombrio.

Muito mais antigo.

Muito mais poderoso.

O universo chamado:

Language Environment

Ou simplesmente.

LE


O que é LE?

LE significa.

Language Environment.


É o runtime comum.

De várias linguagens.

No z/OS.

Suporta.

COBOL

PL/I

C

C++

Metal C

Assembler


Visualmente.

Programa COBOL

↓

Language Environment

↓

z/OS

↓

Hardware

O que acontece quando ocorre um erro?

Exemplo.

DIVIDE A

BY B

B.

Vale.

Zero.


Resultado.

Exceção.


LE detecta.


Avalia.

Condition Handler.


Decide.

Continuar.

Terminar.

Gerar dump.


Condition Handling

LE trabalha.

Com condições.


Exemplos.

CEE3207S

CEE0813S

CEE0198S

CEE3250C


Muito conhecidos.


Exemplo

Overflow.

COMPUTE TOTAL

=

99999999999999

*

99999999999999

LE.

Captura.


Mensagem.

CEE3207S

ON SIZE ERROR

Primeira linha.

De defesa.


Exemplo.

ADD A TO B

ON SIZE ERROR

DISPLAY 'ERRO'

Muito elegante.


ON EXCEPTION

Outro mecanismo.


JSON.

JSON PARSE

WS-JSON


ON EXCEPTION


DISPLAY 'ERRO'

XML.

Também.


STRING.

Também.


CEEHDLR

Aqui começa.

A magia.


Pouquíssimos conhecem.


CEEHDLR.

Permite.

Criar.

Condition Handlers.

Personalizados.


Arquitetura.

Erro


↓

LE


↓

CEEHDLR


↓

Handler


↓

Aplicação

Muito sofisticado.


CEESGL

Outra API.


Sinalização.

Condições.


Pouco usada.


Muito poderosa.


Exemplo conceitual

CALL 'CEEHDLR'

Handler.

Registrado.


Toda exceção.

Passa.

Por ele.


CICS HANDLE CONDITION

Outro Holocron.

Muito famoso.


Exemplo.

EXEC CICS

HANDLE CONDITION

NOTFND(ERRO1)

ENDFILE(ERRO2)

END-EXEC

Muito elegante.


CICS.

Intercepta.

Condição.


Transfere.

Controle.


HANDLE ABEND

Mais poderoso.


Exemplo.

EXEC CICS

HANDLE ABEND

LABEL(ABEND1)

END-EXEC

Padawan.

Protegido.


S0C4

O rei.

Dos monstros.


Endereço inválido.


Overlay.


Heap.

Corrompido.


Pointer.

Errado.


Resultado.

SOC4.


SOC7

Muito comum.


Decimal inválido.


Exemplo.

Campo.

COMP-3.

Corrompido.


SOC7.


S0CB

Divide.

Por zero.


Muito clássico.


S878

Storage.

Exhausted.


Leak.

Heap.


Muito desagradável.


Dumps

O arqueólogo.

Do IBM Z.

Ama.

Dumps.


Tipos.

SYSUDUMP

CEEDUMP

SYSABEND

SNAP


CEEDUMP

Excelente.

Mostra.

Heap.

Stack.

Pointers.

Condition Handlers.


Muito útil.


Fault Analyzer

Fantástico.


Exemplo.

Mostra.

Linha COBOL.

Offset.

Variável.

Registradores.


Tempo.

Economizado.

Enorme.


Abend-AID

Outro clássico.


Muito amado.

Por bancos.


IPCS

O Holocron Supremo.


Ferramenta.

Dos sysprogs.


Comandos.

VERBX

IPCS

LIST

TRACE


Pouco amigável.


Muito poderosa.


Como funciona na memória?

LE mantém.

Stack.

Heap.

Tabela.

Condition Handlers.


Visualmente.

Stack


↓


Programa



↓


LE



↓


Handler

Erro.


LE consulta.

Tabela.


Executa.

Handler.


Performance

Excelente.


Handlers.

Quase.

Zero overhead.


Só atuam.

Quando necessário.


Segurança

Importante.


Permite.

Mascarar.

Informações.

Sensíveis.


Evita.

Expor.

Dados.

No dump.


Muito útil.

LGPD.

PCI.

SOX.


Framework Bellacosa

Arquitetura.

Erro


↓

LE


↓

CEEHDLR


↓

Logger


↓

MQ


↓

Splunk


↓

OpenTelemetry


↓

SOC Team

Muito moderna.


Curiosidades

Muitos bancos.

Possuem.

Condition Handlers.

Criados.

Há décadas.


Funcionam.

Até hoje.


Curiosidade 2

Grande parte.

Dos SOC4.

Não acontece.

Em teste.


Aparece.

Produção.


Sexta-feira.


23h58.


Naturalmente.


Curiosidade 3

Muitos desenvolvedores.

Nunca.

Viram.

CEEHDLR.


Mesmo após.

20 anos.

COBOL.


Bellacosa Best Practices

Sempre.

ON EXCEPTION.


Sempre.

ON SIZE ERROR.


Sempre.

Fault Analyzer.


Sempre.

CEEDUMP.


Sempre.

Logging.


Nunca.

Ignorar.

SOC7.


Nunca.

Ignorar.

SOC4.


Documente.

Tudo.


O Conselho do Mestre Bellacosa

Os erros mais perigosos do IBM Z raramente são aqueles previstos nos requisitos.

Eles vivem escondidos.

Nos registradores.

Nos heaps.

Nas pilhas.

Nos ponteiros esquecidos.

Nos buffers corrompidos.

E aguardam pacientemente o fechamento contábil do mês para se manifestar.

O jovem Padawan aprende FILE STATUS.

O Cavaleiro domina DECLARATIVES.

Mas o Mestre Bellacosa conversa com o Language Environment, lê um CEEDUMP como quem consulta um antigo manuscrito e utiliza CEEHDLR para interceptar exceções antes que elas se transformem em monstros capazes de derrubar uma galáxia inteira de jobs batch.

Porque talvez a maior lição desta jornada seja simples.

Um programa COBOL verdadeiramente robusto não é aquele que nunca falha.

É aquele que sabe exatamente o que fazer quando inevitavelmente a falha decide aparecer.


Continua na Parte 4

O Mestre Bellacosa – Frameworks Corporativos de Tratamento de Erros, MQ Dead Letter Queue, APIs JSON, OpenTelemetry, Splunk, Elastic, Observabilidade e a Arte Jedi de Transformar Falhas em Conhecimento.


quarta-feira, 13 de fevereiro de 2013

☕🔥 ABEND ASRA — O “COLAPSO DA REALIDADE” NO CICS

 

Bellacosa Mainframe e o abend ASRA

☕🔥 ABEND ASRA — O “COLAPSO DA REALIDADE” NO CICS

Quando o CICS Olha Para Seu Programa e Diz:

“ALGO AQUI EXPLODIU.”

Se existe um erro que traumatiza todo programador COBOL iniciante em ambiente online…

é o lendário:

🚨 ASRA

E normalmente ele aparece assim:

DFHAC2001 TRANSACTION ABCD ABEND ASRA

ou:

AEI0
ASRA
PROGRAM CHECK

E naquele momento…

o Padawan COBOL entra em pânico.


☕ O QUE É O ASRA?

O ASRA é um:

🚨 ABEND DO CICS

Ele significa que:

💥 O PROGRAMA SOFREU UM PROGRAM CHECK

Traduzindo para linguagem humana:

O COBOL tentou fazer algo impossível.


🔥 O ASRA NÃO É O ERRO REAL

Isso é MUITO importante.

ASRA é apenas:

“O mensageiro da tragédia.”

O verdadeiro erro geralmente está por trás dele:

  • S0C7

  • S0C4

  • S0C1

  • S0CB

  • S0C6

  • Protection Exception

  • Data Exception

O CICS encapsula tudo isso em:

🚨 ASRA


☕ A FILOSOFIA DO ASRA

O CICS basicamente diz:

“Seu programa morreu durante execução.”

Mas não necessariamente ONDE.

Nem POR QUÊ.

Você precisa investigar.

E aí começa a jornada do Jedi Mainframe.


🔥 O ASRA MAIS FAMOSO DO UNIVERSO

🚨 ASRA + S0C7

O rei absoluto dos juniors COBOL.


☕ O QUE É O S0C7?

Erro de conversão decimal.

Exemplo clássico:

MOVE 'ABC' TO WS-VALOR-NUMERICO
ADD 1 TO WS-VALOR-NUMERICO

BOOM.

O processador decimal do IBM Z entra em colapso.


🔥 COMO O CICS ENXERGA ISSO

O COBOL gera instruções máquina.

O processador executa.

O hardware detecta:

❌ DADO INVÁLIDO PARA OPERAÇÃO DECIMAL

O z/OS gera:

S0C7

O CICS intercepta.

E transforma em:

ASRA

☕ ANALOGIA BELLACOSA MAINFRAME

Imagine:

O S0C7 é:

🔥 O MOTOR EXPLODINDO

E o ASRA é:

🚓 O POLICIAL FECHANDO A ESTRADA


🔥 OS VERDADEIROS VILÕES ESCONDIDOS ATRÁS DO ASRA


☠️ S0C7 — DATA EXCEPTION

O campeão absoluto.

Problema decimal.


☠️ S0C4 — PROTECTION EXCEPTION

Tentativa de acessar memória inválida.


☠️ S0C1 — OPERATION EXCEPTION

Código executável inválido.


☠️ S0CB — DECIMAL DIVIDE EXCEPTION

Divisão decimal impossível.

Exemplo:

DIVIDE 0 INTO WS-VALOR

☕ O QUE O PADAWAN PRECISA ENTENDER

No CICS:

ASRA ≠ causa raiz

ASRA = consequência.


🔥 O FLUXO DA TRAGÉDIA

COBOL
 ↓
EXECUÇÃO
 ↓
PROGRAM CHECK
 ↓
z/OS detecta exceção
 ↓
CICS intercepta
 ↓
ASRA

☕ O ERRO CLÁSSICO DO COBOL JUNIOR

01 WS-VALOR       PIC 9(05).
01 WS-TEXTO       PIC X(05).

MOVE 'ABCDE' TO WS-VALOR

Até aqui pode passar.

Mas depois:

ADD 1 TO WS-VALOR

Resultado:

💥 ASRA/S0C7


🔥 COMO INVESTIGAR O ASRA PASSO A PASSO

☕ PASSO 1 — IDENTIFIQUE A TRANSACTION

Mensagem típica:

DFHAC2001 TRANSACTION PAY1 ABEND ASRA

Transaction:

PAY1

☕ PASSO 2 — IDENTIFIQUE O PROGRAMA

O dump geralmente mostra:

PROGRAM: COBPAY01

Agora temos o suspeito principal.


☕ PASSO 3 — DESCUBRA O CÓDIGO REAL

O segredo está aqui:

PSW AT TIME OF ERROR
INTERRUPTION CODE

ou:

AP0001 ASRA CAUSED BY S0C7

Aí você encontra:

  • S0C7

  • S0C4

  • etc.


🔥 PASSO 4 — LOCALIZE O OFFSET

Exemplo:

OFFSET X'01A4'

Esse é o endereço onde tudo explodiu.


☕ O QUE É OFFSET?

É a posição da instrução dentro do programa load module.

Exemplo:

PROGRAMA + 01A4

🔥 COMO TRANSFORMAR OFFSET EM LINHA COBOL

Aqui nasce o verdadeiro Jedi.

Você precisa:

  • LISTING do compile

  • SYSADATA

  • Abend-AID

  • Fault Analyzer

  • XREF

No listing COBOL:

0001A4  ADD WS-TAXA TO WS-TOTAL

BOOM.

Achamos a linha assassina.


☕ O MAIOR SEGREDO DO MAINFRAME

O DUMP SEMPRE CONTA A HISTÓRIA.

O problema é:

Junior olha dump como Matrix.

Veterano lê dump como romance policial.


🔥 COMO LER O DUMP DO ASRA


☕ REGISTERS

Veja:

REGISTER 12
REGISTER 15

Eles ajudam localizar:

  • Base register

  • Programa

  • Endereço


☕ PSW — PROGRAM STATUS WORD

O “GPS do desastre”.

Mostra:

  • Onde morreu

  • Estado da CPU

  • Instrução ativa


☕ STORAGE DUMP

Mostra memória.

Veteranos encontram:

  • Campo inválido

  • Packed decimal corrompido

  • Byte hexadecimal estranho


🔥 O PACKED DECIMAL MALDITO

O maior assassino COBOL do planeta.

Exemplo:

PIC S9(7)V99 COMP-3

Packed decimal usa:

hexadecimal compactado

Se UM nibble estiver errado:

💥 S0C7


☕ EXEMPLO REAL DE HORROR

Packed válido:

12345C

Packed inválido:

12345F

ou:

12AB5C

Resultado:

🚨 DATA EXCEPTION


🔥 POR QUE ISSO ACONTECE?

Muitas vezes:

  • Arquivo corrompido

  • Layout errado

  • COPYBOOK desatualizado

  • Campo redefinido

  • REDEFINES perigoso

  • MOVE inválido

  • Overlay de memória


☕ O DEMÔNIO CHAMADO REDEFINES

Junior faz:

01 REGISTRO.
   05 VALOR-NUM PIC 9(05).

01 REGISTRO-R REDEFINES REGISTRO.
   05 VALOR-TXT PIC X(05).

Depois:

MOVE 'ABCDE' TO VALOR-TXT
ADD 1 TO VALOR-NUM

Resultado:

☠️ ASRA/S0C7


🔥 O ASRA S0C4 — O MAIS SOMBRIO

Esse assusta veteranos também.


☕ O QUE É S0C4?

Tentativa de acessar memória inválida.

Como:

  • Ponteiro errado

  • Tabela estourada

  • LINKAGE incorreta

  • DFHCOMMAREA inválida

  • Subscript fora do limite


☕ EXEMPLO

MOVE WS-TABELA(9999) TO WS-CAMPO

Mas a tabela tem:

100 posições

Resultado:

💥 S0C4 → ASRA


🔥 O CICS E A DFHCOMMAREA

Outro clássico.

Programa espera:

01 DFHCOMMAREA.
   05 WS-CODIGO PIC 9(05).

Mas recebe lixo.

Ou tamanho menor.

Resultado:

☠️ ASRA


☕ COMO SOBREVIVER AO ASRA


✅ PASSO 1

Descobrir:

QUAL PROGRAM CHECK?


✅ PASSO 2

Encontrar:

OFFSET


✅ PASSO 3

Mapear:

OFFSET → LINHA COBOL


✅ PASSO 4

Inspecionar:

  • Campos

  • Hexadecimal

  • COMP-3

  • REDEFINES

  • Tabelas

  • COMMAREA


🔥 FERRAMENTAS DOS DEUSES MAINFRAME


☕ Abend-AID

Transforma dump em algo humano.


☕ Fault Analyzer

Sherlock Holmes do z/OS.


☕ CEDF

Debug online do CICS.


☕ IPCS

Modo hardcore absoluto.


🔥 A ORIGEM HISTÓRICA

ASRA existe desde os primórdios do CICS.

Décadas de 70/80.

O nome vem de:

“ABNORMAL TERMINATION”

com classificação específica do CICS.

Ele virou lendário porque:

praticamente TODO programador COBOL CICS já tomou ASRA.


☕ CURIOSIDADE SOMBRIA

Veteranos dizem:

“Não existe programador COBOL experiente sem cicatriz de ASRA.”


🔥 EASTER EGG MAINFRAME

Muitos programadores brincam:

“ASRA significa:

A Surra Real da Aplicação.”

Porque normalmente ele aparece:

  • em produção

  • sexta-feira

  • fechamento mensal

  • ou 5 minutos antes da reunião.


☕ O MAIOR ERRO DO JÚNIOR

Olhar apenas:

ASRA

e parar.

Não.

O segredo está atrás dele.


🔥 A VERDADE FINAL

ASRA não é apenas um erro.

Ele é:

☕ O CICS REVELANDO QUE A REALIDADE BINÁRIA DO SEU PROGRAMA FOI QUEBRADA.

E no mundo mainframe…

TODO BYTE TEM CONSEQUÊNCIAS.


sábado, 24 de fevereiro de 2007

O que é COBOL Bug Trap e Captura de ABEND?

Bellacosa Mainframe o que é Bug Trap em Cobol


O que é COBOL Bug Trap e Captura de ABEND?

Em ambientes Mainframe, especialmente em aplicações críticas, um dos maiores desafios é descobrir rapidamente:

Por que o programa falhou?
Onde ocorreu o erro?
Qual variável causou o problema?

Para isso existem mecanismos conhecidos como:

Bug Trap

e

Captura de ABEND


O que é um ABEND?

ABEND significa:

Abnormal End

Ou seja:

Finalização Anormal

O programa termina devido a um erro.


Exemplos de ABENDs comuns

ABENDCausa
S0C7Erro de dados numéricos
S0C4Violação de memória
S806Programa não encontrado
SB37Falta de espaço
U4038Erro definido pela aplicação
ASRAExceção em CICS

Exemplo de S0C7

MOVE 'ABC' TO WS-VALOR-NUM
ADD 1 TO WS-VALOR-NUM

Resultado:

S0C7

O Problema

Sem diagnóstico adequado você recebe apenas:

JOB ABENDED

e precisa descobrir:

Qual campo?
Qual linha?
Qual programa?

O que é Bug Trap?

Bug Trap é uma técnica ou ferramenta que captura informações detalhadas antes do programa terminar.

Objetivo:

Transformar um ABEND misterioso
em um erro fácil de analisar

O que o Bug Trap captura?

  • Nome do programa

  • Data e hora

  • Parágrafo COBOL

  • Variáveis

  • SQLCODE

  • CICS EIBRESP

  • Chave VSAM

  • Dados recebidos

  • Stack de chamadas


Fluxo Simplificado

Erro
 ↓
Bug Trap
 ↓
Captura informações
 ↓
Gera relatório
 ↓
ABEND

Exemplo

Sem Bug Trap:

S0C7

Com Bug Trap:

PROGRAMA = FIN001

PARAGRAFO = CALCULA-JUROS

CAMPO = WS-SALDO

VALOR = ABCDEF

ABEND = S0C7

Captura de ABEND no COBOL

Uma prática comum é criar rotinas padronizadas.


Exemplo

IF SQLCODE NOT = 0

   PERFORM TRATA-ERRO

END-IF

Rotina de Tratamento

TRATA-ERRO.

DISPLAY 'ERRO SQL'

DISPLAY SQLCODE

MOVE 16 TO RETURN-CODE

STOP RUN.

Capturando FILE STATUS

Muito comum em arquivos.


READ ARQCLIENTE

IF WS-FS NOT = '00'

   DISPLAY 'ERRO LEITURA'

   DISPLAY WS-FS

END-IF

Captura de SQLCODE

Programas DB2.


EXEC SQL

   SELECT ...

END-EXEC

IF SQLCODE NOT = 0

   DISPLAY SQLCODE

END-IF

Captura de CICS

Programas online.


EXEC CICS

   READ FILE(...)

   RESP(WS-RESP)

END-EXEC

IF WS-RESP NOT = DFHRESP(NORMAL)

   DISPLAY WS-RESP

END-IF

Uso de Declaratives

COBOL possui tratamento nativo.


DECLARATIVES.

ARQ-ERROR SECTION.

USE AFTER STANDARD ERROR PROCEDURE
ON ARQCLIENTE.

DISPLAY 'ERRO ARQUIVO'.

END DECLARATIVES.

LE Condition Handler

No ambiente IBM Language Environment (LE).


Pode interceptar:

S0C7
S0C4
Overflow
Underflow

Ferramentas modernas utilizam LE para coletar:

  • Call Stack

  • Variáveis

  • Offset

  • PSW


Ferramentas Comerciais


IBM Fault Analyzer

Uma das mais utilizadas.

Captura automaticamente:

  • ABEND

  • Variáveis

  • Fonte COBOL

  • Call Stack


IBM Application Performance Analyzer

Auxilia análise de execução.


Abend-AID

Muito popular em bancos.

Produz relatórios detalhados.


Xpediter

Debug e análise de falhas.


Exemplo Fault Analyzer

Após um S0C7:

ABEND S0C7

PROGRAMA:
FIN001

PARAGRAFO:
CALCULA-PARCELA

CAMPO:
WS-VALOR

CONTEUDO:
ABC123

Exemplo Abend-AID

Mostra:

Linha COBOL

Variáveis

Offsets

Call Stack

Storage

Captura Manual (Estilo Bellacosa)

Uma prática comum é criar um copybook corporativo.


COPY LOGERRO.

Sempre que ocorrer erro:

PERFORM REGISTRA-ERRO

Grava:

Programa

Parágrafo

Usuário

Data

Hora

SQLCODE

File Status

Mensagem

Exemplo de Log

PROGRAMA=FIN001

PARAGRAFO=ATUALIZA-SALDO

SQLCODE=-911

USUARIO=BELLA01

DATA=20260801

HORA=14:35:21

Captura de Call Stack

Especialmente importante em:

CALL
CALL
CALL
CALL

Exemplo:

MAIN
 ↓
CALCULO
 ↓
JUROS
 ↓
VALIDA

Erro ocorreu em:

VALIDA

Captura de Dumps

Ferramentas analisam:

SYSUDUMP
SYSABEND
CEEDUMP

CEEDUMP

Muito usado com Language Environment.

Contém:

  • variáveis;

  • registradores;

  • call stack;

  • offsets.


Boas Práticas

✅ Sempre verificar FILE STATUS

✅ Sempre verificar SQLCODE

✅ Tratar RESP em CICS

✅ Gerar logs padronizados

✅ Produzir CEEDUMP

✅ Utilizar Fault Analyzer ou Abend-AID

✅ Registrar contexto do erro


Curiosidade

Em muitos bancos, mais de 90% dos incidentes COBOL são resolvidos sem abrir um dump completo porque as rotinas de Bug Trap já registram:

Programa
Parágrafo
Campo
Valor inválido
Usuário
Transação

permitindo localizar a causa raiz em poucos minutos.


Resumo Rápido

ConceitoFunção
ABENDFinalização anormal
S0C7Erro numérico
S0C4Violação memória
Bug TrapCaptura contexto do erro
CEEDUMPDump do LE
SYSUDUMPDump sistema
SQLCODEErro DB2
FILE STATUSErro arquivo
RESPErro CICS
Fault AnalyzerDiagnóstico IBM
Abend-AIDDiagnóstico avançado
XpediterDebug

Conclusão

Bug Trap é o conjunto de técnicas e ferramentas utilizadas para capturar informações detalhadas antes ou durante um ABEND. Em ambientes COBOL corporativos, ele é essencial para acelerar a análise de incidentes, identificar a causa raiz e reduzir drasticamente o tempo de diagnóstico de erros em aplicações Batch, CICS, IMS e DB2.