Translate

Mostrar mensagens com a etiqueta File Status. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta File Status. Mostrar todas as mensagens

sexta-feira, 9 de janeiro de 2026

💥 FILE STATUS 00… E MESMO ASSIM DEU RUIM? — O LADO SOMBRIO DO VSAM QUE NINGUÉM TE CONTA

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ódigoSignificadoTradução BellacosaAção
00Sucesso“Tudo certo… por enquanto”OK
02Sucesso com duplicidade permitidaRegistro duplicado aceitoValidar regra de negócio

📭 FIM / NÃO ENCONTRADO

CódigoSignificadoTraduçãoAção
10End of FileAcabouFluxo normal
13Nenhum próximo registroCursor inválidoVer START
23Registro não encontrado“Você pediu algo que não existe”Validar chave
35Dataset 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ódigoSignificadoTraduçãoAção
22Duplicate keyJá existeTratar insert
24Boundary violationFora do rangeValidar chave
21Sequência inválidaOrdem erradaOrdenação errada

💣 Esse trio derruba batch inteiro.


⚙️ ERROS DE ACESSO / LÓGICA

CódigoSignificadoTraduçãoAção
34Boundary violation (ESDS/RRDS)Fora do espaçoAjustar definição
41OPEN já executadoReabriu arquivoRevisar fluxo
42CLOSE em arquivo não abertoBagunça de controleAjustar lógica
43REWRITE sem READAtualizando fantasmaCorrigir fluxo
44Record size mismatchLayout erradoRevisar copybook

💥 Esse grupo é:

erro de programador raiz


🔒 LOCK / CONCORRÊNCIA (O TERROR DO ONLINE)

CódigoSignificadoTraduçãoAção
91Lock timeout/deadlock“Outro job está na sua frente”Retry
92Logic errorAcesso inconsistenteRevisar fluxo
93Resource unavailableRecurso indisponívelEsperar/retry

💣 Aqui entra:

  • CICS
  • RLS
  • Batch concorrente

👉 Esse é o mundo real.


💾 ERROS FÍSICOS / INFRA

CódigoSignificadoTraduçãoAção
90Erro geral“Algo deu muito errado”Ver log
94Falha em READ/WRITEProblema físicoVer dataset
97Erro de VSAMFalha internaAnalisar IDCAMS
98File lockedDataset travadoVer enqueue

💥 Tradução:

Aqui você chama o sysprog.


🧨 OS CÓDIGOS QUE MAIS CAEM EM PRODUÇÃO

Top 5 do caos:

  1. 23 → registro não encontrado
  2. 22 → duplicate key
  3. 10 → EOF mal tratado
  4. 91 → lock em produção
  5. 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

👉 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)

CampoTamanhoOrigemFunção
Return Code1 byteRegister 15Status geral
Function Code1 byteVSAMTipo de operação
Feedback Code1 byteVSAMMotivo 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:

ValorSignificado
00Sucesso
04Warning
08Erro
12Erro 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ódigoOperação
00Acesso ao cluster base
04Acesso via AIX
08Inserção
0CUpdate
10Delete

💬 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ódigoSignificado
00OK
04Duplicate key
08Record not found
0CEnd of dataset
10Length error
24Key out of range
28Sequence error

💥 Esse é o código que resolve incidente em produção


🧠 JUNTANDO TUDO

Exemplo:

VSAM-CODE = 08 00 24
CampoValorSignificado
R1508Erro
Function00Acesso cluster
Feedback24Key out of range

🔄 RELAÇÃO COM COBOL (FILE STATUS)

VSAM internoCOBOL FS
Feedback 0823
Feedback 2421
Feedback 0422

👉 COBOL simplifica — VSAM detalha


💡 RESUMO VISUAL


