☕ 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 SYSUDUMP. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta SYSUDUMP. Mostrar todas as mensagens

sexta-feira, 27 de março de 2026

🔥 COBOL NÃO QUEBROU… FOI O RTM QUE DECIDIU O DESTINO

 

Bellacosa Mainframe explica rtm o grande guarda-costas.

🔥 COBOL NÃO QUEBROU… FOI O RTM QUE DECIDIU O DESTINO

Se você trabalha com COBOL há anos, já viu isso acontecer:

💥 S0C7
💥 S0C4
💥 S878
…e aquele silêncio constrangedor no batch.

E aí vem a pergunta clássica:

👉 “O que aconteceu?”

Errado.

A pergunta certa é:

🧠 “O que o z/OS fez quando isso aconteceu?”

Porque no exato momento do ABEND…
quem assume o controle não é o seu programa.

É o RTM — Recovery Termination Manager.


🧠 O RTM: o juiz invisível do seu programa

O RTM é um componente do z/OS que entra em ação sempre que algo relevante acontece:

  • ✔️ Erro
  • ✔️ Falha
  • ✔️ Terminação normal (sim!)

👉 Ele é responsável por:

  • Capturar o erro
  • Tentar recuperar
  • Decidir o destino
  • Registrar tudo

💡 Tradução Bellacosa:

🔥 “O RTM é quem decide se seu programa vive… ou vira dump.”


🚨 Quando o ABEND acontece (o bastidor real)

Você vê:

S0C7 – erro de dados

O RTM vê:

  • Tipo de exceção
  • Estado da CPU (PSW)
  • Registradores
  • Control blocks
  • Contexto da task

👉 E imediatamente inicia o fluxo:

Erro → RTM → Recovery → Decisão → Dump → Investigação

💡 Isso acontece em milissegundos.


⚙️ Os serviços do RTM (o que ele realmente faz)

1️⃣ Captura do erro (o “detetive”)

O RTM intercepta:

  • Program checks (S0C4, S0C7…)
  • I/O errors
  • Machine checks
  • Falhas de memória

👉 Ele coleta o estado completo do sistema.

💡 Easter egg:

O SDWA é criado aqui — é literalmente o “snapshot do crime”.


2️⃣ Tentativa de recuperação (o “paramédico”)

Aqui entram os famosos:

  • ESTAE → nível da aplicação
  • FRR → nível do sistema

👉 O RTM pergunta:

“Alguém consegue salvar isso?”

💡 Curiosidade:

  • Muitos sistemas robustos usam ESTAE para evitar queda total
  • COBOL “puro” raramente usa diretamente… mas se beneficia disso sem saber

3️⃣ Decisão (o “juiz”)

Depois da tentativa:

  • Continua execução?
  • Finaliza a task?
  • Derruba o address space?

👉 Essa decisão é crítica.

💡 Insight:

Nem todo erro vira ABEND visível — alguns são absorvidos


4️⃣ Geração de evidência (o “perito”)

O RTM gera:

  • SYSUDUMP / SYSABEND / SYSMDUMP
  • SVC dump
  • LOGREC

👉 Isso vira seu material de análise.

💡 Frase forte:

Sem dump, você está cego.


🧹 RTM também limpa a bagunça (e isso é pouco falado)

Agora vem o que pouca gente sabe:

🔥 O RTM também atua quando TUDO DÁ CERTO

Quando seu job termina normalmente:

  • Fecha datasets
  • Libera memória
  • Cancela timers
  • Remove enqueues
  • Limpa control blocks

👉 Isso é feito de forma extremamente eficiente.

💡 Comentário Bellacosa:

“Se o RTM não limpasse… o z/OS virava um lixão em minutos”


🧩 RTM1 vs RTM2 (nível raiz)

🔹 RTM1 (System Level)

  • Falhas do sistema
  • Interface com FRR

🔹 RTM2 (Task Level)

  • Programas (COBOL aqui 👈)
  • Interface com ESTAE

👉 Fluxo clássico:

Erro

RTM1

FRR

RTM2

ESTAE

Decisão

💡 Isso é arquitetura de verdade.


📦 Dumps: o presente que ninguém quer… mas precisa

Tipos que você já viu:

  • SYSUDUMP → básico
  • SYSABEND → completo
  • SYSMDUMP → raiz (hex)

