Translate

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

quarta-feira, 21 de agosto de 2013

☕🔥 ABEND S013 — O “GUARDIÃO DOS DATASETS” NO z/OS

 

Bellacosa Mainframe e o abend s013

☕🔥 ABEND S013 — O “GUARDIÃO DOS DATASETS” NO z/OS

Quando o Mainframe Diz:

“VOCÊ ESTÁ TENTANDO USAR O ARQUIVO DO JEITO ERRADO.”

Se existe um ABEND que faz o programador COBOL Junior questionar:

“O problema é no JCL?”
“No arquivo?”
“No DCB?”
“No RECFM?”
“No LRECL?”
“NO UNIVERSO?!”

…esse ABEND é o lendário:

🚨 S013

E normalmente ele aparece assim:

IEC141I 013-20

ou:

ABEND=S013

ou:

IEC141I 013-34

☕ Respira, Padawan.

Porque o S013 é um dos ABENDs MAIS IMPORTANTES para aprender:

dataset organization

DCB

RECFM

LRECL

BLKSIZE

OPEN/CLOSE/EOV

integridade física do arquivo


🔥 O QUE É O S013?

O S013 é um:

🚨 DCB / DATASET OPEN ERROR

Traduzindo:

O z/OS NÃO CONSEGUIU ABRIR O DATASET CORRETAMENTE.


☕ A FILOSOFIA DO S013

O dataset existe.

O JCL existe.

O programa existe.

Mas:

ALGUMA CARACTERÍSTICA DO ARQUIVO NÃO BATE.


🔥 O MAINFRAME É OBCECADO POR ESTRUTURA

No mundo distribuído:

abre arquivo

No z/OS:

qual RECFM?
qual LRECL?
qual BLKSIZE?
FB?
VB?
VBS?
U?
QSAM?
VSAM?

Porque:

arquivo no mainframe é estrutura física rigorosa.


☕ ANALOGIA BELLACOSA MAINFRAME

Imagine um trem tentando entrar num túnel.

Mas:

  • largura errada

  • altura errada

  • trilho incompatível

Resultado:

💥 S013


🔥 O MOMENTO EXATO DO S013

Fluxo:

COBOL OPEN
 ↓
OPEN/CLOSE/EOV
 ↓
Validação DCB
 ↓
Mismatch
 ↓
S013

☕ O QUE É DCB?

DATA CONTROL BLOCK

O DNA do dataset.

Define:

  • RECFM

  • LRECL

  • BLKSIZE

  • DSORG


🔥 O S013 MAIS FAMOSO

🚨 S013-20

O rei absoluto dos juniors.


☕ O QUE SIGNIFICA S013-20?

DCB incompatível

Geralmente:

  • RECFM errado

  • LRECL errado

  • programa espera algo diferente


🔥 EXEMPLO CLÁSSICO

Arquivo real:

RECFM=FB
LRECL=80

Mas COBOL define:

FD CLIENTE
   RECORD CONTAINS 120 CHARACTERS.

Resultado:

☠️ S013-20


☕ O MAINFRAME OLHA E DIZ

“O TAMANHO NÃO BATE.”


🔥 OUTRO CLÁSSICO

Arquivo:

VB

Programa espera:

FB

Resultado:

💥 S013


☕ FB vs VB — A GUERRA ETERNA


☕ FB

Fixed Block.

Todos registros possuem mesmo tamanho.


☕ VB

Variable Block.

Registros variáveis.

Possui RDW.


🔥 O RDW — O BYTE FANTASMA

VB possui:

Record Descriptor Word

4 bytes extras no início.

Junior esquece isso.

Resultado:

☠️ caos absoluto.


☕ O S013 E O COBOL

Outro clássico:

01 REGISTRO PIC X(100).

Mas dataset:

LRECL=80

Resultado:

💥 S013


🔥 O S013 E O SORT

SORT cria dataset:

VB

Programa batch espera:

FB

Explosão inevitável.


☕ O S013 E O DISP

Outro caso famoso.

//ARQ DD DISP=OLD

Mas dataset não permite acesso correto.

Ou:

  • está vazio

  • está corrompido

  • organização errada


🔥 O S013-14

Muito ligado a:

OPEN ERROR

Problemas físicos/lógicos na abertura.


🔥 O S013-18

