| Bellacosa Mainframe VSAM e seus File Status |
💥 FILE STATUS 00… E MESMO ASSIM DEU RUIM? — O LADO SOMBRIO DO VSAM QUE NINGUÉM TE CONTA
Se você acha que FILE STATUS = só checar 00 e seguir a vida, prepare-se:
👉 é exatamente assim que nascem os bugs mais caros do mainframe.
Hoje vamos abrir a caixa preta do VSAM FILE STATUS no estilo Bellacosa:
sem romantismo, direto na ferida — código, causa e como sair vivo.
🧠 O QUE É FILE STATUS (DE VERDADE)
FILE STATUS é um campo de 2 bytes no COBOL que retorna o resultado de TODA operação de I/O.
💣 Tradução real:
É o único contrato entre seu programa e o VSAM. Ignorou… perdeu o controle.
🔢 MAPA COMPLETO DOS FILE STATUS (VSAM COBOL)
Vamos direto ao que interessa.
✅ SUCESSO (OU QUASE…)
| Código | Significado | Tradução Bellacosa | Ação |
|---|---|---|---|
| 00 | Sucesso | “Tudo certo… por enquanto” | OK |
| 02 | Sucesso com duplicidade permitida | Registro duplicado aceito | Validar regra de negócio |
📭 FIM / NÃO ENCONTRADO
| Código | Significado | Tradução | Ação |
|---|---|---|---|
| 10 | End of File | Acabou | Fluxo normal |
| 13 | Nenhum próximo registro | Cursor inválido | Ver START |
| 23 | Registro não encontrado | “Você pediu algo que não existe” | Validar chave |
| 35 | Dataset não encontrado | “Você abriu algo que não existe” | Ver catálogo |
💥 Clássico:
FS=23 não é erro técnico — é erro de lógica.
🔁 DUPLICIDADE / CHAVE
| Código | Significado | Tradução | Ação |
|---|---|---|---|
| 22 | Duplicate key | Já existe | Tratar insert |
| 24 | Boundary violation | Fora do range | Validar chave |
| 21 | Sequência inválida | Ordem errada | Ordenação errada |
💣 Esse trio derruba batch inteiro.
⚙️ ERROS DE ACESSO / LÓGICA
| Código | Significado | Tradução | Ação |
|---|---|---|---|
| 34 | Boundary violation (ESDS/RRDS) | Fora do espaço | Ajustar definição |
| 41 | OPEN já executado | Reabriu arquivo | Revisar fluxo |
| 42 | CLOSE em arquivo não aberto | Bagunça de controle | Ajustar lógica |
| 43 | REWRITE sem READ | Atualizando fantasma | Corrigir fluxo |
| 44 | Record size mismatch | Layout errado | Revisar copybook |
💥 Esse grupo é:
erro de programador raiz
🔒 LOCK / CONCORRÊNCIA (O TERROR DO ONLINE)
| Código | Significado | Tradução | Ação |
|---|---|---|---|
| 91 | Lock timeout/deadlock | “Outro job está na sua frente” | Retry |
| 92 | Logic error | Acesso inconsistente | Revisar fluxo |
| 93 | Resource unavailable | Recurso indisponível | Esperar/retry |
💣 Aqui entra:
- CICS
- RLS
- Batch concorrente
👉 Esse é o mundo real.
💾 ERROS FÍSICOS / INFRA
| Código | Significado | Tradução | Ação |
|---|---|---|---|
| 90 | Erro geral | “Algo deu muito errado” | Ver log |
| 94 | Falha em READ/WRITE | Problema físico | Ver dataset |
| 97 | Erro de VSAM | Falha interna | Analisar IDCAMS |
| 98 | File locked | Dataset travado | Ver enqueue |
💥 Tradução:
Aqui você chama o sysprog.
🧨 OS CÓDIGOS QUE MAIS CAEM EM PRODUÇÃO
Top 5 do caos:
- 23 → registro não encontrado
- 22 → duplicate key
- 10 → EOF mal tratado
- 91 → lock em produção
- 44 → layout errado
👉 Se você nunca viu esses… você ainda não sofreu o suficiente.
🧪 EXEMPLO COBOL (DO MUNDO REAL)
READ ARQ-VSAM
AT END
MOVE '10' TO WS-FS
NOT AT END
CONTINUE
END-READ
IF WS-FS NOT = '00' AND WS-FS NOT = '10'
DISPLAY 'ERRO VSAM: ' WS-FS
PERFORM TRATA-ERRO
END-IF
💡 Bellacosa insight:
Nunca trate só 00. Sempre trate o resto.
⚠️ ARMADILHAS QUE DERRUBAM SISTEMA
🔥 Ignorar FILE STATUS
🔥 Não tratar 23
🔥 Não prever retry para 91
🔥 REWRITE sem READ
🔥 Layout diferente do VSAM
💣 Resultado:
- dados inconsistentes
- batch quebrado
- incidente em produção
🧠 DICAS DE GUERRA (OU SOBREVIVÊNCIA)
✔ Sempre logar FILE STATUS
✔ Criar tabela de tratamento centralizado
✔ Retry inteligente para 91/93
✔ Validar chave antes de acessar
✔ Testar concorrência
👉 E a regra de ouro:
💥 FILE STATUS não é detalhe. É arquitetura.
🧨 EASTER EGG (PRA QUEM É RAIZ)
👉 FILE STATUS 00 não garante sucesso lógico
👉 VSAM pode retornar sucesso e ainda assim você estar lendo dado errado
Sim…
💣 O erro pode ser silencioso
🔥 VSAM RETURN CODE — ANATOMIA COMPLETA (RAIZ MAINFRAME)
Quando você acessa VSAM via COBOL (ou assembler por baixo), o retorno vem em dois níveis:
🧩 1. FILE STATUS (COBOL)
-
2 bytes
-
Interface simplificada
-
Ex:
00, 10, 21, 23
00, 10, 21, 23
👉 Isso é só a “versão resumida do erro”
🧠 2. VSAM STATUS (nível real — baixo nível)
Esse é o que você mostrou na imagem:
VSAM-CODE = 08 00 24
👉 Isso vem do REGISTER 15 + feedback interno do VSAM
🧠 ESTRUTURA DO VSAM CODE (3 CAMPOS)
Campo Tamanho Origem Função Return Code 1 byte Register 15 Status geral Function Code 1 byte VSAM Tipo de operação Feedback Code 1 byte VSAM Motivo detalhado
| Campo | Tamanho | Origem | Função |
|---|---|---|---|
| Return Code | 1 byte | Register 15 | Status geral |
| Function Code | 1 byte | VSAM | Tipo de operação |
| Feedback Code | 1 byte | VSAM | Motivo detalhado |
👉 Total: 3 bytes
🧬 1. REGISTER (R15) — O CARA QUE MANDA
📌 O que é?
No IBM z/OS, o Register 15 (R15) é:
👉 O registrador padrão de retorno de programas
📦 Tamanho:
-
32 bits (4 bytes) no hardware
-
Mas VSAM usa apenas 1 byte relevante (low-order)
📊 Uso:
-
Indica sucesso ou falha da macro VSAM (GET, PUT, etc.)
Valores típicos:
Valor Significado 00 Sucesso 04 Warning 08 Erro 12 Erro severo
| Valor | Significado |
|---|---|
| 00 | Sucesso |
| 04 | Warning |
| 08 | Erro |
| 12 | Erro severo |
💥 Esse é o “OK/FAIL” da operação
⚙️ 2. FUNCTION CODE — O QUE O VSAM ESTAVA FAZENDO
📌 O que é?
Indica qual operação VSAM estava sendo executada
📦 Tamanho:
-
1 byte
📊 Uso:
Ajuda a entender o contexto do erro
Exemplos:
Código Operação 00 Acesso ao cluster base 04 Acesso via AIX 08 Inserção 0C Update 10 Delete
| Código | Operação |
|---|---|
| 00 | Acesso ao cluster base |
| 04 | Acesso via AIX |
| 08 | Inserção |
| 0C | Update |
| 10 | Delete |
💬 Pense como:
👉 “em que momento deu ruim?”
🚨 3. FEEDBACK FIELD CODE — O VERDADEIRO ERRO
📌 O que é?
👉 O coração do diagnóstico VSAM
Mostra exatamente por que falhou
📦 Tamanho:
-
1 byte
📊 Uso:
Diagnóstico fino (nível sênior)
Exemplos famosos:
Código Significado 00 OK 04 Duplicate key 08 Record not found 0C End of dataset 10 Length error 24 Key out of range 28 Sequence error
| Código | Significado |
|---|---|
| 00 | OK |
| 04 | Duplicate key |
| 08 | Record not found |
| 0C | End of dataset |
| 10 | Length error |
| 24 | Key out of range |
| 28 | Sequence error |
💥 Esse é o código que resolve incidente em produção
🧠 JUNTANDO TUDO
Exemplo:
VSAM-CODE = 08 00 24
| Campo | Valor | Significado |
|---|---|---|
| R15 | 08 | Erro |
| Function | 00 | Acesso cluster |
| Feedback | 24 | Key out of range |
🔄 RELAÇÃO COM COBOL (FILE STATUS)
VSAM interno COBOL FS Feedback 08 23 Feedback 24 21 Feedback 04 22
| VSAM interno | COBOL FS |
|---|---|
| Feedback 08 | 23 |
| Feedback 24 | 21 |
| Feedback 04 | 22 |
👉 COBOL simplifica — VSAM detalha
💡 RESUMO VISUAL
[ R15 ] [ FUNC ] [ FEEDBACK ]
↓ ↓ ↓
STATUS OPERAÇÃO CAUSA REAL
↓ ↓ ↓
STATUS OPERAÇÃO CAUSA REAL
⚠️ IMPORTANTE (nível sênior)
👉 O COBOL esconde informação
Se você olha só:
FILE STATUS = 21
👉 Você está vendo só a superfície
💥 O diagnóstico real exige VSAM-CODE
☕ INSIGHT FINAL (estilo Bellacosa)
-
R15 diz “deu erro”
-
Function diz “onde deu erro”
-
Feedback diz “por que deu erro”
🔥 PROVOCAÇÃO FINAL
Se você debuga VSAM só com FILE STATUS…
👉 você está dirigindo o mainframe olhando pelo retrovisor 😏
🎯 CONCLUSÃO (SOCO FINAL)
Se você não domina FILE STATUS…
👉 você não domina VSAM
👉 você não domina batch
👉 você não domina produção
💥 FILE STATUS é o log invisível do seu sistema
Ignore ele…
e o sistema vai te ensinar — da pior forma.
Sem comentários:
Enviar um comentário