👉 E os de sistema:

  • SVC Dump
  • Standalone Dump

💡 Dica prática:

🔥 “Se o problema é estranho… peça SYSMDUMP”


🗂️ LOGREC: o histórico que salva sua vida

LOGREC guarda:

  • Erros de hardware
  • Eventos do sistema
  • Condições críticas

💡 Dica de ouro:

👉 Sempre comece por LOGREC antes do dump


🧠 SLIP e DAE (nível ninja)

🔹 SLIP

  • Armadilha de erro
  • Dispara dump sob condição

🔹 DAE

  • Evita dumps duplicados

💡 Produção sem isso:

caos + storage cheio


💥 Aplicação prática (COBOL raiz)

S0C7 — o clássico

👉 Normalmente:

  • Dado inválido em campo numérico

Mas o RTM te dá:

  • Instrução que falhou
  • Endereço
  • Conteúdo do campo

💡 Dica prática:

  1. Veja PSW
  2. Ache a instrução
  3. Verifique o dado
  4. Volte no código

🧠 Insight final (o que separa níveis)

❌ Júnior: “Deu S0C7”
❌ Pleno: “Campo inválido”
✅ Sênior: “Eu sei exatamente onde e por quê”


🏁 Conclusão (sem mimimi)

O RTM é:

  • 🔥 O guardião da estabilidade
  • 🔍 O perito do erro
  • ⚖️ O juiz da execução
  • 🧹 O faxineiro do sistema

💬 Frase pra levar pra vida

“COBOL não quebra…
o RTM só revela o que já estava errado.”

 

segunda-feira, 19 de abril de 2021

ABEND sem Mistérios — Parte II

 

Bellacosa Mainframe abend sem misterios parte II

☕ Um Café no Bellacosa Mainframe

ABEND sem Mistérios — Parte II

Como um Programador Padawan Aprende a Investigar Dumps, Mensagens e Descobrir a Verdadeira Causa de um ABEND

"O ABEND nunca é o verdadeiro problema. Ele é apenas o último grito do sistema antes de interromper a execução."


Introdução

No primeiro artigo vimos o que é um ABEND, como ele nasce e conhecemos os principais códigos encontrados no dia a dia de um programador COBOL.

Mas existe uma pergunta que diferencia um programador iniciante de um profissional experiente.

Não é:

"Qual foi o ABEND?"

A pergunta correta é:

"Por que ele aconteceu?"

É aqui que começa o verdadeiro trabalho.

O ABEND é apenas o sintoma.

A causa quase sempre aconteceu vários segundos — ou milhares de instruções — antes.

Aprender a investigar um ABEND é muito parecido com o trabalho de um perito criminal.

O investigador nunca chega ao local perguntando:

"Quem é o culpado?"

Ele primeiro coleta evidências.

No IBM Z acontece exatamente a mesma coisa.


O que realmente acontece quando um programa falha?

Imagine uma execução simples.

JES2

↓

Initiator

↓

Language Environment

↓

Programa COBOL

↓

OPEN CLIENTES

↓

READ

↓

PROCESSA

↓

WRITE

↓

END

Agora imagine que durante um cálculo acontece um S0C7.

O sistema imediatamente interrompe tudo.

Mas antes de encerrar, ele registra uma enorme quantidade de informações.

É exatamente isso que usamos na investigação.


O IBM Z deixa pistas

Quando ocorre um ABEND, normalmente encontramos diversas evidências.

Entre elas:

  • JESMSGLG

  • JESYSMSG

  • SYSOUT

  • SYSPRINT

  • SYSUDUMP

  • SYSMDUMP

  • CEEDUMP

  • CEEMSG

  • mensagens IEC

  • mensagens IEF

  • mensagens DFH (CICS)

Cada uma responde perguntas diferentes.


O primeiro erro do iniciante

O Padawan normalmente faz isto:

ABEND=S0C7

↓

Corrige uma variável

↓

Executa novamente

O profissional faz diferente.

ABEND

↓

Mensagens

↓

JCL

↓

Dump

↓

Código

↓

Dados

↓

Correção

A diferença parece pequena.

Mas economiza horas de trabalho.


Entendendo o JESMSGLG

O JESMSGLG é praticamente um diário da execução.

Ele informa:

  • início do JOB;

  • alocação dos datasets;

  • criação de arquivos temporários;

  • início de cada STEP;

  • mensagens do sistema;

  • encerramento.

