☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

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

sexta-feira, 18 de setembro de 2026

🧙‍♂️ GANDALF E O VSAM QUE ATRAVESSOU AS ERAS

 

☕ Um Café no Bellacosa Mainframe

🧙‍♂️ GANDALF E O VSAM QUE ATRAVESSOU AS ERAS

COBOL, KSDS, ESDS, RRDS, CI, CA, buffers, LSR, RLS, DFSMS, Extended Format, encryption, zHyperLink, DS8000, IBM z17 — e o dia em que um jovem programador descobriu que o arquivo de 50 anos atrás ainda não estava pronto para se aposentar.

Sob a tutela de Gandalf


🎬 PRÓLOGO — VOCÊ NÃO PASSARÁ... SEM ENTENDER O VSAM!

Imagine um jovem programador COBOL chegando pela primeira vez diante de um IBM z17.

Ele olha para aquela máquina moderna, lê sobre processadores poderosos, criptografia, inteligência artificial, aceleração de I/O, APIs, containers, Linux, cloud e uma quantidade quase assustadora de tecnologias.

Então abre um programa COBOL.

E encontra isto:

SELECT CLIENTES
       ASSIGN TO CLIENTES
       ORGANIZATION IS INDEXED
       ACCESS MODE IS RANDOM
       RECORD KEY IS COD-CLIENTE.

Mais abaixo:

MOVE 123456 TO COD-CLIENTE.

READ CLIENTES
    INVALID KEY
        DISPLAY 'CLIENTE NAO ENCONTRADO'
END-READ.

Ele olha novamente para o z17.

Olha para o programa.

Olha para o z17.

— Gandalf... não está faltando alguma coisa?

O velho mago apoia o cajado no chão.

— Não.

— Mas isso parece o mesmo COBOL que alguém poderia ter escrito décadas atrás!

Gandalf sorri.

Exatamente.

E aqui começa nossa aventura.

Porque talvez a coisa mais impressionante sobre VSAM no IBM z17 seja justamente aquilo que não mudou.

O programa continua dizendo:

READ CLIENTES

Só que o universo existente entre esse READ e os dados tornou-se extraordinariamente sofisticado.

Prepare o café.

Pegue o cajado.

Hoje vamos atravessar a Terra-média do DFSMS.


🧙 CAPÍTULO 1 — A PERGUNTA ERRADA: "QUAL É O NOVO VSAM DO z17?"

Quando uma nova geração IBM Z aparece, é natural perguntar:

O que mudou no VSAM?

Talvez imaginemos algo chamado:

VSAM 17

ou:

VSAM Next Generation

Talvez esperemos encontrar um comando COBOL novo:

READ CLIENTES
    WITH-Z17-TURBO-MODE
END-READ.

Não existe.

E isso não é uma deficiência.

É uma das maiores virtudes da arquitetura.

O IBM z17 não representa uma reinvenção da interface lógica do VSAM.

Continuamos reconhecendo conceitos históricos:

KSDS
ESDS
RRDS
LDS

Control Interval
Control Area

INDEX
AIX
PATH

READ
WRITE
REWRITE
DELETE
START
READ NEXT

Portanto, se você aprendeu VSAM em uma geração anterior do IBM Z, seu conhecimento não virou cinzas quando o z17 apareceu.

Gandalf poderia resumir assim:

"Nem toda tecnologia antiga precisa morrer para que o mundo evolua."

O segredo está nas camadas inferiores.


🗺️ CAPÍTULO 2 — O MAPA DA TERRA-MÉDIA DO VSAM

Quando ensinamos VSAM para iniciantes, geralmente desenhamos:

COBOL
  |
  v
VSAM
  |
  v
DISCO

Isso é útil.

Mas é como representar toda a Terra-média desenhando apenas:

CONDADO
   |
MORDOR

Há muita coisa no caminho.

Em um ambiente moderno, podemos imaginar algo mais próximo disto:

                 APLICAÇÃO
                     |
                   COBOL
                     |
            +--------+--------+
            |                 |
          BATCH              CICS
            |                 |
            +--------+--------+
                     |
                    VSAM
                     |
          +----------+----------+
          |          |          |
         NSR        LSR        RLS
                                |
                             SMSVSAM
                     |
                   DFSMS
                     |
             BUFFER MANAGEMENT
                     |
               MEDIA MANAGER
                     |
                I/O SERVICES
                     |
                  CACHE
                     |
               zHyperLink
                     |
                  DS8000
                     |
                   FLASH

