Translate

Mostrar mensagens com a etiqueta DECLARATIVES. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta DECLARATIVES. 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. ☕🚀💙🖥️


sábado, 11 de fevereiro de 2023

Os Holocrons Esquecidos do Tratamento de Erros no IBM Z— O Padawan Aprende a Domar os Abends do Dataset - Parte II

Bellacosa Mainframe e o tratamento de erro em cobol parte II



EXCEPTION/ERROR Procedures em COBOL

Os Holocrons Esquecidos do Tratamento de Erros no IBM Z

Parte 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

Por Bellacosa Mainframe


"O jovem Padawan abre arquivos. O Cavaleiro verifica FILE STATUS. O Mestre Bellacosa sabe que os datasets possuem personalidade própria e adoram surpreender às duas horas da manhã durante o fechamento do mês."

Mestre Bellacosa


Introdução

Na Parte 1 descobrimos um antigo Holocron do COBOL.

As DECLARATIVES.

Aprendemos que elas são capazes de interceptar falhas de I/O e centralizar tratamentos de erro.

Mas o jovem Padawan ainda não conhece os verdadeiros monstros do universo Batch.

São eles:

  • Dataset inexistente

  • Catálogo inconsistente

  • VSAM corrompido

  • Arquivo aberto por outro job

  • Buffer inválido

  • Erros físicos

  • Timeouts

  • Recursos indisponíveis

E todos possuem um idioma próprio.

O idioma chamado:

FILE STATUS


O que é FILE STATUS?

Talvez seja o mecanismo mais utilizado em COBOL.

Exemplo:

SELECT CLIENTE
       ASSIGN TO ARQCLI
       FILE STATUS IS WS-FS.

Variável.

01 WS-FS PIC XX.

Depois.

OPEN INPUT CLIENTE.

COBOL preenche.

WS-FS

Automaticamente.


Como funciona internamente?

Runtime COBOL.

Recebe retorno.

Do Access Method.

VSAM.

QSAM.

BSAM.


Converte.

Para.

Código.

FILE STATUS.


Visualmente.

OPEN

↓

VSAM

↓

RETURN CODE

↓

Runtime COBOL

↓

FILE STATUS

↓

Programa

Muito eficiente.


Status 00

O preferido.


Significa.

Tudo certo.


Exemplo.

WS-FS = 00

Padawan feliz.


Status 10

Fim arquivo.


Muito comum.

READ CLIENTE

AT END

Status 35

O primeiro monstro.


Arquivo.

Não encontrado.


Exemplo.

Dataset.

Não catalogado.


Resultado.

35

Declarative.

Entra.

Em ação.


Exemplo

USE AFTER STANDARD ERROR PROCEDURE
ON CLIENTE.

Exibe.

ARQUIVO INEXISTENTE

Muito elegante.


Status 39

Outro clássico.


Estrutura incompatível.


Exemplo.

Programa espera.

80 bytes.

Arquivo possui.


Resultado.

39


Muito comum.

Após mudanças.

Copybooks.


Status 90

Pesadelo.


Erro genérico.

VSAM.


Exemplo.

Problema.

Catálogo.


Buffer.


Disco.


Difícil.

Investigar.


Status 92

Muito importante.

Lógica incorreta.


Exemplo.

WRITE.

Em arquivo fechado.


Resultado.


Padawan triste.


Status 93

Recurso indisponível.


Dataset.

Em uso.


Outro job.

Segurando lock.


Resultado.


Framework Bellacosa

Gosto bastante.

Estrutura.

Programa


↓

Erro


↓

Declarative


↓

Logger


↓

Retry


↓

Escalation


↓

MQ


↓

Splunk

Muito utilizada.

Em bancos.


Exemplo completo

Passo 1

Arquivo

SELECT CLIENTE

ASSIGN TO ARQCLI

FILE STATUS WS-FS.

Passo 2

Declarative

DECLARATIVES.

ARQERR SECTION.

USE AFTER STANDARD ERROR PROCEDURE

ON CLIENTE.

Passo 3

Tratamento

ARQERR-PROC.


DISPLAY WS-FS.


PERFORM LOGAR.


PERFORM RETRY.


EXIT.

Passo 4

Fim.