Muitas vezes a causa aparece ali mesmo.

Exemplo:

IEC141I 013-20

Nesse momento você já sabe que provavelmente existe um problema na abertura de arquivos.

Nem precisa olhar o COBOL ainda.


O papel do JESYSMSG

Enquanto o JESMSGLG conta a história,

o JESYSMSG mostra as mensagens produzidas pelo sistema operacional.

Ali aparecem mensagens como:

IEF142I

IEC141I

IGD

IDC

CSV

IEA

ICH

Cada prefixo pertence a um componente do z/OS.

Com o tempo, o programador começa a reconhecê-los automaticamente.


O que é o SYSOUT?

Toda instrução

DISPLAY

vai parar no SYSOUT.

Muitos bancos utilizam DISPLAY apenas durante testes.

Mas programas bem escritos produzem mensagens extremamente úteis.

Exemplo:

Cliente

123456

Saldo

250.00

Calculando Juros...

Se logo depois aparece um S0C7...

Já sabemos exatamente onde procurar.


DISPLAY é seu amigo

Nunca tenha medo de utilizar DISPLAY durante o desenvolvimento.

Exemplo:

DISPLAY 'ENTROU NO PARAGRAFO A'

DISPLAY WS-CLIENTE

DISPLAY WS-SALDO

DISPLAY SQLCODE

Depois de homologado...

Eles podem ser removidos ou controlados por parâmetros.


O famoso CEEDUMP

Se existe um documento que todo programador COBOL deveria aprender,

é o CEEDUMP.

Ele é produzido pelo Language Environment.

Nele encontramos:

  • última instrução executada;

  • registradores;

  • call stack;

  • variáveis;

  • condições;

  • traceback;

  • offsets;

  • informações do compilador.

É praticamente uma fotografia completa do programa no momento da falha.


O Call Stack

Imagine o programa abaixo.

PROGRAMA A

↓

CALL B

↓

CALL C

↓

CALL D

↓

S0C4

O CEEDUMP mostra exatamente esse caminho.

A

↓

B

↓

C

↓

D

Agora sabemos onde investigar.


O Traceback

O traceback mostra:

Programa

↓

Seção

↓

Parágrafo

↓

Offset

Por exemplo:

CLIENTE

↓

CALCULA-JUROS

↓

0000A8

Esse offset permite localizar a instrução responsável.


O que são Offsets?

Um executável não trabalha com número de linhas.

Ele trabalha com endereços.

Imagine:

Linha 100

↓

Offset 00A2

O compilador gera um mapa relacionando:

offset

linha COBOL

Ferramentas como Fault Analyzer, Abend-AID e Debug Tool fazem essa conversão automaticamente.


Registradores

Durante a execução o processador utiliza registradores.

No IBM Z temos registradores gerais.

Quando ocorre um dump, normalmente vemos algo parecido com:

R0

R1

R2

...

R15

Eles informam:

  • parâmetros;

  • endereços;

  • retorno de CALL;

  • ponteiros;

  • áreas de memória.

Para quem trabalha com LE e Assembler, esses registradores são ouro puro.


O famoso PSW

Outra informação importante é o:

Program Status Word

Ele informa:

  • endereço atual;

  • estado do processador;

  • modo de execução;

  • condição.

Quando alguém diz:

"Veja o PSW"

Está dizendo:

"Descubra exatamente onde a CPU estava quando tudo parou."


Dumps

Existem vários tipos.

SYSUDUMP

Mais compacto.

Muito utilizado para aplicações.


SYSMDUMP

Muito mais completo.

Contém grandes regiões de memória.

É excelente para análise profunda.


CEEDUMP

Voltado ao Language Environment.

É o favorito dos desenvolvedores COBOL.


Como investigar um S0C7

Imagine:

COMPUTE

TOTAL = VALOR * TAXA

Resultado:

S0C7

Primeira pergunta:

VALOR

é numérico?

Segunda:

TAXA

é válida?

Terceira:

Quem carregou essas variáveis?

A origem do erro pode estar dezenas de linhas antes.


Como investigar um S0C4

Perguntas clássicas:

Existe índice fora do OCCURS?

Existe tabela sem inicialização?

Existe ponteiro inválido?

CALL recebeu parâmetros errados?

LINKAGE está correta?