Agora nossa pergunta muda.

Não é apenas:

"VSAM ficou diferente?"

Passa a ser:

"O que aconteceu com todas as camadas que atendem aquele velho READ COBOL?"

Essa é uma pergunta muito mais interessante.


🔑 CAPÍTULO 3 — KSDS: O ANEL CONTINUA SENDO O ANEL

Vamos começar pelo conhecido.

Um KSDS — Key Sequenced Data Set — permite localizar registros através de uma chave.

Imagine:

CUSTOMER.KSDS

contendo:

000001  BILBO BAGGINS
000002  FRODO BAGGINS
000003  SAMWISE GAMGEE
000004  PEREGRIN TOOK
000005  MERIADOC BRANDYBUCK

Seu programa pode fazer:

MOVE 000003 TO CUSTOMER-ID.

READ CUSTOMER-FILE
    KEY IS CUSTOMER-ID
END-READ.

O COBOL não precisa conhecer o endereço físico daquele registro.

É justamente para isso que existe VSAM.

Conceitualmente:

KEY
 |
 v
INDEX
 |
 v
SEQUENCE SET
 |
 v
DATA
 |
 v
RECORD

E aqui aparece uma primeira lição importante.

O programador trabalha com:

KEY -> RECORD

O VSAM resolve o restante.


📦 CAPÍTULO 4 — CONTROL INTERVAL: A CAIXA QUE CARREGA SEUS REGISTROS

Um registro VSAM não está simplesmente flutuando sozinho no storage.

Precisamos conhecer o Control Interval, nosso famoso CI.

Simplificando:

CONTROL INTERVAL
+-----------------------------------+
| RECORD | RECORD | RECORD | FREE   |
+-----------------------------------+

Vários CIs formam uma estrutura maior chamada Control Area, CA.

CONTROL AREA
|
+-- CI 01
+-- CI 02
+-- CI 03
+-- CI 04
+-- CI 05

Portanto:

REGISTRO
   ↓
CONTROL INTERVAL
   ↓
CONTROL AREA
   ↓
VSAM DATA SET

Essa organização continua fundamental.

E ela será importante quando chegarmos ao zHyperLink.

Guarde o CI no bolso.

Voltaremos a ele.


💥 CAPÍTULO 5 — O BALROG CHAMADO CI SPLIT

Imagine:

+-----------------------------+
| A | B | C | D | FREE        |
+-----------------------------+

Há espaço disponível.

Novos registros entram.

Depois temos:

+-----------------------------+
| A | B | C | D | E | F      |
+-----------------------------+

Chega outro registro que precisa ser colocado naquela sequência lógica.

Não existe espaço adequado.

O VSAM pode precisar realizar um:

CI SPLIT.

Em situações maiores podemos chegar a:

CA SPLIT.

E Gandalf aparece diante do Balrog:

"YOU SHALL NOT PASS!"

Infelizmente, o novo registro responde:

"Tenho WRITE autorizado pelo RACF."

E passa.

Brincadeiras à parte, splits podem ter impacto operacional e de performance.

Por isso existem parâmetros como:

FREESPACE

e decisões sobre:

CI SIZE
CA SIZE

Um z17 não elimina magicamente um dataset mal planejado.

Hardware mais rápido não substitui arquitetura.


🧠 CAPÍTULO 6 — O I/O MAIS RÁPIDO É AQUELE QUE NÃO EXISTE

Aqui está uma das dicas mais importantes deste artigo.

Imagine:

READ CUSTOMER
      |
      v
    VSAM
      |
      v
   STORAGE

Talvez você pense:

Precisamos acelerar o storage!

Calma, jovem Hobbit.

Primeiro pergunte:

Por que estamos indo ao storage?

Se a informação necessária já estiver disponível em buffer/cache, podemos evitar determinado acesso físico.

Conceitualmente:

READ
 |
 v
BUFFER?
 |
 +--- HIT ---> RECORD
 |
 +--- MISS --> I/O

Compare:

READ
 ↓
I/O
 ↓
STORAGE
 ↓
RETURN

com:

READ
 ↓
BUFFER HIT
 ↓
