Translate

Mostrar mensagens com a etiqueta CEEHDLR. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta CEEHDLR. 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.