O programa acessou memória liberada?


Como investigar um S013

Antes de abrir o COBOL...

Verifique:

DDNAME

↓

RECFM

↓

LRECL

↓

BLKSIZE

↓

DISP

↓

Dataset correto

↓

Catalogado?

↓

Existe?

Muitas vezes o COBOL está perfeito.

O erro está no JCL.


A importância do JCL

Programadores iniciantes tendem a pensar:

"Meu trabalho termina no COBOL."

Na prática,

bons programadores COBOL conhecem muito bem:

  • JCL;

  • IDCAMS;

  • SORT;

  • IEBGENER;

  • DFSORT;

  • GDGs;

  • VSAM;

  • Catalog.

Quanto melhor você entender o ambiente,

menos ABENDs terá.


O papel do CICS

Quando aparece:

ASRA

O erro raramente começa no CICS.

O CICS apenas detectou que algo deu errado dentro do programa.

A investigação continua:

ASRA

↓

DFH Messages

↓

Trace

↓

Dump

↓

Programa

Ferramentas utilizadas pelos grandes bancos

Pouquíssimos profissionais analisam dumps manualmente o tempo todo.

Grandes instituições normalmente utilizam ferramentas como:

  • IBM Fault Analyzer

  • IBM Debug Tool

  • IBM Application Performance Analyzer

  • IBM File Manager

  • Abend-AID (BMC)

  • Xpediter

  • IBM IPCS

  • IBM Developer for z/OS (IDz)

Essas ferramentas aceleram a análise ao transformar endereços, offsets e registradores em informações mais fáceis de interpretar.

Mesmo assim, elas não substituem o conhecimento. Um bom analista sabe interpretar as evidências e confirmar se a ferramenta está apontando a causa correta.


Um roteiro de investigação profissional

Sempre que receber um chamado de produção, siga uma sequência lógica:

Receber o chamado

↓

Anotar o ABEND

↓

Identificar STEP

↓

Consultar JESMSGLG

↓

Consultar JESYSMSG

↓

Verificar SYSOUT

↓

Ler CEEDUMP

↓

Localizar o traceback

↓

Encontrar o offset

↓

Relacionar com o código COBOL

↓

Analisar os dados de entrada

↓

Reproduzir o erro

↓

Corrigir

↓

Testar novamente

Essa abordagem evita "chutes" e torna a investigação repetível.


Os erros mais comuns dos Padawans

  • Corrigir o código sem ler as mensagens do sistema.

  • Ignorar o JCL e assumir que o COBOL está errado.

  • Não validar dados antes de cálculos e conversões.

  • Usar índices ou subscritos fora dos limites de tabelas.

  • Não conferir SQLCODE, FILE STATUS ou RESP/RESP2 após operações críticas.

  • Descartar o CEEDUMP sem analisá-lo.

  • Não reproduzir o problema em ambiente de testes antes de aplicar uma correção.


O perfil de um excelente investigador de ABEND

Os profissionais mais respeitados em grandes bancos raramente são aqueles que escrevem mais código.

São aqueles que conseguem responder rapidamente perguntas como:

  • O erro veio do programa ou do ambiente?

  • O problema é de dados, lógica ou infraestrutura?

  • O ABEND é a causa ou apenas a consequência?

  • Qual foi a primeira mensagem relevante?

  • É possível reproduzir o problema?

Eles tratam cada incidente como uma investigação técnica, baseada em evidências.


Conclusão

Dominar ABENDs não significa decorar centenas de códigos. Significa desenvolver uma forma estruturada de pensar.

O IBM Z sempre deixa pistas: mensagens, dumps, registradores, traceback, offsets e logs. Quem aprende a reuni-las deixa de agir por tentativa e erro e passa a trabalhar como um verdadeiro engenheiro de software.

Todo programador passa pelo primeiro S0C7, pelo primeiro S0C4 ou pelo primeiro ASRA. A diferença está em como reage. O iniciante vê apenas um erro. O profissional enxerga uma oportunidade de compreender melhor o funcionamento interno do sistema.

No fim, os melhores desenvolvedores COBOL não são aqueles que nunca encontram ABENDs. São aqueles que conseguem transformá-los em conhecimento, experiência e sistemas cada vez mais confiáveis.

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.


domingo, 28 de janeiro de 2007

O que é um Dump em Mainframe?

 