Associado a:

DCB inconsistente


🔥 O S013-34

Muito famoso em:

RECFM incompatível


☕ COMO INVESTIGAR O S013 PASSO A PASSO


✅ PASSO 1 — IDENTIFIQUE O SUBCÓDIGO

Exemplo:

013-20

O número após hífen é crucial.


✅ PASSO 2 — IDENTIFIQUE O DDNAME

Mensagem:

IEC141I 013-20,JOB1,STEP01,CLIENTE

DDNAME:

CLIENTE

✅ PASSO 3 — VERIFIQUE O DATASET

Use:

3.4 ISPF

ou:

LISTDSI

Verifique:

  • RECFM

  • LRECL

  • BLKSIZE

  • DSORG


✅ PASSO 4 — VERIFIQUE O FD COBOL

Exemplo:

FD CLIENTE
01 REG-CLIENTE PIC X(120).

Compare com dataset REAL.


✅ PASSO 5 — VERIFIQUE O JCL

Talvez:

DCB=(RECFM=FB,LRECL=80)

mas programa espera:

120

🔥 O SEGREDO DOS DUMPS

S013 normalmente NÃO exige dump profundo estilo S0C4.

O ouro está nas:

mensagens IEC


☕ AS MENSAGENS IEC SÃO A BÍBLIA

Exemplo:

IEC141I
IEC143I
IEC130I

Elas contam:

  • dataset

  • problema

  • DCB

  • incompatibilidade


🔥 COMO O VETERANO PENSA

Veterano vê:

013-20

E imediatamente pergunta:

“FB ou VB?”


☕ O MAIOR ERRO DOS JUNIORS

Pensar:

“O problema está no COBOL.”

Frequentemente está em:

  • JCL

  • DCB

  • dataset

  • utilitário

  • SORT anterior


🔥 O S013 E O IDCAMS

Outro clássico.

DEFINE CLUSTER cria:

LRECL diferente

Programa usa layout antigo.

Resultado:

💥 S013


☕ O S013 E O GDG

Geração nova criada com DCB errado.

Toda cadeia explode depois.


🔥 O S013 FANTASMA

O mais traiçoeiro.

Problema nasceu:

ontem

Mas explode:

hoje

Porque dataset foi criado incorretamente antes.


☕ O S013 E O “RECFM U”

Modo arquimago ativado.

Datasets:

RECFM=U

são “Undefined”.

Muito usados em:

  • loadlibs

  • executáveis

  • dumps

Ler isso como FB?

☠️ desastre garantido.


🔥 COMO EVITAR S013


✅ Sempre validar RECFM


✅ Sempre validar LRECL


✅ Revisar DCB no JCL


✅ Padronizar copybooks


✅ Conferir SORTs


✅ Verificar geração GDG


✅ Nunca assumir FB/VB


☕ O SEGREDO DO IEBGENER

Ferramenta clássica para testar datasets.

Veteranos usam para:

  • validar DCB

  • testar leitura

  • confirmar estrutura


🔥 CURIOSIDADE HISTÓRICA

O S013 vem dos tempos do:

IBM OS/360

Década de:

🏛️ 1960

Naquela época:

  • fitas

  • discos

  • blocagem física

eram fundamentais.

O sistema precisava garantir:

integridade absoluta da mídia.


☕ EASTER EGG MAINFRAME

Veteranos brincam:

“S013 é o dataset dizendo:

VOCÊ NÃO ME ENTENDE.”


🔥 O MAIOR APRENDIZADO

S013 ensina algo profundo:

NO MAINFRAME, ARQUIVO NÃO É “SÓ UM ARQUIVO”.

É:

  • geometria

  • física

  • organização

  • blocagem

  • arquitetura


☕ A VERDADE FINAL

O S0C7 pune números inválidos.
O S0C4 pune memória inválida.
Mas…

☕ O S013 PUNE QUEM NÃO RESPEITA A ESTRUTURA SAGRADA DOS DATASETS NO z/OS.

sexta-feira, 26 de julho de 2013

☕🔥 ABEND S013 — O “GUARDIÃO DOS DATASETS” NO z/OS

 

Bellacosa Mainframe abend s013

☕🔥 ABEND S013 — O “GUARDIÃO DOS DATASETS” NO z/OS