RETURN

É por isso que buffering continua tão importante.

Não adianta possuir um storage absurdamente rápido se a aplicação estiver produzindo I/O desnecessário.


🧙‍♂️ CAPÍTULO 7 — NSR, LSR E RLS: TRÊS MAGOS CHEGAM À REUNIÃO

Você encontrará três siglas importantes no universo VSAM:

NSR
LSR
RLS

NSR — Non-Shared Resources

É o modelo convencional em que recursos utilizados no acesso ficam associados ao processamento daquele dataset/contexto.

LSR — Local Shared Resources

Permite compartilhamento de pools de buffers entre datasets VSAM dentro do contexto apropriado. É particularmente conhecido no universo CICS.

RLS — Record Level Sharing

Aqui nossa aventura cresce bastante.

Agora podemos pensar em múltiplos acessos compartilhados:

          CICS A
             |
             |
CICS B ---- VSAM ---- CICS C
             |
             |
          CICS D

E começam a aparecer problemas que não existem quando imaginamos apenas:

PROGRAMA -> ARQUIVO

Agora precisamos pensar em:

locking
serialization
sharing
consistency
recovery

Bem-vindo ao VSAM de produção.


🌍 CAPÍTULO 8 — A SOCIEDADE DO ANEL ENCONTRA O PARALLEL SYSPLEX

Imagine três sistemas:

LPAR A
  |
CICS A
  |
  +-----------+
              |
LPAR B        |
  |           |
CICS B -------+---- VSAM
              |
LPAR C        |
  |           |
CICS C -------+

Não queremos necessariamente limitar determinado dado a uma única região CICS ou sistema.

Em arquiteturas de alta disponibilidade e compartilhamento, RLS torna-se extremamente importante.

Agora aquele inocente:

READ CUSTOMER-FILE

faz parte de um universo distribuído dentro da arquitetura do próprio mainframe.

Isso é algo que surpreende muitos iniciantes.

VSAM não precisa significar:

"Um arquivo usado por um programa."

Pode participar de uma infraestrutura extremamente sofisticada.


🏦 CAPÍTULO 9 — DFSMStvs: QUANDO VSAM APRENDE TRANSAÇÕES MAIS SOFISTICADAS

Agora chegamos a uma tecnologia que muitos programadores COBOL passam anos sem conhecer:

DFSMStvs — Transactional VSAM Services.

Imagine:

             CUSTOMER.KSDS
                  |
          +-------+-------+
          |               |
        CICS             BATCH
          |               |
        UPDATE          UPDATE
          |               |
          +-------+-------+
                  |
               DFSMStvs

O problema já não é simplesmente ler um registro.

Queremos coordenação transacional, recuperação e compartilhamento apropriado entre workloads.

Isso não transforma VSAM em Db2.

Repita comigo:

VSAM não virou Db2.

Mas também mostra como é inadequado chamar VSAM simplesmente de:

"arquivo velho do COBOL".

Existe muita infraestrutura ao redor dele.


⚡ CAPÍTULO 10 — GANDALF DESCOBRE O zHYPERLINK

Agora chegamos a uma das partes mais interessantes da história.

zHyperLink.

Tradicionalmente, pensamos em I/O aproximadamente assim:

CPU
 |
 v
I/O REQUEST
 |
 v
I/O INFRASTRUCTURE
 |
 v
STORAGE
 |
 v
COMPLETION
 |
 v
APPLICATION

A arquitetura assíncrona de I/O é uma das grandes forças históricas do mainframe.

A CPU não deveria simplesmente ficar sentada olhando para um dispositivo lento.

Só que storage mudou dramaticamente.

Memória, cache e flash mudaram as relações de tempo.

Em determinadas situações, tornou-se interessante oferecer um caminho de synchronous I/O de baixíssima latência.

Entra zHyperLink.

Simplificando brutalmente:

             VSAM READ
                 |
                 v
         operação elegível?
                 |
                SIM
                 |
                 v
            zHyperLink
                 |
                 v
          STORAGE CACHE
                 |
                 v
             RESPONSE

E isso pode reduzir significativamente a latência para operações elegíveis.


🧩 CAPÍTULO 11 — O CI QUE GUARDAMOS NO BOLSO VOLTOU

Lembra do Control Interval?

Agora ele volta à história.