01 RETURN-STATUS. 05 FS-CODE PIC X(2). 05 VSAM-CODE. 10 VSAM-R15-RETURN PIC S9(4) Usage Comp-5. 10 VSAM-FUNCTION PIC S9(4) Usage Comp-5. 10 VSAM-FEEDBACK PIC S9(4) Usage Comp-5.

[ R15 ] [ FUNC ] [ FEEDBACK ]
↓ ↓ ↓
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.


segunda-feira, 12 de fevereiro de 2007

Comandos COBOL para Manipulação de Arquivos: ACCESS MODE, FILE-CONTROL, FILE STATUS, OPEN, READ, START, WRITE, REWRITE, DELETE e CLOSE

Bellacosa Mainframe e comandos de mainupalação de datasets em Mainframe



Comandos COBOL para Manipulação de Arquivos: ACCESS MODE, FILE-CONTROL, FILE STATUS, OPEN, READ, START, WRITE, REWRITE, DELETE e CLOSE

Quando um programa COBOL trabalha com arquivos QSAM ou VSAM, existe um conjunto de comandos fundamentais que controlam toda a entrada, saída e atualização dos dados.

Esses comandos aparecem diariamente em sistemas:

  • bancários;

  • seguradoras;

  • cartões;

  • governo;

  • ERP;

  • processamento batch.


Visão Geral

FILE-CONTROL
     ↓
OPEN
     ↓
READ / START
     ↓
WRITE / REWRITE / DELETE
     ↓
CLOSE

FILE-CONTROL

Fica na:

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.

Responsável por:

  • associar arquivos;

  • definir organização;

  • definir acesso;

  • definir FILE STATUS.


Exemplo

SELECT ARQCLIENTE
       ASSIGN TO CLIENTE
       ORGANIZATION IS INDEXED
       ACCESS MODE IS DYNAMIC
       RECORD KEY IS CLI-ID
       FILE STATUS IS WS-FS.

ACCESS MODE

Define como o programa acessará o arquivo.


SEQUENTIAL

Leitura em sequência.

ACCESS MODE IS SEQUENTIAL

Fluxo:

REG1
 ↓
REG2
 ↓
REG3

Muito usado em:

  • QSAM

  • Batch


RANDOM

Acesso direto pela chave.

ACCESS MODE IS RANDOM

Exemplo:

PROCURA CLIENTE 1000

Vai diretamente ao registro.


DYNAMIC

Mistura Sequential e Random.

ACCESS MODE IS DYNAMIC

Muito comum em VSAM.


FILE STATUS

Retorno das operações do arquivo.


Declaração

01 WS-FS PIC XX.

Associação

FILE STATUS IS WS-FS

Status comuns

CódigoSignificado
00Sucesso
10EOF
22Chave duplicada
23Registro não encontrado
35Arquivo inexistente
39Definição incompatível
92Erro lógico
93Arquivo não aberto

OPEN

Abre o arquivo.


INPUT

Somente leitura.

OPEN INPUT ARQCLI

OUTPUT

Cria novo arquivo.

OPEN OUTPUT ARQSAIDA

I-O

Leitura e atualização.

OPEN I-O ARQVSAM

EXTEND

Acrescenta registros.

OPEN EXTEND ARQREL

READ

Lê um registro.


QSAM

READ ARQCLI

Com EOF

READ ARQCLI
   AT END
      MOVE 'S' TO EOF
END-READ

READ para VSAM

READ ARQVSAM

Lê o registro corrente.


READ NEXT

Muito usado em VSAM KSDS.


Exemplo

READ ARQVSAM NEXT RECORD

Fluxo

Registro 100
 ↓
READ NEXT
 ↓
Registro 101

START

Posiciona o ponteiro em uma chave.

Funciona apenas em arquivos indexados.


Exemplo

START ARQVSAM
   KEY IS >= WS-CHAVE
END-START

Fluxo

Chave procurada = 1000
       ↓
Posiciona no primeiro >= 1000

Muito usado para pesquisas.


WRITE

