Translate

Mostrar mensagens com a etiqueta jes3. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta jes3. Mostrar todas as mensagens

quinta-feira, 21 de maio de 2026

☕🔥 Guia Completo — ABENDs Clássicos do IBM OS/VS e z/OS

Bellacosa Mainframe e a lista de abends


☕🔥 Guia Completo — ABENDs Clássicos do IBM OS/VS e z/OS

Excelente observação!
No resumo anterior realmente ficaram faltando vários ABENDs importantes da lista original do artigo histórico do OS/VS. Agora segue a versão completa, revisada e expandida, incluindo TODOS os códigos mencionados no documento.


🔥 S013 — OPEN ERROR / DCB ERROR

Mensagem comum

IEC141I

O que significa

Falha ao abrir dataset.

Principais causas

  • BLKSIZE incompatível

  • RECFM incorreto

  • LRECL errado

  • Membro inexistente em PDS

Muito comum em

  • SORT

  • COBOL batch

  • IDCAMS


🔥 S0C1 — OPERATION EXCEPTION

O que significa

Execução de instrução inválida.

Causas

  • Overlay de memória

  • Programa corrompido

  • Executar área de dados como código

  • Compilação/link incorreto


🔥 S0C4 — PROTECTION EXCEPTION

O clássico absoluto do z/OS

O que significa

Acesso inválido à memória.

Causas comuns

  • Subscript fora do limite

  • Ponteiro inválido

  • Tabela ultrapassada

  • LINKAGE SECTION incorreta


🔥 S0C5 — ADDRESSING EXCEPTION

O que significa

Tentativa de acessar endereço inexistente.

Muito comum em

  • CALLs errados

  • Parâmetros incompatíveis

  • Ponteiros inválidos


🔥 S0C7 — DATA EXCEPTION

O ABEND mais famoso do COBOL

O que significa

Campo numérico contém valor inválido.

Exemplos clássicos

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

Principais causas

  • Campo COMP-3 corrompido

  • Dados não numéricos

  • Index fora da tabela

  • Working-storage sem inicialização


🔥 S106 — LINK/LOAD ERROR

O que significa

Falha durante LOAD ou LINK.

Causas

  • Biblioteca incorreta

  • Módulo inconsistente

  • Problema de disco


🔥 S213 — DATASET NOT FOUND

Mensagem comum

IEC143I

O que significa

Dataset inexistente.

Causas

  • DSNAME errado

  • Dataset não catalogado

  • VOL=SER incorreto


🔥 S222 — JOB CANCELADO

Mensagem comum

IEF301I

O que significa

Operador cancelou o job.

Normalmente ocorre por

  • Loop infinito

  • Job preso

  • Alto consumo


🔥 S2F3 — SYSTEM FAILURE

O que significa

Falha do sistema operacional durante execução.

Causas

  • Crash do sistema

  • IPL

  • Problema interno do z/OS

Procedimento

  • Reexecutar o job

  • Verificar logs do sistema


🔥 S322 — TIME EXCEEDED

O que significa

Job excedeu o tempo permitido.

Muito comum em

  • Loops infinitos

  • SQL sem índice

  • SORT gigantes

Exemplo

TIME=1

🔥 S613 — TAPE I/O ERROR

Mensagem comum

IEC147I

O que significa

Erro de I/O em fita magnética.

Causas

  • Fita mal posicionada

  • Multi-volume incorreto

  • Problema físico na fita


🔥 S722 — SYSOUT LIMIT EXCEEDED

O que significa

Quantidade de linhas impressas excedeu limite.

Muito comum em

  • LOOP com DISPLAY

  • Relatórios infinitos

  • Dumps excessivos


🔥 S804 — INSUFFICIENT VIRTUAL STORAGE

O que significa

Falta de memória virtual.

Causas

  • REGION pequena

  • Programa gigante

  • Uso excessivo de tabelas

Exemplo

REGION=512K

🔥 S806 — MODULE NOT FOUND

O loader não encontrou o módulo

Causas

  • STEPLIB errada

  • LOADLIB ausente

  • Nome incorreto do programa

Mensagem clássica

CSV003I REQUESTED MODULE NOT FOUND

🔥 S80A — STORAGE SHORTAGE

O que significa

Complemento do S804.

Causa principal

Falta de memória virtual disponível.


🔥 S813 — TAPE LABEL ERROR

Mensagem comum

IEC149I

O que significa

Nome do dataset na fita não bate com DD.

Causas

  • LABEL incorreto

  • DSNAME errado

  • Volume errado


🔥 S913 — RACF SECURITY VIOLATION