Porque existe relação entre quantidade de dados da operação e elegibilidade para determinados caminhos de I/O.

No ambiente moderno, parâmetros relacionados ao zHyperLink permitem controlar limites de leitura e explorar capacidades mais recentes de aceleração.

Portanto algo que aprendemos no primeiro curso de VSAM:

CI SIZE

continua conversando com uma infraestrutura que surgiu décadas depois.

Veja a beleza disso:

         DESIGN VSAM
              |
           CI SIZE
              |
              v
       TAMANHO DA LEITURA
              |
              v
        MEDIA MANAGER
              |
              v
       I/O ELIGIBILITY
              |
              v
         zHyperLink

Um conceito antigo continua relevante em uma máquina moderníssima.

Isso é mainframe.


⚠️ CAPÍTULO 12 — NÃO USE MAGIA SEM SABER O FEITIÇO

Neste momento alguém certamente perguntará:

Então devemos mudar todos os CIs para 16K?

NÃO!

Gandalf bate o cajado no chão.

Esse é exatamente o tipo de tuning que produz desastre:

ALGUÉM DISSE QUE 16K É MAIS RÁPIDO

Logo:

ALTERE TUDO!

Não.

O comportamento depende de:

record size
access pattern
random access
sequential access
insert rate
free space
buffering
RLS
cache
workload

Uma aplicação fazendo:

READ RANDOM
READ RANDOM
READ RANDOM

não possui necessariamente o mesmo perfil de:

START
READ NEXT
READ NEXT
READ NEXT
READ NEXT

E nenhuma das duas é necessariamente equivalente a uma carga massiva de inserções.

Meça antes de mudar.

Essa é uma das regras de ouro do mainframe.


📊 CAPÍTULO 13 — SMF E RMF: AS PALANTÍRI DA PERFORMANCE

Gandalf não faz tuning dizendo:

"Tenho a impressão de que está mais lento."

Ele consulta as Palantíri.

No z/OS temos instrumentos muito melhores:

SMF
RMF

Se você migrou determinada carga para uma plataforma mais nova e deseja saber o que aconteceu, investigue.

Observe coisas como:

CPU
elapsed time
I/O rate
I/O response time
EXCP
cache behavior
buffer behavior
locking
RLS activity
synchronous I/O
CI/CA splits

O método correto é:

BASELINE
   |
   v
MUDANÇA
   |
   v
NOVA MEDIÇÃO
   |
   v
COMPARAÇÃO
   |
   v
CONCLUSÃO

Não:

MIGRAMOS PARA z17
       |
       v
DEVE ESTAR MAIS RÁPIDO

"Deve" é uma palavra perigosa em Capacity Planning.


🏎️ CAPÍTULO 14 — MÁQUINA MAIS RÁPIDA NÃO SIGNIFICA TRANSAÇÃO MAIS RÁPIDA

Considere:

CUSTOMER.KSDS

200.000.000 registros

e:

CICS
8.000 READs/s

Migramos para uma infraestrutura mais nova.

Depois descobrimos:

CPU ↓

Excelente!

Mas:

RESPONSE TIME =

praticamente igual.

Como?

Porque talvez a transação esteja esperando:

I/O

ou:

LOCK

ou:

MQ

ou:

Db2

ou:

NETWORK

ou:

API

ou outra dependência.

Performance é uma corrente.

Acelerar um elo que não é o gargalo não acelera necessariamente a corrente inteira.


🗜️ CAPÍTULO 15 — EXTENDED FORMAT: VSAM GANHOU UMA MOCHILA NOVA

Outro conceito que o iniciante precisa conhecer é Extended Format.

Pense:

VSAM
 |
 +-- Conventional
 |
 +-- Extended Format

Com Extended Format entram possibilidades importantes associadas ao gerenciamento moderno de datasets, incluindo recursos como:

Data Striping
Compression
Extended Addressability
Encryption
System Managed Buffering

Isso significa que dois programas podem enxergar:

CUSTOMER.KSDS

enquanto por baixo existem características bastante diferentes.

O programa continua:

READ CUSTOMER-FILE

A infraestrutura pode estar fazendo muito mais.


📏 CAPÍTULO 16 — 4 GB JÁ FOI O TAMANHO DE SMAUG

Hoje alguém olha para:

4 GB

e pensa:

Só isso?