Grava novo registro.


Exemplo

WRITE REG-CLIENTE

Em arquivo sequencial

Registro gravado no final

Em VSAM

Registro incluído pela chave

Possível erro

FS = 22

Chave duplicada.


REWRITE

Atualiza registro existente.


Exemplo

REWRITE REG-CLIENTE

Fluxo

READ
 ↓
ALTERA DADOS
 ↓
REWRITE

Exemplo completo

READ ARQVSAM

MOVE 5000 TO CLI-SALDO

REWRITE REG-CLIENTE

DELETE

Remove registro.

Disponível em arquivos indexados.


Exemplo

DELETE ARQVSAM

Fluxo

READ
 ↓
DELETE
 ↓
Registro removido

Muito usado em:

  • VSAM KSDS

  • RRDS


Não funciona em QSAM

Arquivos sequenciais não suportam DELETE.


CLOSE

Fecha arquivo.


Exemplo

CLOSE ARQCLI

Sempre execute CLOSE

Evita:

  • perda de dados;

  • buffers pendentes;

  • inconsistências.


Exemplo Completo VSAM

OPEN I-O ARQCLI

MOVE 1000 TO WS-ID

START ARQCLI
   KEY >= WS-ID

READ ARQCLI NEXT RECORD

IF WS-FS = '00'

   MOVE 'NOVO NOME'
      TO CLI-NOME

   REWRITE REG-CLIENTE

END-IF

CLOSE ARQCLI

Ciclo de Vida de um Arquivo COBOL

FILE-CONTROL
      ↓
OPEN
      ↓
START
      ↓
READ
      ↓
WRITE
      ↓
REWRITE
      ↓
DELETE
      ↓
CLOSE

Resumo Rápido

ComandoFunção
FILE-CONTROLDefine arquivo
ACCESS MODETipo de acesso
FILE STATUSRetorno da operação
OPENAbre arquivo
READLê registro
READ NEXTPróximo registro
STARTPosiciona por chave
WRITEInclui registro
REWRITEAtualiza registro
DELETERemove registro
CLOSEFecha arquivo

Dica de Programador Mainframe

Para arquivos QSAM, normalmente você verá:

OPEN INPUT
READ
WRITE
CLOSE

Para arquivos VSAM KSDS, os comandos mais comuns são:

OPEN I-O
START
READ NEXT
WRITE
REWRITE
DELETE
CLOSE

Esses são os comandos fundamentais que formam a base de praticamente todos os programas COBOL que manipulam arquivos no ambiente IBM Z.


domingo, 11 de fevereiro de 2007

O que é Dataset QSAM?

 

Bellacosa Mainframe o q é dataset QSAM

O que é Dataset QSAM?

QSAM significa:

Queued Sequential Access Method

É um dos métodos de acesso a arquivos mais antigos, importantes e utilizados da história do mainframe.

Praticamente todo programador COBOL batch trabalha com QSAM em algum momento.


Definição simples

QSAM é:

o método de acesso usado para ler e gravar arquivos sequenciais no z/OS.

Quando falamos de um dataset sequencial (PS), normalmente estamos falando de um arquivo acessado através do QSAM.


Analogia simples

Imagine uma fita cassete.

Você precisa ouvir:

Música 1
 ↓
Música 2
 ↓
Música 3
 ↓
Música 4

Não pode pular diretamente para a música 4.

O QSAM funciona da mesma forma.


Fluxo QSAM

Registro 1
    ↓
Registro 2
    ↓
Registro 3
    ↓
Registro 4

Leitura sequencial.


Onde o QSAM é usado?

Principalmente em:

  • COBOL Batch

  • PL/I

  • Assembler

  • Easytrieve

  • SORT

  • Syncsort

  • DFSORT

  • JCL


Tipo de Dataset

Normalmente:

PS (Physical Sequential)

Exemplo de Dataset QSAM