Bellacosa Mainframe explica Dump no Mainframe

O que é um Dump em Mainframe?

Quando um JOB sofre:

  • ABEND;

  • falha COBOL;

  • erro de memória;

  • problema no sistema;

o z/OS pode gerar algo extremamente importante chamado:

DUMP

Para iniciantes, dump parece algo assustador cheio de números estranhos.

Mas na prática ele é:

uma fotografia técnica do erro.


Definição simples

Dump é:

uma captura das informações da memória no momento da falha.

Ele ajuda a descobrir:

  • o que aconteceu;

  • onde ocorreu o erro;

  • qual variável causou problema;

  • qual instrução falhou.


Analogia simples

Imagine um acidente de carro.

Os investigadores analisam:

  • posição dos veículos;

  • marcas no chão;

  • velocidade;

  • danos.

O dump funciona exatamente assim:

ele registra o estado do programa no momento do erro.


O que o dump pode conter?

  • memória;

  • registradores;

  • variáveis;

  • instruções;

  • módulos;

  • chamadas de programa;

  • status do sistema.


Quando um dump é gerado?

Normalmente durante:

  • ABEND;

  • S0C7;

  • S0C4;

  • falha COBOL;

  • erro DB2;

  • erro CICS;

  • falha sistema.


Onde o dump aparece?

Principalmente:

  • spool;

  • SYSUDUMP;

  • SYSABEND;

  • CEEDUMP;

  • datasets de dump.


O que é SYSUDUMP?

Cartão DD usado para:

gerar dump simplificado.


Exemplo

//SYSUDUMP DD SYSOUT=*

Muito usado em troubleshooting


O que é SYSABEND?

Gera:

dump mais completo e detalhado.


Exemplo

//SYSABEND DD SYSOUT=*

O que é SYSMDUMP?

Dump binário/extenso.

Muito usado por suporte avançado IBM.


Exemplo

//SYSMDUMP DD DSN=MEU.DUMP,
// DISP=(NEW,CATLG)

O que é CEEDUMP?

Dump do:

Language Environment (LE).

Muito usado em:

  • COBOL;

  • PL/I;

  • C.


Exemplo

//CEEDUMP DD SYSOUT=*

O que existe dentro de um dump?


Registradores CPU

Estado do processador.


Endereços memória

Onde ocorreu falha.


Variáveis COBOL

Conteúdo dos campos.


Call stack

Sequência de chamadas.


Instrução que falhou

Linha/instrução responsável.


Como um dump aparece?

Exemplo típico:

PSW AT TIME OF ERROR

Ou:

REGISTER CONTENTS

Ou:

SYSTEM COMPLETION CODE=0C7

O que é PSW?

Program Status Word

Mostra estado da CPU no erro.


O que são registradores?

Pequenas áreas da CPU usadas durante execução.


O que é traceback?

Sequência de chamadas do programa.

Ajuda localizar:

  • módulo;

  • parágrafo;

  • rotina.


Dumps mais comuns no COBOL


S0C7

Erro numérico.


S0C4

Violação memória.


U4038

Erro aplicação.


Como analisar dump?


1. Identificar ABEND

Exemplo:

S0C7

2. Verificar módulo

Nome do programa.


3. Ler mensagens LE

Mensagens:

  • IGZ;

  • CEE.


4. Verificar campo problemático

Muito comum em COBOL.


5. Ler traceback


Exemplo COBOL clássico

Campo esperado:

99999

Valor recebido:

12A45

Resultado:

S0C7.

O dump ajuda localizar exatamente qual campo causou problema.


Como programadores usam dumps?

Para:

  • debugging;

  • análise de falhas;

  • localizar bugs;

  • entender memória.


Como operadores usam dumps?

Para:

  • abrir incidentes;

  • analisar ABEND;

  • enviar para suporte.


Dumps são grandes?

Muito.

Alguns podem ter:

  • milhares;

  • milhões de linhas.


Por isso muitos iniciantes se assustam

Mas normalmente:

apenas pequenas partes são realmente importantes.


O que procurar primeiro?


ABEND CODE


MODULE NAME


PSW


REGISTER CONTENTS


CEE/IGZ messages


TRACEBACK


O que é IPCS?

Ferramenta avançada de análise dump no z/OS.

Usada por:

  • suporte IBM;

  • sysprog;

  • especialistas sistema.