Historicamente, 4 GB já representou um limite enorme.

À medida que datasets cresceram, mecanismos como Extended Addressability tornaram possível ultrapassar limitações tradicionais.

Essa é outra lição interessante da história do mainframe.

A arquitetura não foi criada prevendo tudo que existiria cinquenta anos depois.

Ela foi evoluída.

Pense na sequência:

VSAM
1970s
 |
1980s
 |
1990s
 |
2000s
 |
2010s
 |
2020s
 |
IBM z17

Pouquíssimas tecnologias de infraestrutura possuem uma linhagem operacional comparável.


🔐 CAPÍTULO 17 — O REGISTRO PODE ESTAR CRIPTOGRAFADO E O COBOL NEM SABE

Agora imagine:

READ CUSTOMER-FILE
END-READ.

O programa não contém:

DECRYPT CUSTOMER

nem:

CALL AES

nem precisa carregar manualmente uma biblioteca criptográfica para cada READ.

A proteção dos dados pode acontecer em camadas inferiores da infraestrutura.

Conceitualmente:

COBOL
  |
 VSAM
  |
DFSMS
  |
ENCRYPTION
  |
STORAGE

Essa separação de responsabilidades é poderosa.

O programador trabalha com:

registro

A plataforma trabalha com:

proteção do dado

Isso permite modernizar requisitos de segurança sem obrigatoriamente reescrever milhões de linhas de aplicação.


🧙‍♀️ CAPÍTULO 18 — SYSTEM MANAGED BUFFERING

Outro conceito importante é o System Managed Buffering — SMB.

O nome praticamente explica a proposta.

Em vez de depender exclusivamente de escolhas estáticas e históricas sobre buffers, permitimos que mecanismos do sistema participem da estratégia.

Voltemos à nossa regra:

O I/O mais rápido é aquele que não precisa acontecer.

Temos:

APPLICATION
     |
    VSAM
     |
   BUFFER
     |
   CACHE
     |
     I/O
     |
  STORAGE

Quanto mais cedo conseguirmos satisfazer a necessidade, melhor.

Mas novamente:

não existe configuração universal perfeita.

Batch sequencial não é CICS random.

Leitura não é inserção.

Arquivo pequeno não é arquivo gigantesco.

Performance engineering exige contexto.


☁️ CAPÍTULO 19 — E O VSAM COMEÇA A OLHAR PARA A CLOUD

Uma das direções interessantes do ecossistema moderno é permitir que dados tradicionalmente residentes no ambiente z/OS participem mais facilmente de outros fluxos.

A evolução do DFSMS e mecanismos de Cloud Data Access aproxima datasets do mundo de object storage e processos modernos de movimentação de dados.

O desenho conceitual começa a parecer:

VSAM
 |
DFSMS
 |
Cloud Data Access
 |
Object Storage

Isso muda nossa maneira de pensar modernização.

Durante anos, muita gente tratou modernização como:

REMOVER O MAINFRAME

Hoje existe uma abordagem muito mais interessante:

MANTER O QUE FUNCIONA
       +
INTEGRAR COM O NOVO

Gandalf aprovaria.

Não precisamos destruir Minas Tirith para instalar Wi-Fi.


🧬 CAPÍTULO 20 — VSAM, JSON E O MUNDO MODERNO

Outra fronteira interessante é a transformação de registros tradicionais em representações modernas.

Imagine um copybook:

01 CUSTOMER.
   05 CUSTOMER-ID    PIC 9(08).
   05 CUSTOMER-NAME  PIC X(40).
   05 CUSTOMER-CITY  PIC X(30).

O mundo COBOL enxerga isso perfeitamente.

Uma aplicação moderna talvez prefira:

{
  "customerId": 317,
  "customerName": "Gandalf",
  "customerCity": "Valfenda"
}

Esses dois universos não precisam necessariamente ser inimigos.

Podemos construir pontes:

COPYBOOK
   |
   v
RECORD
   |
   v
TRANSFORMATION
   |
   v
JSON

Esse é um dos princípios centrais da modernização contemporânea do mainframe:

Modernizar o acesso não significa obrigatoriamente substituir o dado.


🏛️ CAPÍTULO 21 — VSAM NÃO É UM BANCO RELACIONAL

Precisamos colocar uma placa gigantesca aqui.

VSAM != Db2

