Translate

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

sábado, 28 de dezembro de 2013

☕🔥 ABEND S806 — O “PROGRAMA FANTASMA” DO z/OS

 

Bellacosa Mainframe e o Abend S806

☕🔥 ABEND S806 — O “PROGRAMA FANTASMA” DO z/OS

Quando o Mainframe Diz:

“EU NÃO ENCONTREI O QUE VOCÊ MANDOU EXECUTAR.”

Se existe um ABEND que já fez TODO programador COBOL Junior Padawan olhar para o JCL em silêncio absoluto…

é o lendário:

🚨 S806

E normalmente ele aparece assim:

IEF450I JOBNAME STEP01 - ABEND=S806

ou:

CSV028I ABEND806-04 JOBNAME STEP01
PROGRAM PROGXYZ NOT FOUND

ou ainda:

IEC130I PROGRAM NOT FOUND

E então começa a crise existencial:

“MAS O PROGRAMA EXISTE!”
“EU COMPILEI!”
“FUNCIONAVA ONTEM!”
“O LOADLIB SUMIU?”
“O z/OS ESTÁ ME GASLIGHTEANDO?”

☕ Respira.

Porque o S806 é um dos ABENDs MAIS CLÁSSICOS da história do mainframe.

E um dos mais importantes para aprender:

JCL

LOADLIB

STEPLIB

LINKLIST

BINDER

EXEC PGM

load modules


🔥 O QUE É O S806?

O S806 é um:

🚨 PROGRAM NOT FOUND

Traduzindo:

O z/OS NÃO CONSEGUIU ENCONTRAR O PROGRAMA EXECUTÁVEL.


☕ A FILOSOFIA DO S806

Seu JCL disse:

//STEP1 EXEC PGM=COBPROG

O z/OS respondeu:

❌ “NÃO EXISTE NENHUM EXECUTÁVEL COM ESSE NOME NOS LUGARES ONDE PROCUREI.”


🔥 O QUE O z/OS FAZ QUANDO VÊ EXEC PGM=

Fluxo real:

EXEC PGM=PROG1
 ↓
Procurar módulo
 ↓
STEPLIB
 ↓
JOBLIB
 ↓
LNKLST
 ↓
SYS1.LINKLIB
 ↓
Encontrou?

Se NÃO:

💥 S806


☕ ANALOGIA BELLACOSA MAINFRAME

Imagine um aeroporto.

O sistema anuncia:

“CHAMEM O PILOTO DO VOO.”

Mas:

  • piloto não apareceu

  • nome errado

  • terminal errado

  • aeroporto errado

  • piloto nem existe

O voo nunca sai.

Isso é o:

☠️ S806


🔥 O MAIOR SEGREDO

S806 NÃO significa:

“source COBOL não existe.”

Significa:

o LOAD MODULE executável não foi encontrado.


☕ SOURCE ≠ EXECUTÁVEL

Isso traumatiza juniors.

Você pode ter:

✅ source COBOL
✅ compile OK

Mas sem:

LINK-EDIT/BINDER

não existe executável.


🔥 O MAIOR VILÃO DO S806

🚨 STEPLIB ERRADA

O rei absoluto.


☕ EXEMPLO CLÁSSICO

 //STEPLIB DD DSN=EMPRESA.TEST.LOAD,DISP=SHR

Mas o programa está em:

EMPRESA.PROD.LOAD

Resultado:

💥 S806


🔥 O ERRO MAIS HUMANO DA HISTÓRIA

//STEP1 EXEC PGM=COBPRG1

Mas o member real é:

COBPROG1

Faltou:

O

Resultado:

☠️ S806


☕ O MAINFRAME NÃO “ADIVINHA”

No z/OS:

nome precisa ser EXATO.


🔥 O S806 E O BINDER

Aqui nasce o verdadeiro conhecimento Jedi.


☕ O QUE É O BINDER?

Ferramenta que cria:

LOAD MODULES

Executáveis do z/OS.


🔥 FLUXO REAL COBOL

SOURCE COBOL
 ↓
COMPILER
 ↓
OBJETO
 ↓
BINDER/LINK-EDIT
 ↓
LOAD MODULE
 ↓
EXECUÇÃO

Se faltar binder:

💥 S806


☕ O ERRO CLÁSSICO DO PADAWAN

“Compilei com sucesso.”

Mas esqueceu:

LINK-EDIT


🔥 O S806 E O FTP ASCII

Lenda urbana real.

Load module transferido em:

ASCII