END DECLARATIVES.

Retry

Pouco utilizado.

Mas poderoso.


Exemplo.

Arquivo.

Lock.


Esperar.

5 segundos.


Tentar.

Novamente.


Código.

PERFORM 3 TIMES


OPEN INPUT CLIENTE


IF WS-FS = '00'

EXIT PERFORM


CALL 'CEE3DLY'


END-PERFORM

Muito elegante.


Logging

Sempre.


Registrar.

Timestamp.

Dataset.

Status.

Job.

Step.

Usuário.


Exemplo.

20260626


CLIENTE


STATUS 35


JOB12345

Auditoria.

Excelente.


VSAM

Aqui mora.

Grande parte.

Dos monstros.


KSDS.

ESDS.

RRDS.

VRRDS.


Cada um.

Possui.

Comportamentos.

Diferentes.


INVALID KEY

Muito conhecido.


Exemplo.

READ CLIENTE

INVALID KEY

Mas.

Declaratives.

Podem.

Centralizar.

Tudo.


Como funciona na memória?

Compilador.

Cria tabela.


Arquivo.

Rotina.


Erro.

Dispatcher.

Declarative.


Pouco overhead.


Muito eficiente.


Segurança

Interessante.


Permite.

Auditar.

Tentativas.

Falhas.


LGPD.

SOX.

Compliance.


Excelente.


Curiosidades

Muitos frameworks bancários.

Possuem.

DECLARATIVES.

Centralizadas.


Poucos desenvolvedores.

Percebem.


Curiosidade 2

Algumas empresas.

Geram.

MQ.

Com erros.


Exemplo.

{
"arquivo":"CLIENTE",
"status":"35"
}

Observabilidade.

Moderna.


Curiosidade 3

Splunk.

Elastic.

Grafana.

Podem.

Receber.

Eventos.

COBOL.


Muito interessante.


Bellacosa Best Practices

Sempre.

FILE STATUS.


Sempre.

Logging.


Sempre.

Retry controlado.


Nunca.

Loop infinito.


Nunca.

Ignorar.


Nunca.

Ignorar.


Documente.

Tudo.


O Conselho do Mestre Bellacosa

Datasets possuem humor.

VSAM possui personalidade.

E FILE STATUS possui sabedoria.

O jovem Padawan aprende rapidamente a testar 00.

O Cavaleiro aprende a respeitar 35, 39, 92 e 93.

Mas o Mestre Bellacosa entende algo mais profundo.

Ele sabe que erros de I/O não são exceções.

São eventos inevitáveis.

Eles acontecerão.

Talvez durante um fechamento contábil.

Talvez em uma carga de Open Banking.

Talvez em um batch de 30 milhões de registros.

E quando isso acontecer, não será a velocidade do programa que salvará a madrugada.

Será a qualidade do tratamento de erros.

Porque um bom programa COBOL não é apenas aquele que processa milhões de registros.

É aquele que continua elegante, observável e auditável quando a galáxia dos datasets decide entrar em caos.


Continua na Parte 3

O Lado Sombrio – LE, CICS HANDLE CONDITION, ON EXCEPTION, CEEHDLR, Dumps, Fault Analyzer, IPCS e os Monstros do S0C4.

domingo, 22 de janeiro de 2023

Os Holocrons Esquecidos do Tratamento de Erros no IBM Z – O Despertar das DECLARATIVES - EXCEPTION/ERROR Procedures em COBOL: Parte I

 

Bellacosa Mainframe e o tratamento de erro no Cobol Parte 1

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

Parte 1 – O Despertar das DECLARATIVES

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

Por Bellacosa Mainframe


"Todo Padawan aprende FILE STATUS. Alguns aprendem AT END. Pouquíssimos descobrem que COBOL possui um mecanismo ancestral capaz de interceptar falhas antes que elas se transformem em um ABEND às três da manhã."

Mestre Bellacosa Sysprog Jedi


Introdução

Existe um momento na vida de praticamente todo desenvolvedor COBOL em que ele acredita ter dominado completamente o tratamento de erros.

Ele aprendeu:

FILE STATUS.

Aprendeu:

AT END

Aprendeu:

INVALID KEY

Aprendeu:

ON EXCEPTION