Quando o Mainframe Diz:

“VOCÊ ESTÁ TENTANDO USAR O ARQUIVO DO JEITO ERRADO.”

Se existe um ABEND que faz o programador COBOL Junior questionar:

“O problema é no JCL?”
“No arquivo?”
“No DCB?”
“No RECFM?”
“No LRECL?”
“NO UNIVERSO?!”

…esse ABEND é o lendário:

🚨 S013

E normalmente ele aparece assim:

IEC141I 013-20

ou:

ABEND=S013

ou:

IEC141I 013-34

☕ Respira, Padawan.

Porque o S013 é um dos ABENDs MAIS IMPORTANTES para aprender:

dataset organization

DCB

RECFM

LRECL

BLKSIZE

OPEN/CLOSE/EOV

integridade física do arquivo


🔥 O QUE É O S013?

O S013 é um:

🚨 DCB / DATASET OPEN ERROR

Traduzindo:

O z/OS NÃO CONSEGUIU ABRIR O DATASET CORRETAMENTE.


☕ A FILOSOFIA DO S013

O dataset existe.

O JCL existe.

O programa existe.

Mas:

ALGUMA CARACTERÍSTICA DO ARQUIVO NÃO BATE.


🔥 O MAINFRAME É OBCECADO POR ESTRUTURA

No mundo distribuído:

abre arquivo

No z/OS:

qual RECFM?
qual LRECL?
qual BLKSIZE?
FB?
VB?
VBS?
U?
QSAM?
VSAM?

Porque:

arquivo no mainframe é estrutura física rigorosa.


☕ ANALOGIA BELLACOSA MAINFRAME

Imagine um trem tentando entrar num túnel.

Mas:

  • largura errada

  • altura errada

  • trilho incompatível

Resultado:

💥 S013


🔥 O MOMENTO EXATO DO S013

Fluxo:

COBOL OPEN
 ↓
OPEN/CLOSE/EOV
 ↓
Validação DCB
 ↓
Mismatch
 ↓
S013

☕ O QUE É DCB?

DATA CONTROL BLOCK

O DNA do dataset.

Define:

  • RECFM

  • LRECL

  • BLKSIZE

  • DSORG


🔥 O S013 MAIS FAMOSO

🚨 S013-20

O rei absoluto dos juniors.


☕ O QUE SIGNIFICA S013-20?

DCB incompatível

Geralmente:

  • RECFM errado

  • LRECL errado

  • programa espera algo diferente


🔥 EXEMPLO CLÁSSICO

Arquivo real:

RECFM=FB
LRECL=80

Mas COBOL define:

FD CLIENTE
   RECORD CONTAINS 120 CHARACTERS.

Resultado:

☠️ S013-20


☕ O MAINFRAME OLHA E DIZ

“O TAMANHO NÃO BATE.”


🔥 OUTRO CLÁSSICO

Arquivo:

VB

Programa espera:

FB

Resultado:

💥 S013


☕ FB vs VB — A GUERRA ETERNA


☕ FB

Fixed Block.

Todos registros possuem mesmo tamanho.


☕ VB

Variable Block.

Registros variáveis.

Possui RDW.


🔥 O RDW — O BYTE FANTASMA

VB possui:

Record Descriptor Word

4 bytes extras no início.

Junior esquece isso.

Resultado:

☠️ caos absoluto.


☕ O S013 E O COBOL

Outro clássico:

01 REGISTRO PIC X(100).

Mas dataset:

LRECL=80

Resultado:

💥 S013


🔥 O S013 E O SORT

SORT cria dataset:

VB

Programa batch espera:

FB

Explosão inevitável.


☕ O S013 E O DISP

Outro caso famoso.

//ARQ DD DISP=OLD

Mas dataset não permite acesso correto.

Ou:

  • está vazio

  • está corrompido

  • organização errada


🔥 O S013-14

Muito ligado a:

OPEN ERROR

Problemas físicos/lógicos na abertura.


🔥 O S013-18

Associado a:

DCB inconsistente


🔥 O S013-34

Muito famoso em:

RECFM incompatível


☕ COMO INVESTIGAR O S013 PASSO A PASSO


✅ PASSO 1 — IDENTIFIQUE O SUBCÓDIGO

Exemplo:

013-20