BANCO.CLIENTES.ARQ

Conteúdo:

00001JOAO SILVA
00002MARIA SOUZA
00003CARLOS LIMA

Como o COBOL acessa?

Na ENVIRONMENT DIVISION:

SELECT ARQCLI
ASSIGN TO CLIENTE
ORGANIZATION IS SEQUENTIAL.

Na FILE SECTION

FD ARQCLI.

01 REG-CLIENTE.
   05 CLI-ID    PIC 9(5).
   05 CLI-NOME  PIC X(30).

Leitura QSAM

READ ARQCLI

A cada READ:

Registro 1
 ↓
Registro 2
 ↓
Registro 3

Escrita QSAM

WRITE REG-CLIENTE

O novo registro é gravado no final do arquivo.


Operações principais

OPEN

OPEN INPUT ARQCLI

READ

READ ARQCLI

WRITE

WRITE REG-CLIENTE

CLOSE

CLOSE ARQCLI

Como o JCL participa?

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

Fluxo:

JCL
 ↓
DDNAME
 ↓
QSAM
 ↓
COBOL

O que é Buffering?

O QSAM utiliza buffers em memória.

Em vez de ler um registro por vez:

Disco
 ↓
Buffer
 ↓
Programa

Isso melhora muito a performance.


O que significa "Queued"?

O sistema mantém uma fila de registros em memória.

Por isso o nome:

Queued Sequential Access Method

QSAM x BSAM

QSAM

Mais simples.

O sistema controla os buffers.

Programa
 ↓
QSAM
 ↓
Disco

BSAM

Mais baixo nível.

O programador controla os buffers.

Programa
 ↓
Buffer Manual
 ↓
Disco

QSAM x VSAM

QSAM

Acesso sequencial.

1
↓
2
↓
3
↓
4

VSAM KSDS

Acesso por chave.

PROCURA CHAVE 00003
       ↓
Registro encontrado

Vantagens do QSAM

✅ Simples

✅ Excelente para batch

✅ Muito rápido

✅ Fácil programação COBOL

✅ Baixo consumo de recursos


Desvantagens

❌ Não possui índice

❌ Não acessa diretamente um registro específico

❌ Necessita percorrer registros anteriores


Casos de uso clássicos

Folha salarial

Funcionário 1
Funcionário 2
Funcionário 3
...

Relatórios

Cliente 1
Cliente 2
Cliente 3
...

Processamento bancário

Transação 1
Transação 2
Transação 3
...

Exemplo Batch Completo

OPEN INPUT ARQCLI

PERFORM UNTIL EOF = 'S'

   READ ARQCLI
      AT END
         MOVE 'S' TO EOF

      NOT AT END
         PERFORM PROCESSAR

   END-READ

END-PERFORM

CLOSE ARQCLI

Curiosidades

1. Grande parte dos batchs do mundo ainda utiliza QSAM

2. O QSAM existe desde os primeiros sistemas OS/360

3. Muitos bancos processam bilhões de registros QSAM diariamente

4. DFSORT e Syncsort trabalham intensamente com datasets QSAM


Erros comuns de iniciantes

Esquecer OPEN


Não tratar EOF


Layout incompatível


DDNAME diferente do ASSIGN


Não verificar FILE STATUS


Resumo rápido

ConceitoSignificado
QSAMQueued Sequential Access Method
Tipo de ArquivoSequencial (PS)
AcessoSequencial
Comando COBOLREAD / WRITE
PerformanceAlta
ÍndiceNão
Uso PrincipalBatch
BufferAutomático

Conclusão

O QSAM é o método de acesso padrão para datasets sequenciais no z/OS. Ele utiliza buffers automáticos e acesso sequencial aos registros, sendo a base de grande parte dos programas COBOL batch executados diariamente nos ambientes IBM Z.


quinta-feira, 8 de fevereiro de 2007

Leitura de Dataset no COBOL

