Translate

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.

Sem comentários:

Enviar um comentário