VSAM possui características extremamente poderosas:

indexed access
sequential access
direct access
buffering
sharing
locking infrastructure
recovery integration

Mas não oferece o modelo relacional do Db2.

No Db2 posso pensar:

SELECT NAME
FROM CUSTOMER
WHERE CITY = 'HOBBITON'
ORDER BY NAME;

Em um KSDS tradicional, a chave e a organização dos dados têm uma importância estrutural enorme.

VSAM é brilhante quando o problema é algo parecido com:

KEY
 |
 v
RECORD

Db2 resolve outra classe de problemas.

Escolher tecnologia significa entender o problema.

Não escolher a tecnologia mais nova.


🧓 CAPÍTULO 22 — "MAS VSAM NÃO É VELHO?"

Sim.

E essa pergunta sozinha não significa absolutamente nada.

Um martelo é velho.

A roda é velha.

SQL é velho.

TCP/IP é velho.

COBOL é velho.

Unix é velho.

A pergunta arquitetural correta é:

Resolve o problema adequadamente?

Imagine:

CICS
 |
COBOL
 |
VSAM KSDS

processando milhares de transações com:

alta disponibilidade
baixo response time
previsibilidade
recuperação
décadas de estabilidade

Qual é o business case para substituí-lo?

"É antigo" não é business case.

Agora, se existem problemas como:

alto custo operacional
dificuldade de integração
limitações funcionais
escassez de conhecimento
problemas de escalabilidade
requisitos novos

a conversa muda.

Arquitetura começa pelo problema.


🔬 CAPÍTULO 23 — PASSO A PASSO: INVESTIGANDO VSAM EM UM AMBIENTE MODERNO

Se você é um Padawan COBOL — ou Hobbit COBOL, já que Gandalf assumiu a aula — siga esta sequência.

Passo 1 — descubra a organização

Pergunte:

KSDS?
ESDS?
RRDS?
LDS?

Passo 2 — descubra como é acessado

Sequential?
Random?
Dynamic?

Passo 3 — descubra quem usa

Batch?
CICS?
Ambos?

Passo 4 — examine a definição

Procure entender:

KEYS
RECORDSIZE
CONTROLINTERVALSIZE
FREESPACE
SHAREOPTIONS
DATACLASS
STORCLAS
MGMTCLAS

Não saia alterando.

Primeiro entenda.

Passo 5 — descubra o buffering

Pergunte:

NSR?
LSR?
RLS?
SMB?

Passo 6 — descubra o comportamento

Observe:

READ
WRITE
REWRITE
DELETE
READ NEXT

Passo 7 — procure sinais de problema

Investigue:

I/O excessivo
splits
lock contention
response time
elapsed time
CPU
buffer misses

Passo 8 — use telemetria

Entre no mundo:

SMF
RMF
CICS statistics
VSAM statistics

Passo 9 — crie baseline

Nunca diga:

"Ficou melhor."

Diga:

ANTES
CPU       = X
I/O       = Y
ELAPSED   = Z
RESPONSE  = W

DEPOIS
CPU       = ...
I/O       = ...
ELAPSED   = ...
RESPONSE  = ...

Agora temos engenharia.

Passo 10 — mude UMA coisa

Não altere simultaneamente:

CI
FREESPACE
buffers
storage
programa
CICS

e depois pergunte qual alteração funcionou.

Você jamais saberá.


🎒 CAPÍTULO 24 — CURIOSIDADES PARA LEVAR NA MOCHILA

Curiosidade 1: VSAM surgiu na década de 1970 e continua operacionalmente relevante em plataformas IBM Z modernas.

Curiosidade 2: conceitos aparentemente antigos, como CI e CA, continuam importantes mesmo quando a infraestrutura utiliza flash, grandes caches e mecanismos modernos de I/O.

Curiosidade 3: um programa COBOL pode continuar usando praticamente a mesma lógica de acesso enquanto hardware, storage, segurança e sistema operacional mudaram várias gerações.

Curiosidade 4: VSAM pode participar de arquiteturas compartilhadas muito mais sofisticadas do que a caricatura "programa abre arquivo".

Curiosidade 5: acelerar CPU não necessariamente reduz response time quando o gargalo está em I/O, locks ou outra dependência.

Curiosidade 6: evitar um I/O geralmente é mais interessante do que simplesmente tornar aquele I/O mais rápido.