Bellacosa Mainframe e a leitura de dados de um dataset cobol


Leitura de Dataset no COBOL

Uma das funções mais importantes do COBOL no mainframe é:

processamento de arquivos.

Grande parte dos sistemas batch trabalha lendo:

  • datasets sequenciais;

  • VSAM;

  • arquivos financeiros;

  • relatórios;

  • cargas;

  • integrações.

Por isso, entender:

  • ENVIRONMENT DIVISION;

  • DATA DIVISION;

  • FILE SECTION;

  • FILE STATUS;

  • layouts;

  • associação com JCL;

é fundamental no ambiente:

IBM Z / zOS.


Fluxo geral da leitura de arquivos

JCL
 ↓
DDNAME
 ↓
ENVIRONMENT DIVISION
 ↓
SELECT / ASSIGN
 ↓
FILE SECTION
 ↓
FD
 ↓
READ
 ↓
PROCESSAMENTO

Onde o arquivo é definido no COBOL?

Principalmente em:

  • ENVIRONMENT DIVISION;

  • DATA DIVISION.


ENVIRONMENT DIVISION

Responsável por:

ambiente e associação dos arquivos.


Estrutura clássica

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

O que é FILE-CONTROL?

Área onde o COBOL:

associa arquivos lógicos ao JCL.


Exemplo

SELECT ARQCLIENTE
ASSIGN TO CLIENTE
ORGANIZATION IS SEQUENTIAL.

Explicando

ElementoFunção
ARQCLIENTENome lógico COBOL
CLIENTEDDNAME do JCL
SEQUENTIALOrganização arquivo

O que é ASSIGN?

Faz ligação entre:

  • COBOL;

  • JCL.


Relação COBOL ↔ JCL

COBOL: ASSIGN TO CLIENTE
            ↓
JCL: //CLIENTE DD DSN=...

Exemplo completo no JCL

//STEP1 EXEC PGM=COBPGM

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

Como COBOL encontra o dataset?

Pelo:

DDNAME.


DATA DIVISION

Responsável pelos:

dados e layouts.


Estrutura típica

DATA DIVISION.

FILE SECTION.

O que é FILE SECTION?

Define:

layout do arquivo.


Exemplo

FD ARQCLIENTE.

01 REG-CLIENTE.
   05 CLI-ID       PIC 9(5).
   05 CLI-NOME     PIC X(30).
   05 CLI-SALDO    PIC 9(7)V99.

O que é FD?

File Description

Define:

  • características;

  • layout;

  • estrutura registro.


O que é REG-CLIENTE?

Área memória usada no:

READ.


Fluxo do READ

READ ARQCLIENTE
      ↓
registro carregado
      ↓
REG-CLIENTE preenchido

Exemplo simples de leitura

READ ARQCLIENTE

Leitura completa correta

READ ARQCLIENTE
   AT END
      MOVE 'S' TO EOF
END-READ

O que é EOF?

End Of File

Fim arquivo.


Controle clássico batch

PERFORM UNTIL EOF = 'S'

   READ ARQCLIENTE
      AT END
         MOVE 'S' TO EOF

      NOT AT END
         PERFORM PROCESSA

   END-READ

END-PERFORM

O que é FILE STATUS?

Código retorno da operação arquivo.

Muito importante no COBOL.


Definição FILE STATUS

Fica na:

WORKING-STORAGE.


Exemplo

01 WS-FS-CLIENTE PIC XX.

Associando FILE STATUS

SELECT ARQCLIENTE
ASSIGN TO CLIENTE
FILE STATUS IS WS-FS-CLIENTE.

O que ele faz?

Após:

  • OPEN;

  • READ;

  • WRITE;

  • CLOSE;

o COBOL grava:

status da operação.


Exemplo status comuns

StatusSignificado
00OK
10EOF
35Arquivo inexistente
39Layout incompatível
92Erro lógico
93Arquivo não aberto