Aprendeu:

ON SIZE ERROR

E então pensa:

Mestre...

Acho que já sei tudo sobre tratamento de erros em COBOL.

O mestre Bellacosa sorri.

Abre um velho manual ANSI COBOL.

Mostra algumas linhas quase esquecidas.

E pergunta:

DECLARATIVES.

ARQ-ERROR SECTION.

USE AFTER STANDARD ERROR PROCEDURE ON ARQUIVO1.

O jovem Padawan arregala os olhos.

O que é isso?

O mestre responde:

Jovem Padawan...

Você acaba de encontrar um dos Holocrons mais antigos e menos estudados do COBOL.


O Grande Mito

Existe um mito bastante difundido.

Muitos acreditam:

COBOL não possui tratamento centralizado de erros.

Na verdade possui.

Há décadas.

E ele atende pelo nome:

DECLARATIVES


O que são DECLARATIVES?

Declaratives são blocos especiais.

São definidos antes da PROCEDURE DIVISION.

Possuem finalidade específica.

Capturar condições excepcionais.


Visualmente.

Programa COBOL


↓

Erro


↓

DECLARATIVES


↓

Tratamento


↓

Continua

ou

Termina

É quase um ancestral dos modernos:

  • try

  • catch

  • exception handler

  • interceptor

  • middleware de erros


Quando surgiu?

Precisamos voltar bastante no tempo.


COBOL-68

Possuía capacidades limitadas.


ANSI COBOL 74

Introduziu mecanismos iniciais.


ANSI COBOL 85

Consolidou.

DECLARATIVES.

USE.

Error Procedures.


IBM manteve suporte.

VS COBOL II.

COBOL for MVS.

Enterprise COBOL.

COBOL 6.5.


Sim.

Em 2026.

Ainda funciona.


Por que quase ninguém usa?

Porque a maioria dos programadores aprende.


FILE STATUS.


INVALID KEY.


AT END.


E para por aí.


As Declaratives ficaram escondidas.

Por décadas.


Muitos profissionais com vinte anos de experiência.

Nunca escreveram uma.


Anatomia das Declaratives

Estrutura.

DECLARATIVES.

ERRO-ARQ SECTION.

USE AFTER STANDARD ERROR PROCEDURE
ON ARQCLIENTE.

TRATA-ERRO.

DISPLAY 'ERRO'.

END DECLARATIVES.

Depois.

PROCEDURE DIVISION.

Muito importante.

Declaratives ficam.

Antes.

Da lógica principal.


O que significa USE?

USE é uma instrução especial.


Ela informa.

Ao runtime.


Quando determinada condição ocorrer.

Execute.

Este bloco.


Exemplo.

USE AFTER STANDARD ERROR PROCEDURE
ON CLIENTES.

Significa.


Se CLIENTES falhar.

Execute.

Esta rotina.


O que é STANDARD ERROR PROCEDURE?

Talvez seja a expressão mais misteriosa.


Significa.

Erros detectados.

Pelo sistema de I/O COBOL.


Exemplos.

OPEN

READ

WRITE

REWRITE

DELETE

START

CLOSE


Falhou.


Declaratives.

Recebem controle.


Primeiro exemplo do Padawan

Passo 1

Arquivo.

SELECT CLIENTE

ASSIGN TO ARQCLI

FILE STATUS WS-FS.

Passo 2

Status.

01 WS-FS.

PIC XX.

Passo 3

Declarative.

DECLARATIVES.


ARQ-ERRO SECTION.


USE AFTER STANDARD ERROR PROCEDURE


ON CLIENTE.


ARQ-ERRO-PROC.


DISPLAY 'ERRO'


WS-FS.


END DECLARATIVES.

Passo 4

Procedure.

PROCEDURE DIVISION.


OPEN INPUT CLIENTE.

Arquivo inexistente.


Declarative executa.


Muito elegante.


Fluxo interno

Visualmente.

OPEN


↓

Erro


↓

Runtime COBOL


↓

Declarative


↓

Retorna


ou


STOP RUN

Quase um middleware.


Memória

Padawan pergunta.

Mestre...

Como isso funciona na memória?

Boa pergunta.


Compilador.

Cria.

Tabelas internas.