ao invés de:

BINARY

O executável vira lixo hexadecimal.

Às vezes:

  • S806

  • S0C1

  • S0C4

dependendo do dano.


☕ O S806 E O CALL

Outro clássico COBOL.

CALL 'CALCPGM'

Mas:

CALCPGM não existe na loadlib

Resultado:

💥 S806


🔥 O CALL DINÂMICO MALDITO

CALL WS-PGM

Mas:

WS-PGM = 'ABC123'

e esse módulo não existe.


☕ O S806 E O CICS

No CICS normalmente aparece como:

🚨 PGMIDERR

ou:

AEI0

ASRA

dependendo do cenário.


🔥 O S806 E O DB2

Outro clássico sombrio.

Programa depende de runtime DB2:

DSNHLI

ou módulos LE.

STEPLIB errada?

☠️ caos.


☕ COMO INVESTIGAR O S806 PASSO A PASSO


✅ PASSO 1 — IDENTIFIQUE O PROGRAMA

Mensagem:

CSV028I ABEND806-04 PROGRAM PROGXYZ NOT FOUND

Suspeito identificado.


✅ PASSO 2 — VERIFIQUE STEPLIB

Veja:

//STEPLIB DD DSN=...

Confirme:

  • dataset correto

  • DISP=SHR

  • biblioteca existe


✅ PASSO 3 — USE ISPF 3.4

Procure o member.

Existe?

PROGXYZ

✅ PASSO 4 — CONFIRA O NOME

Mainframe não perdoa:

  • typo

  • espaço

  • caractere errado


✅ PASSO 5 — VERIFIQUE O BINDER

Talvez o módulo nunca tenha sido gerado.


🔥 O SEGREDO DO ISPF 3.4

Veteranos vivem nele.

Comandos:

MEMBER

ou:

B

ajudam localizar executáveis.


☕ O S806 E O LNKLST

Se não há STEPLIB/JOBLIB:

o z/OS procura em:

LINKLIST

Bibliotecas globais do sistema.


🔥 O S806 FANTASMA

O mais traiçoeiro.

Funcionava ontem.

Hoje:

💥 S806

Porque:

  • loadlib mudou

  • promoção falhou

  • member deletado

  • IEBCOPY sobrescreveu

  • deploy incompleto


☕ O S806 E O PDSE

Hoje muitos ambientes usam:

PDSE

Mais moderno que PDS.

Mas problemas de sincronização e membros ainda acontecem.


🔥 O S806 E O JCLLIB

Às vezes o PROC aponta:

biblioteca errada

E o EXEC herda erro invisível.


☕ O DUMP DO S806

Normalmente pouco útil.

Porque o programa:

NEM CHEGOU A EXECUTAR.

O problema ocorre ANTES.


🔥 O OURO ESTÁ NAS MENSAGENS

Especialmente:

CSV028I
IEF452I
IEWxxxx

☕ COMO O VETERANO PENSA

Veterano vê:

S806

e imediatamente pergunta:

“ONDE ESTÁ A LOADLIB?”


🔥 CURIOSIDADE HISTÓRICA

O S806 vem da era:

IBM OS/360

Década de:

🏛️ 1960

Naquela época:

  • programas eram carregados fisicamente de bibliotecas em disco/tape

  • loader era parte vital do sistema

O S806 virou um dos ABENDs mais clássicos da história corporativa.


☕ EASTER EGG MAINFRAME

Veteranos brincam:

“S806 é o z/OS dizendo:

VOCÊ TEM CERTEZA QUE ESSE PROGRAMA EXISTE?”


🔥 O MAIOR ERRO DO PADAWAN

Ver:

S806

e recompilar COBOL.

Frequentemente o problema NÃO está no source.

Está em:

  • loadlib

  • binder

  • STEPLIB

  • deploy

  • member

  • ambiente


☕ COMO EVITAR S806


✅ Validar STEPLIB


✅ Confirmar LOADLIB


✅ Revisar BINDER


✅ Nunca FTP executável em ASCII


✅ Conferir nome do member


✅ Padronizar deploy


✅ Validar CALLs dinâmicos


🔥 A VERDADE FINAL

O S0C7 pune números inválidos.
O S0C4 pune memória inválida.
O S013 pune datasets incompatíveis.
O S322 pune tempo excessivo.
O S306 pune falhas de carregamento.

Mas…

☕ O S806 É O MOMENTO EM QUE O z/OS PROCURA UM PROGRAMA… E ENCONTRA APENAS O VAZIO.