O número após hífen é crucial.


✅ PASSO 2 — IDENTIFIQUE O DDNAME

Mensagem:

IEC141I 013-20,JOB1,STEP01,CLIENTE

DDNAME:

CLIENTE

✅ PASSO 3 — VERIFIQUE O DATASET

Use:

3.4 ISPF

ou:

LISTDSI

Verifique:

  • RECFM

  • LRECL

  • BLKSIZE

  • DSORG


✅ PASSO 4 — VERIFIQUE O FD COBOL

Exemplo:

FD CLIENTE
01 REG-CLIENTE PIC X(120).

Compare com dataset REAL.


✅ PASSO 5 — VERIFIQUE O JCL

Talvez:

DCB=(RECFM=FB,LRECL=80)

mas programa espera:

120

🔥 O SEGREDO DOS DUMPS

S013 normalmente NÃO exige dump profundo estilo S0C4.

O ouro está nas:

mensagens IEC


☕ AS MENSAGENS IEC SÃO A BÍBLIA

Exemplo:

IEC141I
IEC143I
IEC130I

Elas contam:

  • dataset

  • problema

  • DCB

  • incompatibilidade


🔥 COMO O VETERANO PENSA

Veterano vê:

013-20

E imediatamente pergunta:

“FB ou VB?”


☕ O MAIOR ERRO DOS JUNIORS

Pensar:

“O problema está no COBOL.”

Frequentemente está em:

  • JCL

  • DCB

  • dataset

  • utilitário

  • SORT anterior


🔥 O S013 E O IDCAMS

Outro clássico.

DEFINE CLUSTER cria:

LRECL diferente

Programa usa layout antigo.

Resultado:

💥 S013


☕ O S013 E O GDG

Geração nova criada com DCB errado.

Toda cadeia explode depois.


🔥 O S013 FANTASMA

O mais traiçoeiro.

Problema nasceu:

ontem

Mas explode:

hoje

Porque dataset foi criado incorretamente antes.


☕ O S013 E O “RECFM U”

Modo arquimago ativado.

Datasets:

RECFM=U

são “Undefined”.

Muito usados em:

  • loadlibs

  • executáveis

  • dumps

Ler isso como FB?

☠️ desastre garantido.


🔥 COMO EVITAR S013


✅ Sempre validar RECFM


✅ Sempre validar LRECL


✅ Revisar DCB no JCL


✅ Padronizar copybooks


✅ Conferir SORTs


✅ Verificar geração GDG


✅ Nunca assumir FB/VB


☕ O SEGREDO DO IEBGENER

Ferramenta clássica para testar datasets.

Veteranos usam para:

  • validar DCB

  • testar leitura

  • confirmar estrutura


🔥 CURIOSIDADE HISTÓRICA

O S013 vem dos tempos do:

IBM OS/360

Década de:

🏛️ 1960

Naquela época:

  • fitas

  • discos

  • blocagem física

eram fundamentais.

O sistema precisava garantir:

integridade absoluta da mídia.


☕ EASTER EGG MAINFRAME

Veteranos brincam:

“S013 é o dataset dizendo:

VOCÊ NÃO ME ENTENDE.”


🔥 O MAIOR APRENDIZADO

S013 ensina algo profundo:

NO MAINFRAME, ARQUIVO NÃO É “SÓ UM ARQUIVO”.

É:

  • geometria

  • física

  • organização

  • blocagem

  • arquitetura


☕ A VERDADE FINAL

O S0C7 pune números inválidos.
O S0C4 pune memória inválida.
Mas…

☕ O S013 PUNE QUEM NÃO RESPEITA A ESTRUTURA SAGRADA DOS DATASETS NO z/OS.

sexta-feira, 12 de janeiro de 2007

O que é Blockagem em Dataset QSAM?

 


O que é Blockagem em Dataset QSAM?

Quando começamos a estudar datasets no mainframe, rapidamente aparecem termos como:

  • RECFM;

  • LRECL;

  • BLKSIZE;

  • blockagem.

No começo parece algo extremamente técnico.

Mas a ideia é mais simples do que parece.

E entender blockagem é fundamental para:

  • performance;

  • uso de disco;

  • processamento batch;

  • COBOL;

  • SORT;

  • QSAM.


Primeiro: o que é QSAM?

