Translate

terça-feira, 24 de agosto de 2021

ABEND sem Mistérios — Parte VI

 

Bellacosa Mainframe em abend sem misterios parte vi

☕ Um Café no Bellacosa Mainframe

ABEND sem Mistérios — Parte VI

O Grande Laboratório de ABENDs: Como Reproduzir, Investigar e Corrigir os Principais Erros do Mainframe Passo a Passo

"O conhecimento começa quando entendemos um ABEND. A experiência começa quando conseguimos reproduzi-lo. A maestria nasce quando sabemos evitá-lo."


Introdução

Até aqui, percorremos uma longa jornada.

Aprendemos:

  • o que é um ABEND;

  • como investigá-lo;

  • como analisar dumps;

  • como funciona a arquitetura do IBM Z;

  • como os grandes bancos utilizam observabilidade e Inteligência Artificial para prevenir incidentes.

Agora chegou a hora de colocar a mão na massa.

Existe uma diferença enorme entre ler sobre um ABEND e vê-lo acontecer diante dos seus olhos.

É exatamente assim que os grandes especialistas aprendem.

Eles não estudam apenas teoria.

Eles criam laboratórios.

Provocam erros.

Quebram programas.

Analisam dumps.

Corrigem.

Repetem.

Depois de algum tempo, passam a reconhecer um S0C7 da mesma forma que um médico reconhece uma doença comum.

Esta parte apresenta uma metodologia de treinamento que pode ser utilizada tanto em ambientes educacionais quanto em laboratórios corporativos.

O objetivo não é apenas reproduzir erros, mas compreender profundamente o motivo pelo qual eles acontecem.


Por que criar ABENDs de propósito?

Parece estranho.

Durante toda a carreira tentamos evitar erros.

Então por que provocá-los?

Porque um ambiente de testes é o lugar mais seguro para aprender.

Imagine um piloto de avião.

Antes de transportar passageiros ele treina:

  • falha hidráulica;

  • pane elétrica;

  • incêndio;

  • perda de motor.

No Mainframe fazemos o mesmo.

Treinamos quando ninguém está sendo afetado.


Como montar um laboratório de ABENDs

Você não precisa de um ambiente gigantesco.

Um pequeno sistema já é suficiente.

Por exemplo:

TSO

↓

ISPF

↓

Enterprise COBOL

↓

JCL

↓

SDSF

↓

VSAM

↓

Arquivos Sequenciais

Se houver CICS e Db2, melhor ainda.

Mas não são obrigatórios.


Regra número um

Nunca provoque ABENDs em Produção.

Parece óbvio.

Mas vale repetir.

Ambientes de treinamento existem exatamente para isso.


Exercício 1 — O primeiro S0C7

Objetivo:

Compreender Data Exception.

Crie uma variável:

01 WS-VALOR PIC 9(5).

Depois carregue:

12A45

Agora execute:

ADD 1 TO WS-VALOR.

Resultado esperado:

S0C7

O que observar?

Antes de corrigir.

Analise:

  • JESMSGLG;

  • SYSOUT;

  • CEEDUMP;

  • Offset;

  • Linha COBOL.

Depois responda:

Por que aconteceu?


Correção

Validação.

IF WS-VALOR NUMERIC
    ADD 1 TO WS-VALOR
ELSE
    DISPLAY 'DADO INVALIDO'
END-IF

Observe que o objetivo nunca foi "tirar o S0C7".

Foi impedir que dados inválidos chegassem ao cálculo.


Exercício 2 — O clássico S0C4

Monte uma tabela.

OCCURS 10 TIMES

Agora faça:

Índice = 25

Resultado.

Muito provavelmente.

S0C4

Investigação

Perguntas importantes.

O índice foi validado?

Quem alterou seu valor?

Existe PERFORM VARYING correto?

Existe INITIALIZE?


Exercício 3 — S013

Altere propositalmente:

  • LRECL

  • RECFM

Ou utilize um DDNAME incorreto.

Resultado.

IEC141I

S013

Agora investigue:

O problema está no COBOL?

Ou no JCL?

Essa diferença é fundamental.


Exercício 4 — S806

Compile normalmente.

Depois altere a STEPLIB.

Ou remova o Load Module.

Resultado.

S806

Aprendizado.

Nem todo ABEND vem do programa.


Exercício 5 — SB37

Crie um arquivo pequeno.

Depois grave milhares de registros.

O dataset ficará sem espaço.

Agora observe:

  • mensagens IEC;

  • SMS;

  • SYSOUT.


Exercício 6 — S322

Crie um loop infinito.

Exemplo.

PERFORM A
UNTIL 1 = 2

Configure TIME no JOB.

Resultado.

S322

Agora analise:

Quanto tempo demorou?

Como o sistema detectou?


Exercício 7 — FILE STATUS

Este talvez seja o exercício mais importante.

Leia um arquivo inexistente.

Sem verificar:

FILE STATUS

Depois repita verificando.

Perceba como muitos ABENDs desaparecem quando tratamos corretamente o retorno das operações.


Exercício 8 — SQLCODE

Mesmo sem gerar ABEND.

Faça:

SELECT

UPDATE

DELETE

ignorando SQLCODE.

Depois implemente tratamento.

É assim que sistemas robustos são construídos.


Exercício 9 — RESP no CICS

Execute comandos CICS.

Ignore RESP.

Depois implemente.

Você perceberá como muitos problemas são detectados antes de se transformarem em ASRA.


