| 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.
Sem comentários:
Enviar um comentário