☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

Mostrar mensagens com a etiqueta diagnóstico de erros. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta diagnóstico de erros. Mostrar todas as mensagens

sexta-feira, 18 de janeiro de 2013

ABENDs Mais Comuns no Mainframe (z/OS, CICS, COBOL e JCL)

 

Bellacosa Mainframe lista os abends mais comuns em mainframe

ABENDs Mais Comuns no Mainframe (z/OS, CICS, COBOL e JCL)

Os ABENDs (Abnormal End) são encerramentos anormais de programas, jobs ou transações no ambiente IBM Mainframe. Eles podem ocorrer em COBOL, JCL, CICS, DB2, VSAM e no próprio sistema operacional z/OS.

No universo IBM Mainframe, o termo ABEND significa “Abnormal End”, ou seja, um encerramento anormal de um programa, job, tarefa ou transação. Em vez de finalizar corretamente, o sistema interrompe a execução porque encontrou algum erro grave que impede a continuidade do processamento. Os ABENDs fazem parte do cotidiano de operadores, programadores COBOL, analistas de suporte e administradores z/OS.

A origem da palavra vem da junção de duas palavras do inglês:

  • AB = Abnormal
  • END = Finalização ou término

O termo surgiu ainda na década de 1960, durante o desenvolvimento do sistema operacional IBM OS/360, um dos projetos mais revolucionários da história da computação. A IBM precisava de uma forma padronizada para indicar que um programa havia terminado de maneira incorreta, e assim nasceu o conceito de ABEND.

Quando ocorre um ABEND, o sistema gera códigos específicos para ajudar na investigação do problema. Alguns dos mais famosos são:

  • S0C7 → erro de dados numéricos inválidos
  • S0C4 → acesso indevido à memória
  • S806 → programa não encontrado
  • S322 → tempo de CPU excedido

No ambiente CICS também existem ABENDs conhecidos, como:

  • ASRA → erro interno do programa
  • AICA → loop infinito ou excesso de CPU
  • AEY9 → programa ausente

Os ABENDs são extremamente importantes porque ajudam a identificar falhas em programas, arquivos, permissões RACF, parâmetros JCL, tabelas VSAM e problemas de infraestrutura.

Apesar de assustarem iniciantes, os ABENDs são considerados parte natural da cultura Mainframe. Em muitos ambientes corporativos, especialmente bancos e grandes empresas, saber interpretar um ABEND é uma habilidade essencial. Ferramentas como SDSF, IPCS, Abend-AID e Fault Analyzer auxiliam os profissionais a localizar rapidamente a causa raiz do problema e restaurar o processamento com segurança.


📌 ABENDs de Sistema (Sxxx)

Esses são gerados pelo próprio z/OS.

ABENDSignificadoCausa comum
S0C1Operation ExceptionExecutar instrução inválida
S0C4Protection ExceptionAcesso inválido à memória
S0C7Data ExceptionCampo numérico inválido
S013Erro de datasetDCB incorreto ou arquivo incompatível
S222Job canceladoOperador cancelou job
S322CPU Time ExceededTempo de CPU excedido
S306Módulo não encontradoPrograma ausente na STEPLIB
S806Load module not foundPrograma não localizado
S80AFalta de memóriaRegião insuficiente
S878Storage unavailableSem espaço de memória
S913Segurança/RACFSem autorização ao dataset
S837Espaço insuficienteDataset sem espaço
S0CBDivisão por zeroOperação matemática inválida
S001Erro em OPEN/CLOSEProblema de I/O
S213Dataset protegidoConflito de acesso

💥 ABENDs COBOL Mais Famosos

🔴 S0C7 — Data Exception

O mais clássico do COBOL.

Causa

Campo numérico contendo:

  • letras

  • espaços

  • packed decimal inválido

Exemplo

MOVE 'ABC' TO WS-NUM
ADD 1 TO WS-NUM

Resultado

S0C7

🔴 S0C4 — Protection Exception

Causa

Acesso inválido à memória:

  • tabela fora do limite

  • ponteiro inválido

  • USING incorreto

Exemplo

MOVE TAB(9999) TO WS-CAMPO

🔴 S0CB — Divide Exception

Exemplo

DIVIDE WS-A BY WS-B

Se WS-B = ZERO

→ S0CB


📌 ABENDs CICS Mais Comuns

No CICS, muitos erros aparecem como RESP codes ou transaction abends.

