| Bellacosa Mainframe VSAM em primeiros passos para padawans |
☕💥 VSAM sem Mistério: Do Zero ao Jedi dos Datasets — O LAB que vai destravar sua mente Mainframe!
Se você é um padawan COBOL tentando entender VSAM e ainda acha que KSDS é nome de sindicato… chegou a hora da virada.
Aqui não tem teoria chata. É mão na massa, com JCL, IDCAMS, conceitos e aquele tempero Bellacosa: história + prática + sacadas que só quem já tomou dump às 3 da manhã entende 😄
🧠 ANTES DE COMEÇAR — O MAPA DA FORÇA (VSAM em 1 minuto)
VSAM (Virtual Storage Access Method) é o método de acesso mais poderoso do z/OS para dados estruturados.
👉 Tipos principais:
- ESDS → Sequencial (sem chave)
- KSDS → Indexado (com chave)
- RRDS → Acesso direto por número (RRN)
👉 Conceitos fundamentais:
- CI (Control Interval) → menor unidade de I/O
- CA (Control Area) → conjunto de CIs
- INDEX → árvore B usada no KSDS
🧪 LAB 1 — Criando seu primeiro ESDS (o “arquivo raiz”)
🎯 Objetivo
Criar um dataset sequencial VSAM.
🔧 JCL + IDCAMS
//ESDSJOB JOB (ACCT),'LAB ESDS',CLASS=A,MSGCLASS=X
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(LAB.VSAM.ESDS)
RECORDSIZE(80 80)
TRACKS(1 1)
CISZ(4096)
NONINDEXED)
/*
💡 Insights Bellacosa
- ESDS não tem chave → leitura sequencial pura
- Ideal para logs, trilhas, arquivos históricos
-
CISZ(4096)→ tuning começa aqui!
🧪 LAB 2 — KSDS: o cérebro do VSAM (com índice)
🎯 Objetivo
Criar um dataset indexado com chave.
🔧 JCL
//KSDSJOB JOB (ACCT),'LAB KSDS',CLASS=A,MSGCLASS=X
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(LAB.VSAM.KSDS)
RECORDSIZE(80 80)
KEYS(10 0)
INDEXED
TRACKS(1 1)
CISZ(4096))
/*
💡 Insights de guerra
-
KEYS(10 0)→ chave começa na posição 0 com tamanho 10 - KSDS usa árvore B (index) → acesso rápido tipo DB2-lite
-
Pode acessar:
- sequencial
- random (pela chave)
🧪 LAB 3 — RRDS: acesso direto estilo “memória RAM”
🎯 Objetivo
Criar dataset por número relativo.
🔧 JCL
//RRDSJOB JOB (ACCT),'LAB RRDS',CLASS=A,MSGCLASS=X
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER(NAME(LAB.VSAM.RRDS)
RECORDSIZE(80 80)
NUMBERED
TRACKS(1 1)
CISZ(4096))
/*
💡 Sacada ninja
- Acesso via RRN (Relative Record Number)
-
Tipo array:
- Registro 1
- Registro 2
- Registro 3…
👉 Muito usado em sistemas antigos de alta performance
🔍 LAB 4 — Explorando INDEX (o segredo do KSDS)
🎯 Ver o INDEX
//LISTCAT JOB (ACCT),'LISTCAT',CLASS=A,MSGCLASS=X
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
LISTCAT ENT(LAB.VSAM.KSDS) ALL
/*
💡 O que observar:
- INDEX LEVELS
- CI/CA splits
- FREESPACE
👉 Aqui você começa a pensar como performance engineer 😎
⚙️ LAB 5 — Brincando com CI e CA (onde mora a performance)
🎯 Criar KSDS com tuning
DEFINE CLUSTER(NAME(LAB.VSAM.KSDS.TUNED)
RECORDSIZE(80 80)
KEYS(10 0)
CISZ(8192)
FREESPACE(20 10)
INDEXED)
💡 Tradução prática
-
CISZ(8192)→ menos I/O (mais dados por leitura) -
FREESPACE(20 10):- 20% no CI
- 10% no CA
👉 Evita CA SPLIT (o terror do desempenho)
🔥 LAB 6 — Carga de dados (REPRO)
//LOADJOB JOB (ACCT),'LOAD',CLASS=A,MSGCLASS=X
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//INFILE DD *
0000000001CLIENTE001
0000000002CLIENTE002
/*
//OUTFILE DD DSN=LAB.VSAM.KSDS,DISP=SHR
//SYSIN DD *
REPRO INFILE(INFILE) OUTFILE(OUTFILE)
/*
💻 LAB 7 — COBOL acessando VSAM (o momento Jedi)
📌 Exemplo KSDS
SELECT ARQ-KSDS ASSIGN TO 'LAB.VSAM.KSDS'
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS WS-KEY.
FD ARQ-KSDS.
01 REGISTRO.
05 WS-KEY PIC X(10).
05 WS-DADOS PIC X(70).
🧠 MENTALIDADE DE PRODUÇÃO (ouro puro)
👉 ESDS = simples, rápido, bruto
👉 KSDS = flexível, poderoso, mais caro
👉 RRDS = ultra rápido, mas limitado
👉 Problemas reais que você vai ver:
- CI SPLIT
- CA SPLIT
- Fragmentação
- Performance degradando com o tempo
⚡ DESAFIO FINAL (modo Bellacosa ON)
- Crie um KSDS com chave cliente
- Insira 100 registros
- Faça leitura random via COBOL
- Gere LISTCAT antes/depois
- Analise splits
👉 Se você fizer isso, você deixou de ser padawan.
☕ FECHAMENTO
VSAM não é só dataset.
É:
- engenharia de performance
- organização de dados
- base de sistemas críticos há décadas
E quando você entende CI, CA e INDEX…
👉 você começa a enxergar o mainframe como ele realmente é.
Sem comentários:
Enviar um comentário