QSAM significa:

Queued Sequential Access Method

É um método de acesso usado no z/OS para trabalhar com arquivos sequenciais.

Ele é muito utilizado em:

  • COBOL;

  • JCL;

  • relatórios batch;

  • processamento financeiro.


O que é um registro?

Antes da blockagem, precisamos entender:

registro.

Um registro representa:

uma linha de dados.

Exemplo:

JOAO      0001500
MARIA     0003200
CARLOS    0009800

Cada linha é um registro.


O problema sem blockagem

Imagine um dataset com:

  • milhões de registros;

  • cada registro com 80 bytes.

Se o disco gravasse:

  • 1 registro por vez,

o sistema faria milhões de operações de I/O.

Isso seria:

  • lento;

  • caro;

  • ineficiente.


Então nasceu a blockagem

A ideia é simples:

agrupar vários registros em um único bloco físico.


Analogia fácil

Imagine transportar livros.

Sem blockagem:

  • 1 livro por viagem.

Com blockagem:

  • vários livros dentro de uma caixa.

Resultado:

  • menos viagens;

  • mais eficiência.


O que é um bloco?

Bloco é:

um conjunto de registros gravados juntos no disco.


Exemplo simples

Imagine:

  • registro = 80 bytes

  • bloco = 800 bytes

O sistema consegue armazenar:

10 registros dentro do mesmo bloco

Porque:

10 × 80 = 800

Onde isso aparece?

Na definição do dataset:

RECFM=FB
LRECL=80
BLKSIZE=800

Entendendo os parâmetros


RECFM=FB

Formato:

Fixed Block

Registros fixos com blockagem.


LRECL=80

Cada registro possui:
80 bytes.


BLKSIZE=800

Cada bloco possui:
800 bytes.


Resultado

O sistema grava:

10 registros por bloco.


Por que isso melhora performance?

Porque o disco trabalha melhor lendo:

  • grandes blocos;
    do que:

  • registros individuais.


Benefícios da blockagem


1. Menos I/O

Reduz acessos físicos ao disco.


2. Mais velocidade

Leitura e gravação mais rápidas.


3. Melhor uso do disco

Menos desperdício.


4. Melhor performance batch

Especialmente em:

  • SORT;

  • COBOL;

  • grandes arquivos.


O que acontece sem blockagem?

Exemplo:

RECFM=F
LRECL=80

Aqui:

  • registros fixos;

  • sem blocagem.

Cada registro é gravado separadamente.


Isso é ruim?

Nem sempre.

Mas normalmente:

  • FB é mais eficiente que F.


Blockagem em VB

Também existe em datasets variáveis.

Exemplo:

RECFM=VB

Nesse caso:

  • registros possuem tamanhos diferentes;

  • mas continuam agrupados em blocos.


O que é BLKSIZE?

BLKSIZE significa:

Block Size

Define:

o tamanho físico do bloco.


Exemplo visual

Sem blockagem:

[REG]
[REG]
[REG]
[REG]

Com blockagem:

[BLOCO: REG REG REG REG]

Quem define a blockagem?

Pode ser:

  • programador;

  • JCL;

  • sistema;

  • SMS do z/OS.


O sistema pode calcular sozinho?

Sim.

Hoje muitos ambientes usam:

BLKSIZE=0

O z/OS calcula automaticamente o melhor tamanho.


Isso é muito usado atualmente

Porque:

  • reduz erros;

  • otimiza performance;

  • simplifica configuração.


Exemplo de JCL

//ARQ DD DSN=USUARIO.TESTE,
//    DISP=(NEW,CATLG),
//    RECFM=FB,
//    LRECL=80,
//    BLKSIZE=800

O que isso cria?

Dataset:

  • registros fixos;

  • 80 bytes;

  • 10 registros por bloco.


Como COBOL lê isso?

O COBOL normalmente não “vê” a blockagem diretamente.

O QSAM e o z/OS fazem isso automaticamente.


O programador trabalha com registros

O sistema operacional cuida dos blocos.


O que é blocking factor?

Também chamado:

fator de blockagem.

Indica:
quantos registros cabem no bloco.


Exemplo

LRECL = 80
BLKSIZE = 800

Fator:

800 ÷ 80 = 10

Então:

blocking factor = 10


Erros comuns de iniciantes