Associa.

Arquivo.

Rotina.


Quando erro.

Runtime.

Consulta.

Tabela.


Transfere.

Controle.


Visualmente.

Tabela


CLIENTE


↓

ARQ-ERRO

Sem overhead grande.


Muito eficiente.


Chamada automática

Importante.

Programador.

Não faz.

PERFORM ARQ-ERRO

Runtime.

Faz.

Automaticamente.


Quase.

Interrupção.

Controlada.


Pode haver vários?

Sim.


Exemplo.

CLIENTE


↓

DECL1



PEDIDO


↓

DECL2



ESTOQUE


↓

DECL3

Muito poderoso.


FILE STATUS versus DECLARATIVES

Muitos perguntam.

Qual melhor?


FILE STATUS

Explícito.


Exemplo.

OPEN INPUT ARQ.


IF WS-FS NOT = '00'

Vantagem.

Simples.


Problema.

Repete.

Muito.


DECLARATIVES.

Centralizado.


Muito elegante.


Grande volume.

Melhor.


INVALID KEY

Outra dúvida.


INVALID KEY.

Funciona.

Com VSAM.


Declarative.

Mais abrangente.


Pode capturar.

Vários erros.


Cuidados

Nem tudo.

São flores.


Primeiro.

Evitar.

Lógica complexa.

Dentro.

Declarative.


Segundo.

Não abrir.

Mesmo arquivo.

Novamente.


Terceiro.

Cuidado.

Loops.


Exemplo ruim.

Erro.

Declarative.

READ.

Erro.

Declarative.

Loop.


Muito perigoso.


Performance

Excelente.


Quase.

Zero impacto.


Só executa.

Quando.

Erro.


Em produção.

Pouco custo.


Segurança

Pouco comentado.


Muito útil.

Auditoria.


Exemplo.

Registrar.

Arquivo.

Usuário.

Timestamp.

Erro.


Excelente.

Compliance.


LGPD.

SOX.

Auditoria.


Framework Bellacosa

Gosto bastante.

Modelo.

Declarative


↓

Logger


↓

Dataset LOG


↓

MQ


↓

Splunk


↓

Observabilidade

Muito elegante.


Curiosidades

Pouquíssimos desenvolvedores COBOL modernos.

Conhecem.

DECLARATIVES.


Muitos arquitetos bancários.

Adoram.


Principalmente.

Frameworks.

Antigos.


Curiosidade 2

VS COBOL II.

Utilizava.

Muito.


Hoje.

Menos comum.


Curiosidade 3

CICS.

Possui.

Algo semelhante.


HANDLE CONDITION.


Veremos.

Parte 3.


Bellacosa Best Practices

Sempre.

FILE STATUS.

Mesmo.

Com Declaratives.


Documente.

Tudo.


Não abuse.


Use.

Logging.


Padronize.

Framework.


Não coloque.

Regra negócio.


Somente.

Tratamento.

Erro.


O Conselho do Mestre Bellacosa

Durante décadas, milhares de programadores COBOL trataram erros utilizando IF FILE-STATUS, INVALID KEY e AT END.

E isso funciona muito bem.

Mas escondido nas profundezas dos antigos padrões ANSI existe um mecanismo sofisticado.

Elegante.

Pouco conhecido.

Quase esquecido.

Chamado DECLARATIVES.

Ele lembra uma antiga técnica Jedi.

Não é utilizada todos os dias.

Não é necessária para pequenos programas.

Mas quando um sistema possui dezenas de arquivos, centenas de jobs e requisitos rigorosos de auditoria, observabilidade e recuperação, ela pode transformar um emaranhado de verificações repetitivas em uma arquitetura limpa e centralizada.

Talvez esta seja a principal lição da primeira jornada.

O jovem Padawan verifica FILE STATUS.

O Cavaleiro utiliza ON EXCEPTION.

O Mestre Bellacosa conhece DECLARATIVES.

E o Conselho Jedi do IBM Z sabe exatamente quando utilizá-las.


Continua na Parte 2

O Padawan Aprende a Domar os Abends do Dataset – VSAM, KSDS, FILE STATUS 35/39/92/93, Retry, Logging e Frameworks Corporativos de Recuperação.