Exemplo validação

IF WS-FS-CLIENTE NOT = '00'
   DISPLAY 'ERRO ARQUIVO'
END-IF

O que é OPEN?

Abre arquivo.


Exemplos

OPEN INPUT ARQCLIENTE

Leitura.


OPEN OUTPUT ARQREL

Saída.


OPEN I-O ARQVSAM

Leitura e gravação.


O que é CLOSE?

Fecha arquivo.


Exemplo

CLOSE ARQCLIENTE

Tipos comuns de arquivos COBOL


Sequential

Sequencial.


Indexed

VSAM KSDS.


Relative

Acesso relativo.


Line Sequential

Texto.


Organização do arquivo

ORGANIZATION IS SEQUENTIAL

Acesso

ACCESS MODE IS SEQUENTIAL

Exemplo completo

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT ARQCLIENTE
ASSIGN TO CLIENTE
ORGANIZATION IS SEQUENTIAL
FILE STATUS IS WS-FS.

DATA DIVISION.

FILE SECTION.

FD ARQCLIENTE.

01 REG-CLIENTE.
   05 CLI-ID     PIC 9(5).
   05 CLI-NOME   PIC X(30).

WORKING-STORAGE SECTION.

01 WS-FS         PIC XX.
01 EOF           PIC X VALUE 'N'.

PROCEDURE DIVISION.

MAIN.

   OPEN INPUT ARQCLIENTE

   PERFORM UNTIL EOF = 'S'

      READ ARQCLIENTE
         AT END
            MOVE 'S' TO EOF

         NOT AT END
            DISPLAY CLI-NOME

      END-READ

   END-PERFORM

   CLOSE ARQCLIENTE

   STOP RUN.

O que é layout?

Estrutura do registro.


Exemplo

12345JOAO SILVA                 0001500

Layout correspondente

05 ID     PIC 9(5).
05 NOME   PIC X(30).
05 SALDO  PIC 9(7).

O que acontece se layout estiver errado?

Pode causar:

  • lixo dados;

  • truncamento;

  • ABEND;

  • S0C7.


COBOL e JCL trabalham juntos


JCL

Entrega dataset.


COBOL

Processa dataset.


Fluxo real

Dataset
 ↓
JCL DD
 ↓
ASSIGN
 ↓
READ
 ↓
REGISTRO MEMÓRIA
 ↓
PROCESSAMENTO

O que é DISP=SHR?

Compartilhado.


O que é DISP=OLD?

Uso exclusivo.


Como isso aparece no batch?

Praticamente em:

  • bancos;

  • folha salarial;

  • PIX;

  • cartões;

  • faturamento.


Curiosidades incríveis

1. Muitos batchs processam bilhões de registros COBOL diariamente


2. FILE STATUS evita muitos ABENDs


3. Grande parte do mundo financeiro ainda depende fortemente de arquivos sequenciais


4. JCL + COBOL é uma das integrações mais clássicas do mainframe


Erros comuns de iniciantes


1. Esquecer OPEN


2. Não tratar FILE STATUS


3. Layout incompatível


4. DDNAME diferente do ASSIGN


5. Não controlar EOF


Dicas importantes

Sempre trate FILE STATUS


Controle EOF corretamente


Valide layouts


Nomeie DDNAME claramente


Resumo rápido

ElementoFunção
SELECTDefine arquivo lógico
ASSIGNLiga ao JCL
FDDefine layout
READLê registro
FILE STATUSRetorno operação
OPENAbre arquivo
CLOSEFecha arquivo
EOFFim arquivo

Conclusão

A leitura de arquivos é uma das bases do COBOL batch no ambiente mainframe IBM Z.

ENVIRONMENT DIVISION, DATA DIVISION, FILE SECTION, FILE STATUS e integração com JCL permitem processar grandes volumes de dados com segurança, organização e alta confiabilidade no z/OS.