Exercício 10 — CEEDUMP

Escolha qualquer ABEND.

Agora tente responder apenas utilizando o CEEDUMP.

Onde ocorreu?

Qual variável estava errada?

Qual programa chamou aquele módulo?

Qual era o conteúdo da memória?

Esse exercício desenvolve enorme capacidade de investigação.


O Diário de ABENDs

Uma prática comum entre especialistas é manter um diário técnico.

Por exemplo.

DataABENDCausaSoluçãoComo evitar
10/07S0C7Campo inválidoValidaçãoIF NUMERIC
11/07S013LRECL erradoCorrigir JCLRevisão

Depois de alguns anos,

esse documento torna-se uma verdadeira biblioteca de conhecimento.


Aprendendo a formular hipóteses

Quando um incidente acontece,

não saia alterando o programa.

Primeiro formule hipóteses.

Por exemplo.

Hipótese 1

O arquivo veio corrompido.

Hipótese 2

O índice saiu do OCCURS.

Hipótese 3

O parâmetro foi passado incorretamente.

Depois procure evidências.

Esse é exatamente o método científico.


A regra de ouro da depuração

Nunca altere duas coisas ao mesmo tempo.

Imagine:

Você modifica:

  • JCL;

  • COBOL;

  • Copybook;

  • Parâmetros.

Depois funciona.

Qual alteração resolveu?

Você nunca saberá.

Faça mudanças pequenas.

Teste.

Observe.

Repita.


Simule incidentes completos

Depois de dominar os exercícios individuais,

crie cenários.

Exemplo.

O arquivo chega com layout errado.

Programa gera S0C7.

Batch seguinte não executa.

Relatório não é produzido.

Usuário abre chamado.

Agora reproduza toda a cadeia.

Essa abordagem aproxima o treinamento da realidade.


Automatizando laboratórios

Grandes empresas possuem ambientes capazes de:

  • executar centenas de testes;

  • gerar dumps automaticamente;

  • validar RC;

  • comparar resultados;

  • produzir relatórios.

Hoje isso pode ser integrado com:

  • Git;

  • Jenkins;

  • GitHub Actions;

  • IBM Dependency Based Build;

  • UrbanCode Deploy;

  • Ansible;

  • Zowe CLI.

Quanto mais automatizado o laboratório, mais rapidamente regressões são detectadas.


Como um mentor ensina ABENDs

Observe a diferença.

Professor comum:

"Esse é um S0C7."

Mentor experiente:

"Vamos provocar um S0C7, analisar o dump, descobrir a causa, corrigir o código e escrever um teste para garantir que ele nunca volte."

A segunda abordagem produz conhecimento duradouro.


O desafio dos grandes bancos

Os melhores programas não são aqueles que nunca falham.

São aqueles que:

  • detectam problemas rapidamente;

  • registram informações úteis;

  • facilitam o diagnóstico;

  • recuperam-se quando possível;

  • protegem os dados.

É exatamente esse pensamento que diferencia aplicações críticas.


Monte seu próprio catálogo

Ao longo da carreira, registre:

  • mensagens IEC;

  • mensagens IEF;

  • mensagens DFH;

  • SQLCODEs frequentes;

  • FILE STATUS;

  • RESP/RESP2;

  • ABENDs;

  • soluções.

Com o tempo você construirá um material que nenhum curso consegue fornecer.


Um roteiro de treinamento de 30 dias

Semana 1

  • S0C7

  • S0C4

  • S013

Semana 2

  • S806

  • SB37

  • S322

Semana 3

  • CEEDUMP

  • SYSMDUMP

  • JESMSGLG

  • JESYSMSG

Semana 4

  • IPCS

  • Fault Analyzer

  • Abend-AID

  • Root Cause Analysis

Ao final do mês, um Padawan terá experimentado dezenas de cenários que muitos profissionais só encontram após anos de trabalho.


Os cinco hábitos dos especialistas

  1. Nunca ignoram uma mensagem do sistema.

  2. Reproduzem o erro antes de corrigi-lo.

  3. Documentam tudo o que aprendem.

  4. Automatizam testes sempre que possível.

  5. Transformam cada incidente em conhecimento compartilhado.


Conclusão

Um ABEND não é um inimigo. Ele é um professor extremamente exigente.

Cada S0C7 ensina a validar dados. Cada S0C4 reforça a importância da memória e dos limites das tabelas. Cada S013 lembra que uma aplicação depende tanto do JCL quanto do código COBOL. Cada S806 mostra que uma compilação bem-sucedida não garante uma execução correta.

Os profissionais mais respeitados do mundo Mainframe não nasceram sabendo interpretar dumps ou localizar offsets em poucos minutos. Eles desenvolveram essa habilidade por meio de prática deliberada, repetindo investigações, registrando descobertas e aprendendo com cada incidente.

É exatamente por isso que um laboratório de ABENDs vale tanto. Nele, o erro deixa de representar um risco para o negócio e passa a ser uma ferramenta de aprendizado. E quando um Programador Padawan aprende a provocar, investigar, corrigir e prevenir os principais ABENDs em um ambiente controlado, ele chega muito mais preparado para enfrentar os desafios da produção.

No IBM Z, experiência não significa apenas tempo de carreira. Significa quantidade de problemas compreendidos, causas identificadas e conhecimento compartilhado. É assim que se forma um verdadeiro especialista em Mainframe.


Sem comentários:

Enviar um comentário