Mensagem comum

IEC150I

O que significa

Acesso negado pelo RACF.

Muito comum em

  • Produção

  • Db2

  • GDGs

  • VSAM corporativo


🔥 SA13 — END OF TAPE / FILE NOT FOUND

Mensagem comum

IEC151I

O que significa

Arquivo não encontrado na fita.

Causas

  • LABEL incorreto

  • Número sequencial errado

  • Volume incorreto


🔥 SB37 — OUT OF SPACE

Mensagem comum

IEC030I

O que significa

Dataset ficou sem espaço.

Causas

  • Espaço secundário insuficiente

  • Muitas extents

  • Volume cheio


🔥 SD37 — NO SECONDARY SPACE

Mensagem comum

IEC031I

O que significa

Acabou espaço primário e não existe secondary allocation.

Exemplo clássico

SPACE=(CYL,(10,0))

🔥 SE37 — EXTENT LIMIT EXCEEDED

Mensagem comum

IEC032I

O que significa

Dataset atingiu limite máximo de extents.

Muito comum em

  • PDS antigos

  • SORT gigantes

  • Arquivos temporários


☕🔥 Os ABENDs Mais Icônicos da História do Mainframe

ABENDSignificado
S0C7Data Exception
S0C4Protection Exception
S806Module Not Found
S913RACF Violation
SB37Dataset sem espaço
S322Timeout
S213Dataset não encontrado

☕ Curiosidade Histórica

Nos tempos do:

  • OS/360

  • OS/VS1

  • OS/VS2

  • MVS/XA

os operadores praticamente decoravam os ABENDs “na raça”.

Muitos programadores COBOL antigos conseguiam identificar o erro apenas olhando:

IEF450I

ou:

IEC141I

sem precisar abrir dump.

Isso virou quase uma “linguagem secreta” do mundo mainframe.


sábado, 25 de janeiro de 2020

☕🔥 ABENDs Clássicos do Mainframe IBM — O Guia de Sobrevivência

 

Bellacosa Mainframe revisando a lista classica de abends no mundo ibm mainframe



☕🔥 ABENDs Clássicos do Mainframe IBM — O Guia de Sobrevivência

🔥 S013 — Dataset/Dataset Member Problem

O que significa

Erro de OPEN em dataset.

Causas comuns

  • BLKSIZE incorreto

  • RECFM incompatível

  • Membro inexistente em PDS

  • DCB incompatível

Clássico cenário COBOL

//ARQENT DD DSN=MEU.PDS(MEMBROX),DISP=SHR

Mas o membro não existe.


🔥 S0C1 — Operation Exception

“O programa tentou executar lixo como instrução”

Causas comuns

  • Programa compilado errado

  • Overlay de memória

  • Chamada para área inválida

  • Executar dados como código

Muito comum em:

  • COBOL

  • Assembler

  • LINK incorreto


🔥 S0C4 — Protection Exception

O terror absoluto do programador COBOL

Significa

Acesso inválido à memória.

Principais causas

  • Subscript fora do limite

  • Ponteiro inválido

  • LINKAGE SECTION errada

  • Buffer não inicializado

Exemplo clássico

MOVE TAB-ITEM(9999) TO WS-CAMPO

Quando a tabela só vai até 100.


🔥 S0C7 — Data Exception

O ABEND mais famoso do COBOL

Significa

Campo numérico contém dado inválido.

Exemplo

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

💥 S0C7.


🔥 S213 — Dataset Não Encontrado

“O dataset simplesmente não existe”

Causas

  • DSNAME errado

  • Dataset não catalogado

  • VOL=SER incorreto

Mensagem clássica

IEC143I 213-04

🔥 S222 — Job Cancelado

Operador matou o job

Geralmente ocorre por:

  • Loop infinito

  • Job travado

  • Consumo excessivo

  • Cancel manual


🔥 S322 — TIMEOUT

“Seu job passou do tempo”

Clássico:

TIME=1

Mas o programa entra em loop.


🔥 S806 — Module Not Found

O loader não encontrou o programa

Causas

  • STEPLIB errada

  • LOADLIB ausente

  • Nome do módulo incorreto

Mensagem típica

CSV003I REQUESTED MODULE NOT FOUND

🔥 S913 — RACF Security Violation

Segurança negou acesso

Causas

  • Dataset protegido

  • Falta de permissão RACF

  • Usuário sem READ/UPDATE

Muito comum em:

  • Produção

  • Db2

  • CICS

  • GDGs corporativos


🔥 B37 / D37 / E37 — Falta de Espaço

B37

Sem espaço secundário suficiente.

