Translate

sexta-feira, 26 de janeiro de 2007

ABEND Explicado para Iniciantes

 

Bellacosa Mainframe explicando abend para padawan

ABEND Explicado para Iniciantes

Quando alguém começa a trabalhar com:

  • COBOL;

  • JCL;

  • SDSF;

  • JES2;

  • batch no z/OS;

rapidamente encontra uma palavra que assusta muitos iniciantes:

ABEND

E normalmente surge a pergunta:

“O que aconteceu com meu JOB?”

A resposta geralmente é:

ocorreu um ABEND.


O que significa ABEND?

ABEND significa:

Abnormal End

Em português:

término anormal.


Definição simples

ABEND acontece quando:

um JOB ou programa termina com erro inesperado.

Ou seja:
o processamento não conseguiu continuar normalmente.


Analogia simples

Imagine uma fábrica.

Tudo funciona normalmente:

  • máquinas;

  • produção;

  • esteiras.

Mas de repente:

  • falta peça;

  • quebra equipamento;

  • ocorre falha elétrica.

A produção para abruptamente.

ABEND é exatamente isso:

uma interrupção anormal do processamento.


O que acontece quando ocorre ABEND?

O z/OS:

  • interrompe execução;

  • grava mensagens;

  • gera logs;

  • salva informações para diagnóstico.

Tudo aparece no:

spool.


Onde analisar ABEND?

Principalmente:

  • SDSF;

  • JESMSGLG;

  • JESYSMSG;

  • SYSOUT;

  • CEEDUMP.


Como identificar ABEND?

No SDSF normalmente aparece:

ABEND=S0C7

ou:

ABEND=U4038

Tipos de ABEND

Existem dois grandes grupos:


System ABEND

Começa com:

S

Exemplo:

S0C7

Gerado pelo:

sistema operacional.


User ABEND

Começa com:

U

Exemplo:

U4038

Gerado pelo:

programa/aplicação.


Origem histórica do ABEND

Desde os primeiros mainframes IBM, era necessário:

  • detectar falhas;

  • proteger memória;

  • impedir corrupção de dados.

Então o sistema passou a gerar:

códigos de término anormal.

Isso evoluiu para os famosos:

ABENDs.


Como ler um ABEND?


Exemplo

S0C7

S

System ABEND.


0C7

Código específico do erro.


ABENDs mais comuns no mainframe


S0C7

Erro de dados numéricos

O mais famoso do COBOL.


O que causa?

Campo numérico inválido.


Exemplo

Programa espera:

12345

mas recebe:

12A45

Muito comum em:

  • COMP-3;

  • PACKED;

  • DISPLAY numérico.


Como resolver?

  • validar dados;

  • revisar layouts;

  • conferir FILE STATUS;

  • analisar campo inválido.


S0C4

Violação de memória

Programa tentou acessar área inválida.


Causas comuns

  • ponteiro errado;

  • tabela fora do limite;

  • endereço inválido.


Muito comum em

  • Assembler;

  • COBOL avançado;

  • CICS.


S806

Programa não encontrado


Causa

Módulo inexistente na STEPLIB/LINKLIST.


Solução

  • verificar LOADLIB;

  • conferir nome do programa;

  • validar bibliotecas.


SB37

Falta de espaço em disco


Causa

Dataset sem espaço suficiente.


Solução

Aumentar:

  • SPACE;

  • volume;

  • secondary allocation.


SD37

Sem espaço em diretório/bloco.


SE37

Extensões máximas atingidas.


S222

JOB cancelado

Normalmente por operador.


S322

Timeout

JOB excedeu tempo permitido.


U4038

Erro da aplicação

Muito comum em:

  • COBOL;

  • CICS;

  • LE.


Pode indicar

  • STOP RUN incorreto;

  • CALL inválido;

  • falha lógica.


O que é CEEDUMP?

Dump gerado pelo:

Language Environment.

Ajuda debugging:

  • COBOL;

  • C;

  • PL/I.


O que analisar primeiro?


1. RC / ABEND

No SDSF.


2. JESMSGLG

Mensagens JES2.


3. JESYSMSG

Mensagens sistema.


4. SYSOUT

Saída programa.


5. CEEDUMP

Detalhes técnicos.


Fluxo ideal de análise

ABEND
 ↓
RC
 ↓
JESMSGLG
 ↓
JESYSMSG
 ↓
SYSOUT
 ↓
CEEDUMP
 ↓
CAUSA

O que é dump?

Captura do estado da memória durante erro.


Dumps ajudam a descobrir:

  • variáveis;

  • registradores;

  • instruções;

  • falha exata.


Como operadores analisam ABEND?

Eles verificam:

  • mensagens JES2;

  • status batch;

  • spool;

  • impacto operacional.


Como programadores analisam ABEND?

Eles procuram:

  • linha COBOL;

  • SQLCODE;

  • FILE STATUS;

  • dumps;

  • variáveis.


Como ABEND aparece no spool?

Mensagens típicas:

IEC141I
IGZ0006S
CEE3207S

Mensagens importantes


IGZ

Mensagens COBOL.


IEC

Mensagens de dataset/storage.


IEF

Mensagens JCL/sistema.


CEE

Mensagens Language Environment.


Dicas importantes para iniciantes


Sempre leia o final do spool


Procure:

  • ABEND;

  • ERROR;

  • IEC;

  • SQLCODE.


Aprenda principais códigos

S0C7 salva vidas no mainframe.


Use FIND no SDSF

Exemplo:

F ABEND

Curiosidades incríveis

1. Alguns ABENDs existem há décadas


2. Operadores experientes decoram dezenas de códigos


3. S0C7 é praticamente lendário no COBOL


4. Grandes bancos possuem equipes especializadas em troubleshooting de ABEND


Erros comuns de iniciantes


1. Ignorar JESYSMSG

Ali estão muitas pistas.


2. Ler apenas SYSOUT

Erro pode estar em outro arquivo.


3. Não analisar CEEDUMP

Fundamental em COBOL.


4. Assustar-se com qualquer ABEND

Muitos são simples de resolver.


Como evitar ABEND?


Validar dados


Conferir datasets


Revisar JCL


Verificar SPACE


Testar programas


Usar tratamento de erro COBOL


Como ABEND aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • CICS;

  • SORT;

  • batch;

  • automação.


Resumo rápido

ABENDSignificado
S0C7Erro numérico
S0C4Violação memória
S806Programa não encontrado
SB37Falta espaço
S322Timeout
U4038Erro aplicação

Conclusão

ABEND é o mecanismo usado pelo z/OS para indicar falhas anormais durante execução de JOBs e programas.

Aprender a interpretar ABENDs, analisar spool e entender mensagens do sistema é uma das habilidades mais importantes para qualquer profissional mainframe IBM Z.

Sem comentários:

Enviar um comentário