ABENDSignificado
AEI0Timeout terminal
AEY9Programa não encontrado
ASRAExceção do programa (S0C7/S0C4 dentro do CICS)
AICALoop infinito / CPU excessiva
APCTTransaction não definida
PGMIDERRPrograma inexistente
NOTAUTHSem autorização
LENGERRTamanho inválido
MAPFAILMAP BMS não recebido

📌 ABENDs VSAM

ABENDProblema
92Logic Error
93Resource unavailable
94Sequential error
97File not closed corretamente

📌 ABENDs JCL Mais Frequentes

CódigoDescrição
JCL ERRORSintaxe inválida
IEC141IDataset não encontrado
IEC130IErro de fita/disco
IEFC001IErro de parâmetro
IEFBR14 RC=12Dataset problem

📌 Return Codes Mais Conhecidos

Nem sempre é ABEND.

RCSignificado
RC=00Sucesso
RC=04Warning
RC=08Erro leve
RC=12Erro significativo
RC=16Falha severa

🔎 Como Investigar ABENDs

Ferramentas clássicas

SDSF

Ver:

  • JESMSGLG

  • JESJCL

  • JESYSMSG


IPCS

Dump analysis avançada.


Abend-AID / Fault Analyzer

Ferramentas automáticas de diagnóstico.

Muito usadas em bancos.


CEDF / CECI (CICS)

Debug online.


📚 ABENDs que Todo Programador Mainframe Já Viu

TOP 10 lendários

  1. S0C7

  2. S0C4

  3. S806

  4. S322

  5. S913

  6. ASRA

  7. AICA

  8. S013

  9. S837

  10. S0CB


🧠 Macete Clássico

Família S0C

CódigoDica
S0C1instrução inválida
S0C4memória
S0C7dado numérico
S0CBdivisão

☕ Curiosidade Histórica

O termo ABEND surgiu ainda no OS/360 da IBM nos anos 60:

  • AB = Abnormal

  • END = Termination

Desde então virou uma das palavras mais famosas do universo mainframe.


🎯 Regra de Ouro no Mainframe

“90% dos problemas COBOL acabam sendo:
S0C7, arquivo errado ou parâmetro incorreto.” 😄

sábado, 24 de fevereiro de 2007

O que é COBOL Bug Trap e Captura de ABEND?

Bellacosa Mainframe o que é Bug Trap em Cobol


O que é COBOL Bug Trap e Captura de ABEND?

Em ambientes Mainframe, especialmente em aplicações críticas, um dos maiores desafios é descobrir rapidamente:

Por que o programa falhou?
Onde ocorreu o erro?
Qual variável causou o problema?

Para isso existem mecanismos conhecidos como:

Bug Trap

e

Captura de ABEND


O que é um ABEND?

ABEND significa:

Abnormal End

Ou seja:

Finalização Anormal

O programa termina devido a um erro.


Exemplos de ABENDs comuns

ABENDCausa
S0C7Erro de dados numéricos
S0C4Violação de memória
S806Programa não encontrado
SB37Falta de espaço
U4038Erro definido pela aplicação
ASRAExceção em CICS

Exemplo de S0C7

MOVE 'ABC' TO WS-VALOR-NUM
ADD 1 TO WS-VALOR-NUM

Resultado:

S0C7

O Problema

Sem diagnóstico adequado você recebe apenas:

JOB ABENDED

e precisa descobrir:

Qual campo?
Qual linha?
Qual programa?

O que é Bug Trap?

Bug Trap é uma técnica ou ferramenta que captura informações detalhadas antes do programa terminar.

Objetivo:

Transformar um ABEND misterioso
em um erro fácil de analisar

O que o Bug Trap captura?

  • Nome do programa

  • Data e hora

  • Parágrafo COBOL

  • Variáveis

  • SQLCODE

  • CICS EIBRESP

  • Chave VSAM

  • Dados recebidos

  • Stack de chamadas


Fluxo Simplificado

Erro
 ↓
Bug Trap
 ↓
Captura informações
 ↓
Gera relatório
 ↓
ABEND

Exemplo

Sem Bug Trap:

S0C7

Com Bug Trap:

PROGRAMA = FIN001

PARAGRAFO = CALCULA-JUROS

CAMPO = WS-SALDO

VALOR = ABCDEF

ABEND = S0C7

Captura de ABEND no COBOL

Uma prática comum é criar rotinas padronizadas.


Exemplo

IF SQLCODE NOT = 0

   PERFORM TRATA-ERRO

END-IF

Rotina de Tratamento

TRATA-ERRO.

DISPLAY 'ERRO SQL'

DISPLAY SQLCODE