D37

Sem secondary allocation.

E37

Acabaram as extents ou a fita.

Clássico JCL

SPACE=(CYL,(1,0))

💥 Dataset cresce → ABEND D37.


☕ Curiosidade Histórica

A palavra:

ABEND

vem de:

ABnormal END

Ou seja:

“Término Anormal”

Esse termo nasceu nos primeiros sistemas IBM OS/360 e virou parte da cultura mainframe mundial.


🔥 Os 5 ABENDs Mais Temidos da História do COBOL

ABENDApelido
S0C7Data Exception
S0C4Protection Exception
S806Module Not Found
S322Timeout
S913RACF Security

☕ Dica Profissional Mainframe

Quando houver ABEND:

SEMPRE analisar:

  1. JESMSGLG

  2. JESJCL

  3. SYSMSG

  4. SYSOUT

  5. Dump

  6. CEEDUMP (LE)

  7. Abend-AID / Fault Analyzer


🔥 Regra de Ouro do Mainframe

O ABEND raramente é o problema.

Ele é apenas:

“O sintoma do problema.”

O verdadeiro erro normalmente aconteceu:

  • antes,

  • em outro módulo,

  • ou em dados corrompidos anteriormente.


terça-feira, 7 de março de 2017

A Linguagem que Conversa com o IBM Z Desde a Era dos Cartões Perfurados até a Inteligência Artificial

 

Bellacosa Mainframe relembrando JCL

☕ Um Café no Bellacosa Mainframe

📜 O Holocron do JCL

A Linguagem que Conversa com o IBM Z Desde a Era dos Cartões Perfurados até a Inteligência Artificial

A imagem apresentada é bastante didática e está correta para alguém iniciando no universo IBM Z. Entretanto, ela simplifica algo que, na prática, representa uma das tecnologias mais sofisticadas e resilientes já construídas pela engenharia de software.

Para um profissional COBOL, um operador, um analista de produção ou um Sysprog, entender JCL significa compreender como o z/OS pensa.

E isso muda completamente a forma de trabalhar.


O que realmente é JCL?

JCL significa:

Job Control Language

Mas essa definição é insuficiente.

Uma definição mais próxima da realidade seria:

JCL é a linguagem declarativa utilizada pelo z/OS para descrever uma unidade completa de processamento batch.

Ela informa:

  • O que executar

  • Quando executar

  • Com quais arquivos

  • Em quais dispositivos

  • Com quais limites

  • Em quais classes

  • Com qual prioridade

  • Como tratar erros

  • Como reiniciar

  • Como gerar relatórios

  • Como conversar com subsistemas


JCL não é programação

Essa é uma dúvida comum.

COBOL é procedural.

Python é procedural.

Assembler é procedural.

JCL é declarativo.

Você não diz:

Faça isso
Depois faça aquilo

Você diz:

"Quero que este programa seja executado utilizando estes datasets, estes recursos e estas condições."

O sistema operacional decide como fazer.

Similar a Kubernetes.

Exemplo:

replicas: 3

Você não cria containers.

Você declara.

O orquestrador cria.

JCL fazia isso nos anos 60.


A origem histórica

Década de 1960

IBM System/360

Na época havia cartões perfurados.

Cada cartão tinha 80 colunas.

Exemplo

//STEP01 EXEC PGM=IEFBR14

Era literalmente um cartão.

Daí nasceu:

Coluna 1-2

//

Coluna 3-71

Comandos

72-80

Sequência

Muitos padrões atuais nasceram aqui.


O Batch é o coração do Mainframe

Um dos maiores equívocos modernos é imaginar:

Mainframe = COBOL

Não.

O batch é mais importante.

O COBOL é apenas um passageiro.

Batch executa:

Folha salarial

PIX

FGTS

INSS

Bacen

IRPF

Conciliação bancária

Cartões

Faturamento

Bilhões de registros.


Sem JCL não existe Batch

Imagine um COBOL.


OPEN INPUT CLIENTES

Pergunta:

Onde está CLIENTES?

O COBOL não sabe.

O programa espera.

JCL informa.

//CLIENTES DD DSN=BANCO.CLIENTES,
// DISP=SHR

Agora o programa encontra o dataset.


Anatomia de um JCL

A imagem mostra muito bem.

Existem três pilares.

JOB

Representa o trabalho.

//PAGTO JOB (999),'FOLHA'

Equivalente:

Metadados.

Quem executa.

Classe.

Accounting.

Prioridade.

Tempo.

Região.

Exemplo

MSGCLASS=X
CLASS=A
TIME=1440

EXEC

O cérebro.