🥚 CAPÍTULO 25 — O EASTER EGG DAS 03:17

São 03:17 da madrugada.

O telefone toca.

Produção.

O operador informa:

"O CICS está lento."

O jovem programador pergunta:

— Deve ser CPU?

Gandalf responde:

— Não sabemos.

— Storage?

— Não sabemos.

— VSAM?

— Não sabemos.

— Então o que fazemos?

Gandalf olha para o monitor e responde:

"Um mago não adivinha um gargalo. Ele chega exatamente quando as métricas dizem onde procurar."

Abrimos SMF.

Analisamos RMF.

O processador estava tranquilo.

Storage também.

Depois de muita investigação...

...descobrimos uma aplicação segurando locks muito mais tempo do que deveria.

O jovem olha para Gandalf.

— Então comprar um z17 maior não resolveria?

Gandalf acende o cachimbo.

— Agora você está começando a entender performance.


🧭 CAPÍTULO 26 — O QUE REALMENTE MUDOU?

Finalmente podemos responder à pergunta original.

Para o programador COBOL?

Pouco.

Ele continua conhecendo:

OPEN
READ
WRITE
REWRITE
DELETE
START
READ NEXT
CLOSE

Para a organização lógica?

Continuamos reconhecendo:

KSDS
ESDS
RRDS
LDS
CI
CA
AIX
PATH

Para a infraestrutura?

A história é completamente diferente.

Temos um universo envolvendo:

DFSMS
Extended Format
SMB
RLS
DFSMStvs
compression
encryption
cache
Media Manager
zHyperLink
modern storage
Parallel Sysplex
Cloud Data Access

É aqui que está a evolução.


🧙‍♂️ EPÍLOGO — O VSAM NÃO PRECISOU SE TORNAR OUTRA COISA

Ao final da aventura, nosso jovem programador retorna ao mesmo código:

MOVE CUSTOMER-ID TO WS-CUSTOMER-ID.

READ CUSTOMER-FILE
    INVALID KEY
       DISPLAY 'NOT FOUND'
END-READ.

Agora ele não enxerga apenas quatro linhas de COBOL.

Enxerga:

                   COBOL
                     |
                   READ
                     |
                    VSAM
                     |
             +-------+-------+
             |       |       |
            NSR     LSR     RLS
                             |
                          SMSVSAM
                     |
                   DFSMS
                     |
             EXTENDED FORMAT
                     |
                 BUFFERING
                     |
                MEDIA MANAGER
                     |
                 I/O SERVICES
                     |
                  zHyperLink
                     |
                    CACHE
                     |
                   DS8000
                     |
                 IBM Z17

E finalmente entende por que VSAM ainda é fascinante.

A genialidade não está em permanecer congelado em 1974.

Está em permitir que a interface conhecida pela aplicação sobreviva enquanto praticamente todo o universo existente debaixo dela evolui.

O programa pede:

READ

VSAM responde:

"Deixe comigo."

E entre essas duas frases podem existir cinquenta anos de engenharia.

Gandalf pega o cajado e começa a caminhar em direção ao próximo sistema.

O jovem programador pergunta:

— Mestre, então nunca devemos substituir VSAM?

Gandalf para.

Olha para trás.

— Eu não disse isso.

— Então quando devemos substituir?

O velho mago sorri.

"Quando você conseguir demonstrar qual problema está tentando resolver."

Silêncio no datacenter.

Nenhum Balrog.

Nenhum ABEND.

Apenas o som distante de um job terminando:

IEF142I JOB STEP WAS EXECUTED
COND CODE 0000

E em algum lugar de uma LPAR, um programa escrito décadas atrás executa novamente:

READ CUSTOMER-FILE

sobre uma infraestrutura que seu autor jamais poderia ter imaginado.

☕ Moral da história

No mainframe, compatibilidade não significa ausência de inovação.

Às vezes é justamente o contrário.

A maior demonstração de engenharia é permitir que tudo mude sem obrigar aquilo que funciona a mudar junto.

E antes de sair alterando CISIZE, FREESPACE, buffers ou qualquer outra coisa porque alguém prometeu performance...

lembre-se da primeira regra de Gandalf para o jovem analista de performance:

"Você não passará... para produção sem medir primeiro."

Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...