Dumps ajudam a resolver:

  • corrupção memória;

  • erro COBOL;

  • falha DB2;

  • problemas CICS;

  • loops;

  • storage violations.


Curiosidades incríveis

1. Dumps existem desde os primeiros mainframes IBM


2. Alguns dumps possuem milhares de páginas


3. Especialistas em dump são extremamente valorizados


4. Muitos problemas críticos só podem ser resolvidos via dump


Erros comuns de iniciantes


1. Ignorar dump


2. Não incluir SYSUDUMP

Dificulta troubleshooting.


3. Assustar-se com hexadecimal

Grande parte pode ser ignorada inicialmente.


4. Ler dump inteiro

Normalmente basta:

  • mensagens;

  • traceback;

  • ABEND.


Dicas importantes

Sempre use:

//SYSUDUMP DD SYSOUT=*

durante testes.


Aprenda:

  • S0C7;

  • S0C4;

  • U4038.


Leia mensagens CEE e IGZ


Use CEEDUMP em COBOL


Como dump aparece no dia a dia?

Praticamente em:

  • COBOL;

  • DB2;

  • CICS;

  • batch;

  • produção;

  • troubleshooting.


Fluxo simplificado

ERRO
 ↓
ABEND
 ↓
DUMP
 ↓
ANÁLISE
 ↓
CORREÇÃO

Resumo rápido

TipoFunção
SYSUDUMPDump simplificado
SYSABENDDump detalhado
SYSMDUMPDump binário
CEEDUMPDump LE/COBOL
PSWEstado CPU
TracebackSequência chamadas

Conclusão

Dump é uma das ferramentas mais importantes de troubleshooting no ambiente mainframe IBM Z.

Ele registra o estado do sistema e do programa no momento da falha, permitindo analisar ABENDs, localizar erros e resolver problemas complexos no z/OS com precisão.

sábado, 27 de janeiro de 2007

Como Interpretar SYSOUT num JOB e Quais DDs Auxiliam o JCL

 

Bellacosa Mainframe explica sysout 

Como Interpretar SYSOUT num JOB e Quais DDs Auxiliam o JCL

Quando começamos a trabalhar com:

  • JCL;

  • JES2;

  • SDSF;

  • spool;

  • processamento batch;

uma das habilidades mais importantes é aprender a:

interpretar SYSOUT.

É no SYSOUT que normalmente descobrimos:

  • erros;

  • resultados;

  • mensagens;

  • ABENDs;

  • comportamento do programa.

Além disso, existem vários cartões:

DD (Data Definition)

que ajudam o JCL e o programa durante execução.


Primeiro: o que é SYSOUT?

SYSOUT significa:

System Output.

É a saída gerada durante execução do JOB.


O SYSOUT pode conter:

  • mensagens COBOL;

  • relatórios;

  • DISPLAY;

  • SQLCODE;

  • erros;

  • estatísticas;

  • logs batch.


Onde visualizar SYSOUT?

Principalmente no:

SDSF.


Como acessar?

SDSF

Depois:

ST

Selecionar JOB:

?

ou:

S

O que aparece no spool?

Arquivos como:

  • JESJCL;

  • JESMSGLG;

  • JESYSMSG;

  • SYSOUT;

  • CEEDUMP.


O SYSOUT é diferente dos outros arquivos


JESJCL

Mostra JCL interpretado.


JESMSGLG

Mensagens JES2.


JESYSMSG

Mensagens do sistema.


SYSOUT

Saída da aplicação/programa.


Exemplo simples de SYSOUT

Programa COBOL:

DISPLAY 'PROCESSAMENTO OK'

No spool aparece:

PROCESSAMENTO OK

O que analisar primeiro no SYSOUT?


1. Return Code (RC)

Exemplo:

CC 0000

Sucesso.


2. Mensagens de erro

Procurar:

  • ERROR;

  • ABEND;

  • SQLCODE;

  • FILE STATUS.


3. Quantidade processada

Exemplo:

REGISTROS LIDOS: 15000

4. Tempo de execução


5. Estatísticas batch


Exemplo de SYSOUT típico

INICIO PROCESSAMENTO
ARQUIVO ABERTO
1000 REGISTROS PROCESSADOS
FIM NORMAL

Como identificar problemas?


Mensagens COBOL

IGZ0006S

Erro COBOL.