Define programa.

//STEP01 EXEC PGM=COBOLPGM

Ou utilitário.

EXEC PGM=SORT
EXEC PGM=IDCAMS
EXEC PGM=IKJEFT01
EXEC PGM=DSNUTILB

DD

Dataset Definition

A parte mais importante.

95% dos problemas em produção estão aqui.

Exemplo:

//ENTRADA DD DSN=EMPRESA.CLIENTES,
// DISP=SHR

Saída:

//SAIDA DD DSN=EMPRESA.RELATORIO,
// DISP=(NEW,CATLG,DELETE)

DISP é quase uma filosofia

Muitos juniores sofrem aqui.

SHR

Compartilhado

DISP=SHR

OLD

Exclusivo

DISP=OLD

NEW

Criar dataset

DISP=(NEW,CATLG,DELETE)

Se sucesso

Cataloga.

Se erro

Apaga.

Elegante.

Muito elegante.


O que realmente acontece quando submetemos um JCL?

A imagem mostra:

Create

Submit

Read

Execute

Mas internamente é muito maior.

Etapa 1

JES2 recebe


Etapa 2

Parser valida sintaxe


Etapa 3

Conversão

Job vira estrutura interna.

JCT

TIOT

JQE

JOE

Control Blocks.


Etapa 4

Scheduler escolhe execução

WLM

Service Class

Importance

Velocity


Etapa 5

Allocation

IEFBR14

Catalog

SMS

Volumes

DASD


Etapa 6

Carregamento

Program Fetch

LPA

Linklist

STEPLIB


Etapa 7

Execução


Etapa 8

Geração de SYSOUT

Spool

JES2


SYSIN é genial

A imagem cita:

SYSIN

Pouca gente entende.

SYSIN é um arquivo virtual.

Exemplo:

//SYSIN DD *
 SORT FIELDS=(1,10,CH,A)
 SUM FIELDS=NONE
/*

O programa lê como se fosse arquivo.

Mas é texto embutido.

Quase um precursor do conceito de:

Heredoc

ConfigMap

Manifest


Utilitários famosos

IEFBR14

Não faz nada.

Serve para alocar.

Apagar.

Testar.

IDCAMS

VSAM

Catalog


SORT

DFSORT

ICETOOL


IKJEFT01

Executa comandos TSO

DB2

SPUFI

DSN

REXX


IEBGENER

Copiar datasets


Condições e Fluxo

JCL possui lógica.

Pouca gente sabe.

COND

COND=(4,LT)

IF

IF STEP1.RC = 0 THEN
ENDIF

RC

Return Code

0

Sucesso

4

Warning

8

Erro

12

Erro grave

16

Falha crítica


PROC

Reutilização

Semelhante a função.

//PAYPROC PROC ENV=PROD

Chamando:

EXEC PAYPROC

Hoje lembraríamos de:

Template

Ansible

Helm Chart

Pipeline


JCL é DevOps antes do DevOps existir

Comparação moderna:

JCLDevOps
JOBPipeline
EXECStage
DDArtifact
PROCTemplate
SYSINConfiguração
JES2Scheduler
WLMQoS
CatalogRegistry
RestartRollback
CONDWorkflow

Por que aprender JCL em 2026 ainda vale muito a pena?

Porque praticamente todos os setores críticos continuam dependendo dele:

  • Bancos

  • Seguradoras

  • Bolsa de valores

  • Previdência

  • Governo

  • Telecomunicações

  • Varejo

  • Processadoras de cartões

  • Indústria

Milhões de JCLs são executados diariamente em ambientes z/OS. Muitos deles foram escritos há décadas, evoluíram ao longo do tempo e continuam sustentando operações que movimentam trilhões de dólares por ano.

Pergunta de entrevista para impressionar um recrutador

Pergunta: O JCL é apenas uma linguagem para executar programas COBOL?

Resposta esperada:

Não. O JCL é uma linguagem declarativa de controle de processamento do z/OS que define a execução de workloads batch, alocação de recursos, gerenciamento de datasets, integração com subsistemas, políticas de recuperação, automação operacional e interação com JES e WLM. O COBOL é apenas um dos muitos consumidores desse ambiente.

No fim das contas, o JCL é muito mais do que uma "linguagem de execução". Ele é o contrato operacional entre o negócio, os programas e o sistema operacional IBM Z, permitindo que um ecossistema gigantesco funcione de maneira previsível, auditável e extremamente confiável há mais de seis décadas. Para um Padawan COBOL, dominar JCL é deixar de ser apenas um programador e começar a pensar como um verdadeiro habitante do universo z/OS.