1. Confundir bloco com registro

Registro = linha lógica
Bloco = agrupamento físico


2. Ignorar BLKSIZE

Isso pode afetar performance.


3. Pensar que COBOL controla tudo

Quem gerencia blockagem é:

  • QSAM;

  • z/OS.


4. Definir BLKSIZE errado

Pode gerar desperdício ou erros.


Curiosidades incríveis

1. Blockagem existe desde os primeiros mainframes

Porque I/O sempre foi crítico.


2. Grandes bancos dependem fortemente disso

Performance batch seria inviável sem blockagem.


3. O conceito influenciou vários sistemas modernos

Mesmo hoje muitos bancos de dados usam ideias parecidas.


4. Um bom BLKSIZE pode melhorar muito performance

Principalmente em arquivos gigantes.


Como visualizar atributos do dataset?

No ISPF 3.4:

  • digite I;

  • veja:

    • RECFM;

    • LRECL;

    • BLKSIZE.

Ou via comando:

LISTDS 'USUARIO.ARQ'

Resumo rápido

ConceitoSignificado
RegistroLinha lógica
BlocoGrupo de registros
BlockagemAgrupar registros
BLKSIZETamanho do bloco
LRECLTamanho do registro
FBFixo com bloco
VBVariável com bloco

Conclusão

A blockagem em datasets QSAM é uma técnica usada pelo z/OS para melhorar eficiência e performance no acesso aos dados.

Em vez de gravar registros individualmente, o sistema agrupa vários registros em blocos físicos, reduzindo operações de I/O e acelerando o processamento batch.

Entender blockagem é um passo essencial para dominar:

  • datasets;

  • COBOL;

  • JCL;

  • SORT;

  • arquitetura interna do mainframe IBM Z.


quinta-feira, 11 de janeiro de 2007

Tipos de Dataset e Formatos de Dataset no Mainframe

 

Bellacosa Mainframe e os tipos e formatos de dataset em Mainframe

Tipos de Dataset e Formatos de Dataset no Mainframe

Quando alguém começa a estudar z/OS, rapidamente percebe que datasets possuem:

  • tipos;

  • formatos;

  • organizações;

  • atributos.

No começo parece complicado.

Mas entender isso é essencial para trabalhar com:

  • COBOL;

  • JCL;

  • ISPF;

  • batch;

  • armazenamento no mainframe.


O que é um Dataset?

Dataset é o nome usado no z/OS para representar:

arquivos.

Eles armazenam:

  • programas;

  • dados;

  • JCL;

  • relatórios;

  • parâmetros;

  • logs.


Diferença entre tipo e formato

Isso confunde muitos iniciantes.


Tipo de Dataset

Define:

como o dataset é organizado.

Exemplo:

  • PS;

  • PDS;

  • VSAM.


Formato de Dataset

Define:

como os registros são armazenados internamente.

Exemplo:

  • FB;

  • VB;

  • U.


Principais Tipos de Dataset


1. Sequential Dataset (PS)

Também chamado:

Physical Sequential

É o tipo mais simples.

Os dados são armazenados em sequência.


Analogia

Imagine:

uma fita de papel contínua.

Os registros ficam um após o outro.


Uso comum

  • relatórios;

  • arquivos batch;

  • entrada e saída de processamento;

  • logs.


Exemplo

USUARIO.RELATORIO

Características

  • simples;

  • rápido;

  • muito usado em batch.


2. PDS (Partitioned Data Set)

Muito importante no mundo mainframe.

Funciona como:

uma biblioteca com vários arquivos internos.


Os arquivos internos são chamados

membros


Exemplo

USUARIO.JCL(MYJOB)

Aqui:

  • dataset = USUARIO.JCL

  • membro = MYJOB


Uso comum

  • bibliotecas JCL;

  • programas COBOL;

  • PROC;

  • scripts.


Analogia

Imagine:

uma pasta com vários documentos dentro.


3. PDSE (Partitioned Data Set Extended)

Versão moderna do PDS.

Melhorias:

  • gerenciamento automático;

  • melhor performance;

  • menos desperdício;

  • mais estabilidade.


Hoje muitos ambientes preferem PDSE

Porque ele reduz problemas antigos do PDS clássico.


4. VSAM

VSAM significa:

Virtual Storage Access Method

É um dataset avançado.


Uso comum

  • sistemas bancários;

  • aplicações corporativas;

  • grandes bases de dados.


Características

  • acesso indexado;

  • alta performance;

  • grande capacidade.


Tipos VSAM


KSDS

Indexado.

Mais comum.


ESDS

Sequencial.


RRDS

Acesso relativo.


LDS

Linear.

Muito usado pelo DB2.


5. GDG

GDG significa:

Generation Data Group

Permite manter versões automáticas de datasets.


Exemplo

RELATORIO.GDG(+1)

Uso comum

  • backups;

  • histórico batch;

  • retenção de arquivos.


6. Temporary Dataset

Dataset temporário.

Existe apenas durante execução do JOB.


Exemplo

&&TEMP

Formatos de Dataset (RECFM)

Agora entra uma parte extremamente importante.

O atributo:

RECFM

Define:

Record Format

Ou seja:
como os registros são armazenados.


Principais formatos


FB — Fixed Block

Registros fixos

Todos possuem mesmo tamanho.


Exemplo

RECFM=FB
LRECL=80

Todos registros possuem:
80 bytes.


Muito usado em

  • JCL;

  • COBOL;

  • arquivos batch.


Analogia

Imagine:

folhas exatamente do mesmo tamanho.


VB — Variable Block

Registros variáveis

Cada linha pode possuir tamanho diferente.


Exemplo

RECFM=VB

Uso comum

  • relatórios;

  • textos;

  • arquivos variáveis.


Analogia

Linhas podem ser:

  • curtas;

  • médias;

  • longas.


U — Undefined

Formato indefinido.

Muito usado para:

  • programas load;

  • binários.


Exemplo

RECFM=U

F — Fixed

Registro fixo sem blocagem.


V — Variable

Registro variável sem blocagem.


O que é blocagem?

Blocos agrupam registros para:

  • melhorar performance;

  • reduzir I/O.


Outros atributos importantes


LRECL

Logical Record Length

Define tamanho lógico do registro.


Exemplo

LRECL=80

BLKSIZE

Block Size

Tamanho físico do bloco.


SPACE

Espaço alocado.


DSORG

Organização do dataset.


Exemplo completo

DSORG=PO
RECFM=FB
LRECL=80
BLKSIZE=800

O que significa?

  • PO = PDS

  • FB = registros fixos

  • 80 bytes por linha

  • bloco de 800 bytes


Como visualizar atributos?

No ISPF:

opção 3.4

Ou comando:

LISTDS 'USUARIO.JCL'

Como criar datasets?


Via ISPF 3.2

Mais comum para iniciantes.


Via JCL

Muito usado em batch.


Via TSO ALLOC

Comando interativo.


Exemplo

ALLOC DA('USUARIO.TESTE')
NEW SPACE(1,1)
RECFM(FB)
LRECL(80)

Erros comuns de iniciantes


1. Confundir PDS com PS

PDS possui membros.
PS não.


2. Ignorar RECFM

Isso pode causar ABENDs.


3. LRECL errado

Muito comum em COBOL e SORT.


4. Pensar que tudo funciona como Windows

O z/OS possui arquitetura própria.


Curiosidades incríveis

1. Muitos bancos possuem milhões de datasets

Organizados há décadas.


2. VSAM ainda é extremamente usado

Principalmente no setor financeiro.


3. O conceito de dataset é mais antigo que Linux

E continua extremamente eficiente.


4. PDS surgiu muito antes dos diretórios modernos


Como datasets aparecem no dia a dia?

Praticamente tudo usa datasets:

  • COBOL;

  • JCL;

  • DB2;

  • SORT;

  • backups;

  • spool;

  • parâmetros.


Por que aprender isso?

Porque datasets são:

a base do armazenamento no z/OS.

Quem entende datasets entende:

  • organização;

  • batch;

  • aplicações;

  • arquitetura mainframe.


Conclusão

Os tipos e formatos de dataset são um dos pilares do ambiente mainframe.

Eles definem:

  • como os dados são organizados;

  • armazenados;

  • processados;

  • acessados pelo z/OS.

Compreender PS, PDS, VSAM, RECFM e LRECL é um passo fundamental para qualquer estudante que deseja dominar o universo IBM Mainframe.