SQLCODE

SQLCODE = -911

Problema DB2.


FILE STATUS

FILE STATUS 35

Arquivo não encontrado.


ABEND

S0C7

Erro numérico.


O que são cartões DD?

DD significa:

Data Definition.

São instruções JCL que definem:

  • arquivos;

  • SYSOUT;

  • bibliotecas;

  • parâmetros.


Exemplo básico

//SYSOUT DD SYSOUT=*

Principais cartões DD que auxiliam o JCL


SYSOUT

Define saída do spool.


SYSIN

Entrada de parâmetros/comandos.


SYSPRINT

Mensagens e relatórios do programa.


SYSUDUMP

Dump em caso de erro.


CEEDUMP

Dump do Language Environment.


STEPLIB

Bibliotecas de LOAD modules.


JOBLIB

Bibliotecas do JOB inteiro.


SORTIN

Entrada do SORT.


SORTOUT

Saída do SORT.


SYSABOUT

Dump do sistema.


SYSDBOUT

Mensagens DB2.


Explicando os principais DDs


SYSOUT DD

Muito comum:

//SYSOUT DD SYSOUT=*

Envia saída para spool.


SYSIN DD

Usado para comandos/parâmetros.

Exemplo:

//SYSIN DD *
 SORT FIELDS=COPY
/*

STEPLIB DD

Define bibliotecas de programas.

Exemplo:

//STEPLIB DD DSN=MEU.LOADLIB,
// DISP=SHR

Sem STEPLIB…

Pode ocorrer:

S806

Programa não encontrado.


SYSPRINT DD

Saída de relatórios e logs.


Exemplo

//SYSPRINT DD SYSOUT=*

SYSUDUMP DD

Gera dump para análise de ABEND.


Exemplo

//SYSUDUMP DD SYSOUT=*

Muito importante em troubleshooting


CEEDUMP DD

Dump do:

Language Environment.

Muito usado em:

  • COBOL;

  • C;

  • PL/I.


JOBLIB vs STEPLIB


JOBLIB

Vale para todo JOB.


STEPLIB

Vale apenas para STEP específico.


Exemplo JOBLIB

//JOBLIB DD DSN=EMPRESA.LOADLIB,
// DISP=SHR

Exemplo STEPLIB

//STEPLIB DD DSN=TESTE.LOADLIB,
// DISP=SHR

Como interpretar SYSOUT corretamente?


Ler começo e final


Procurar:

  • RC;

  • ERROR;

  • SQLCODE;

  • ABEND.


Verificar contadores


Conferir datasets


Observar mensagens JES2


Exemplo completo de troubleshooting


RC

CC 0012

SYSOUT mostra:

FILE STATUS 35

Conclusão

Arquivo não encontrado.


Fluxo ideal de análise

RC
 ↓
JESMSGLG
 ↓
JESYSMSG
 ↓
SYSOUT
 ↓
DUMP
 ↓
SOLUÇÃO

Curiosidades incríveis

1. Grandes batchs geram milhões de linhas de SYSOUT


2. Operadores monitoram SYSOUT constantemente


3. Muitas falhas só aparecem no SYSPRINT


4. Dumps podem ocupar enorme espaço spool


Erros comuns de iniciantes


1. Ignorar SYSOUT


2. Não usar SYSUDUMP

Dificulta troubleshooting.


3. Esquecer STEPLIB

Causa S806.


4. Não analisar SQLCODE

Muito importante em DB2.


Dicas importantes

Sempre utilize:

//SYSOUT DD SYSOUT=*

Durante testes inclua:

//SYSUDUMP DD SYSOUT=*

Aprenda FILE STATUS COBOL


Leia JESYSMSG junto com SYSOUT


Como isso aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • SORT;

  • CICS batch;

  • automação;

  • produção.


Resumo rápido

DDFunção
SYSOUTSaída spool
SYSINEntrada comandos
SYSPRINTRelatórios/logs
SYSUDUMPDump erro
CEEDUMPDump LE
STEPLIBBiblioteca programa
JOBLIBBiblioteca JOB

Conclusão

Interpretar SYSOUT é uma das habilidades mais importantes no ambiente mainframe IBM Z.

É através dele que operadores e programadores analisam resultados, identificam erros, entendem ABENDs e realizam troubleshooting eficiente em JOBs batch no z/OS.


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...