MOVE 16 TO RETURN-CODE

STOP RUN.

Capturando FILE STATUS

Muito comum em arquivos.


READ ARQCLIENTE

IF WS-FS NOT = '00'

   DISPLAY 'ERRO LEITURA'

   DISPLAY WS-FS

END-IF

Captura de SQLCODE

Programas DB2.


EXEC SQL

   SELECT ...

END-EXEC

IF SQLCODE NOT = 0

   DISPLAY SQLCODE

END-IF

Captura de CICS

Programas online.


EXEC CICS

   READ FILE(...)

   RESP(WS-RESP)

END-EXEC

IF WS-RESP NOT = DFHRESP(NORMAL)

   DISPLAY WS-RESP

END-IF

Uso de Declaratives

COBOL possui tratamento nativo.


DECLARATIVES.

ARQ-ERROR SECTION.

USE AFTER STANDARD ERROR PROCEDURE
ON ARQCLIENTE.

DISPLAY 'ERRO ARQUIVO'.

END DECLARATIVES.

LE Condition Handler

No ambiente IBM Language Environment (LE).


Pode interceptar:

S0C7
S0C4
Overflow
Underflow

Ferramentas modernas utilizam LE para coletar:

  • Call Stack

  • Variáveis

  • Offset

  • PSW


Ferramentas Comerciais


IBM Fault Analyzer

Uma das mais utilizadas.

Captura automaticamente:

  • ABEND

  • Variáveis

  • Fonte COBOL

  • Call Stack


IBM Application Performance Analyzer

Auxilia análise de execução.


Abend-AID

Muito popular em bancos.

Produz relatórios detalhados.


Xpediter

Debug e análise de falhas.


Exemplo Fault Analyzer

Após um S0C7:

ABEND S0C7

PROGRAMA:
FIN001

PARAGRAFO:
CALCULA-PARCELA

CAMPO:
WS-VALOR

CONTEUDO:
ABC123

Exemplo Abend-AID

Mostra:

Linha COBOL

Variáveis

Offsets

Call Stack

Storage

Captura Manual (Estilo Bellacosa)

Uma prática comum é criar um copybook corporativo.


COPY LOGERRO.

Sempre que ocorrer erro:

PERFORM REGISTRA-ERRO

Grava:

Programa

Parágrafo

Usuário

Data

Hora

SQLCODE

File Status

Mensagem

Exemplo de Log

PROGRAMA=FIN001

PARAGRAFO=ATUALIZA-SALDO

SQLCODE=-911

USUARIO=BELLA01

DATA=20260801

HORA=14:35:21

Captura de Call Stack

Especialmente importante em:

CALL
CALL
CALL
CALL

Exemplo:

MAIN
 ↓
CALCULO
 ↓
JUROS
 ↓
VALIDA

Erro ocorreu em:

VALIDA

Captura de Dumps

Ferramentas analisam:

SYSUDUMP
SYSABEND
CEEDUMP

CEEDUMP

Muito usado com Language Environment.

Contém:

  • variáveis;

  • registradores;

  • call stack;

  • offsets.


Boas Práticas

✅ Sempre verificar FILE STATUS

✅ Sempre verificar SQLCODE

✅ Tratar RESP em CICS

✅ Gerar logs padronizados

✅ Produzir CEEDUMP

✅ Utilizar Fault Analyzer ou Abend-AID

✅ Registrar contexto do erro


Curiosidade

Em muitos bancos, mais de 90% dos incidentes COBOL são resolvidos sem abrir um dump completo porque as rotinas de Bug Trap já registram:

Programa
Parágrafo
Campo
Valor inválido
Usuário
Transação

permitindo localizar a causa raiz em poucos minutos.


Resumo Rápido

ConceitoFunção
ABENDFinalização anormal
S0C7Erro numérico
S0C4Violação memória
Bug TrapCaptura contexto do erro
CEEDUMPDump do LE
SYSUDUMPDump sistema
SQLCODEErro DB2
FILE STATUSErro arquivo
RESPErro CICS
Fault AnalyzerDiagnóstico IBM
Abend-AIDDiagnóstico avançado
XpediterDebug

Conclusão

Bug Trap é o conjunto de técnicas e ferramentas utilizadas para capturar informações detalhadas antes ou durante um ABEND. Em ambientes COBOL corporativos, ele é essencial para acelerar a análise de incidentes, identificar a causa raiz e reduzir drasticamente o tempo de diagnóstico de erros em aplicações Batch, CICS, IMS e DB2.


Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...