☕ 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 performance. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta performance. Mostrar todas as mensagens

sexta-feira, 18 de setembro de 2026

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

 

Bellacosa Mainframe e o dataset vsam

☕ 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."

quinta-feira, 10 de setembro de 2026

🎧 zBNA — A Conversação do Batch: Harry Caul e o Mistério do Critical Path

 

Bellacosa Mainframe apresenta o zBNA analise de processos batch

☕ Um Café no Bellacosa Mainframe

🎧 zBNA — A Conversação do Batch: Harry Caul e o Mistério do Critical Path

Sob a batuta de Harry Caul, de The Conversation: no mainframe, assim como numa gravação de vigilância, o problema raramente está simplesmente no sinal mais alto. Está naquilo que acontece entre os sinais — nas pausas, dependências, esperas e detalhes que ninguém percebeu.



Imagine uma sala silenciosa.

Na parede existem gráficos de CPU, relatórios de utilização, tempos de execução, estatísticas de I/O e algumas planilhas de capacity planning.

O batch deveria ter terminado às 03:00.

São 03:17.

Alguém olha para o gráfico e diz:

— Precisamos de um mainframe maior.

No fundo da sala, Harry Caul não responde.

Ele coloca os fones de ouvido.

Volta a fita.

Escuta novamente.

Porque Harry aprendeu uma coisa durante toda uma vida ouvindo conversas que outras pessoas não deveriam ouvir:

uma informação isolada pode dizer algo completamente diferente quando colocada no contexto correto.

E é exatamente esse o problema que encontramos quando tentamos fazer sizing de um ambiente IBM Z olhando somente para capacidade de processador.

Bem-vindo à investigação.



🎧 1. Harry Caul não começaria olhando o processador

Para quem nunca assistiu a The Conversation, Harry Caul é um especialista em vigilância e gravação de áudio.

Seu trabalho não consiste simplesmente em gravar sons.

Ele precisa separar ruído de informação.

Uma conversa aparentemente banal pode esconder algo importante.

Uma frase pode assumir outro significado quando escutada novamente.

No nosso datacenter acontece algo parecido.

Temos:

CPU utilization
MSU
MIPS
Elapsed Time
CPU Time
I/O
Wait
ENQ
Db2
VSAM
JES2
WLM
Scheduler

Tudo está falando ao mesmo tempo.

O erro seria escolher o gráfico mais chamativo e concluir:

CPU alta
   ↓
Falta capacidade
   ↓
Comprar processador

Pode ser verdade.

Mas ainda não sabemos.

Harry Caul provavelmente perguntaria:

“O que aconteceu antes disso?”


 

Essa pergunta nos leva ao IBM Z Batch Network Analyzer — zBNA.



🕸️ 2. O batch é uma conversa entre JOBs

Para um programador COBOL iniciante, uma sequência batch pode parecer algo relativamente simples.

Temos JOBs:

JOB001
JOB002
JOB003
JOB004
JOB005

Parece uma lista.

Mas operacionalmente eles podem estar relacionados:

             +--> JOB B --+
             |            |
JOB A -------+            +--> JOB D --> JOB E --> FIM
             |            |
             +--> JOB C --+

Agora a história mudou.

JOB B e JOB C dependem de A.

JOB D depende de alguma condição relacionada aos anteriores.

JOB E depende de D.

Portanto, não estamos mais observando apenas programas.

Estamos observando uma rede de dependências.

É quase uma conversação:

JOB A: terminei.

JOB B: agora posso começar.
JOB C: eu também.

JOB C: terminei.

JOB D: ainda não.

JOB B: terminei.

JOB D: agora sim.

JOB D: processando...
JOB D: processando...
JOB D: processando...

JOB E: esperando...

Harry Caul imediatamente prestaria atenção naquele silêncio.

Por que JOB E está esperando?


⏱️ 3. O silêncio também faz parte da gravação

Esse é um conceito fundamental para quem começa a estudar performance.

Um programa pode estar demorando sem estar usando CPU.

Considere:

Elapsed Time = 42 minutos
CPU Time     = 11 minutos

Onde estão os outros 31 minutos?

Essa é uma pergunta maravilhosa.

Porque começamos a procurar:

I/O WAIT
LOCK
ENQ
DATASET CONTENTION
DB2 LOCKING
QUEUE
SCHEDULING
RESOURCE WAIT
NETWORK
APPLICATION SERIALIZATION

Imagine nossa investigação encontrando:

Elapsed Time     42 min
├── CPU           11 min
├── I/O            17 min
├── Lock/ENQ        8 min
└── Outros waits    6 min

Agora tente resolver isso simplesmente colocando mais processador.

Talvez os 11 minutos de CPU melhorem.

Mas e os outros?

Essa é a primeira grande lição:

Elapsed Time não é simplesmente CPU Time usando outro relógio.


🐉 4. Encontramos JOB D

Voltemos à cadeia:

JOB A = 12 min

       +-- JOB B = 18 min --+
       |                    |
       +-- JOB C =  7 min --+
                            |
                         JOB D = 42 min
                            |
                         JOB E = 9 min

B e C podem executar simultaneamente.

Portanto não podemos simplesmente fazer:

12 + 18 + 7 + 42 + 9

Precisamos considerar a dependência.

Nesse exemplo simplificado:

12 + MAX(18,7) + 42 + 9

Temos:

12 + 18 + 42 + 9 = 81 minutos

E observe JOB D:

42 / 81 ≈ 52%

Ele ocupa mais da metade do caminho.

Harry Caul colocaria os fones novamente.

Por que exatamente são 42 minutos?

Essa pergunta vale potencialmente muito dinheiro.


🛣️ 5. Critical Path — quem realmente possui o relógio?

Chegamos ao conceito central:

Critical Path.

Imagine uma rede maior:

                 JOB B --------+
                /               \
JOB A ----------                 +---- JOB F ----+
                \               /                |
                 JOB C --> JOB D                 +--> JOB H
                                                /
                 JOB E -------------------------+

Podemos possuir diferentes caminhos:

A → B → F → H

A → C → D → F → H

E → H

Um deles determinará quando todo o processo poderá terminar.

Esse é nosso caminho crítico.

E aqui surge uma descoberta extremamente importante:

O JOB que mais consome CPU não precisa ser o JOB mais importante para reduzir a janela batch.

Suponha que JOB X consuma enorme quantidade de CPU.

Todo mundo olha para ele.

JOB X
CPU TIME = █████████████████████

Parece culpado.

Mas JOB X possui bastante folga e está fora do critical path.

Você consegue uma otimização fantástica:

JOB X
-30% elapsed

Resultado sobre o fechamento:

0 minutos

Nada.

O batch termina exatamente no mesmo horário.

Enquanto isso, um JOB pequeno pertencente ao critical path perde cinco minutos esperando determinado recurso.

Eliminar aquela espera poderia antecipar o fechamento em aproximadamente cinco minutos.

Harry Caul diria:

vocês estavam ouvindo a pessoa errada.


💻 6. Programador COBOL: não condene o programa imediatamente

Encontramos JOB D.

A primeira reação pode ser:

— COBOL velho!

Calma.

Talvez o programa esteja perfeitamente correto.

Imagine:

PERFORM PROCESSA-REGISTRO
   UNTIL EOF.

O programa está executando adequadamente.

Mas cada ciclo depende de acesso a um recurso.

Pode existir:

COBOL
  ↓
VSAM
  ↓
Dataset
  ↓
ENQ
  ↓
WAIT

Ou:

COBOL
  ↓
SQL
  ↓
Db2
  ↓
LOCK
  ↓
WAIT

Ou ainda:

JOB
 ↓
Scheduler
 ↓
Dependency
 ↓
WAIT

Nenhuma quantidade de indignação contra o COBOL resolverá automaticamente isso.

E talvez nenhuma quantidade adicional de CPU resolva.

Precisamos encontrar a causa.


⚙️ 7. Capacity não é a mesma coisa que velocidade

Aqui encontramos outra armadilha.

Imagine dois sistemas hipotéticos:

SYSTEM A
10 engines × velocidade X

SYSTEM B
6 engines × velocidade Y

Mesmo que determinada medida agregada de capacidade pareça semelhante, o comportamento do workload pode ser diferente.

Por quê?

Imagine trabalho altamente paralelo:

JOB1 ──┐
JOB2 ──┤
JOB3 ──┼──> resultado
JOB4 ──┤
JOB5 ──┘

Vários engines podem ser aproveitados.

Agora imagine:

JOB1
  ↓
JOB2
  ↓
JOB3
  ↓
JOB4

Colocar dezenas de engines disponíveis ao lado dessa sequência não faz os JOBs executarem simultaneamente por mágica.

Temos então que distinguir:

aggregate capacity

de

per-engine performance

e ambos de:

usable parallelism.


🧵 8. Usable parallelism — dez microfones não criam dez conversas

Harry Caul poderia instalar dez microfones.

Mas se existe apenas uma pessoa falando, continuamos tendo uma conversa.

No mainframe podemos possuir:

10 engines disponíveis

enquanto o workload oferece:

1 unidade relevante de trabalho executável

Visualmente:

CPU0 ████████████
CPU1 ░░░░░░░░░░░░
CPU2 ░░░░░░░░░░░░
CPU3 ░░░░░░░░░░░░
CPU4 ░░░░░░░░░░░░

Adicionar CPU5, CPU6 e CPU7 não necessariamente ajudará.

Talvez precisemos investigar:

  • dependências;

  • scheduler;

  • initiators;

  • particionamento;

  • desenho dos JOBs;

  • datasets;

  • banco;

  • I/O;

  • serialização da aplicação.

Esse é o significado prático de usable parallelism.

Não importa somente quanta capacidade existe.

Importa quanto daquele paralelismo o workload consegue realmente consumir.


🏭 9. JES2, WLM e scheduler entram na sala

Agora nossa investigação fica mais interessante.

Eu dividiria o problema em quatro níveis:

BUSINESS PROCESS
       ↓
BATCH NETWORK
       ↓
z/OS RESOURCE BEHAVIOR
       ↓
PROCESSOR

No terceiro andar dessa investigação encontramos:

JES2
WLM
Initiators
Scheduler
I/O
Db2
VSAM
ENQ
Storage
Memory
Network

Imagine comprarmos um IBM Z muito mais poderoso.

Temos:

PROCESSOR
████████████████████████

JOB
██████

WAIT
████████████████████████████████

O processador está disponível.

O JOB não está trabalhando.

Harry Caul aumenta o volume.

Nada.

Porque o problema não está onde todos estavam olhando.


🎧 10. CPU a 95%: culpada!

Não tão rápido.

Encontramos:

CPU = 95%

Parece assustador.

Mas existe trabalho útil sendo processado?

O SLA está sendo atendido?

Existe fila significativa esperando CPU?

A utilização é sustentada ou apenas um pico?

O comportamento está dentro do esperado?

Então 95% isoladamente não constitui diagnóstico.

Agora encontramos:

CPU = 40%

Maravilha!

Temos sobra.

Talvez.

Ou talvez metade do workload esteja esperando recursos.

Portanto:

CPU HIGH ≠ automaticamente ruim

CPU LOW ≠ automaticamente bom

Um gráfico é uma pista.

Não é uma sentença.


🕵️ 11. War Room Mainframe sob a batuta de Harry Caul

Agora apagamos as luzes.

Colocamos JOB D no centro da tela.

Pergunta número um:

Por que exatamente são 42 minutos?

Não:

Quanto CPU ele usa?

Ainda não.

Primeiro:

42 MINUTOS
    |
    +-- CPU?
    |
    +-- I/O?
    |
    +-- ENQ?
    |
    +-- Db2 lock?
    |
    +-- VSAM?
    |
    +-- Queue?
    |
    +-- Scheduler?
    |
    +-- Dependency?
    |
    +-- Application serialization?

Então começamos a correlacionar evidências.

Esse é o ponto em que capacity planning deixa de ser comparação de catálogo e começa a se aproximar de investigação.


🔄 12. Harry Caul volta a fita

Encontramos o gargalo.

PATH A:

81 minutos

PATH B:

75 minutos

Otimizamos PATH A:

81 → 70

Excelente!

Acabou?

Não.

Agora temos:

PATH A = 70
PATH B = 75

PATH B tornou-se o novo critical path.

O gargalo mudou de endereço.

Esse comportamento ensina uma das coisas mais importantes sobre performance:

MEASURE
   ↓
ANALYZE
   ↓
FIND CRITICAL PATH
   ↓
OPTIMIZE
   ↓
MEASURE AGAIN
   ↓
RECALCULATE
   ↺

Harry Caul volta a gravação porque uma segunda audição pode revelar algo que a primeira interpretação escondeu.

Nós fazemos a mesma coisa.

Depois de modificar o workload, medimos novamente.


💰 13. Performance também conversa com dinheiro

Existe outro microfone naquela sala.

Custo.

Sizing não deveria ser simplesmente:

Qual máquina é mais rápida?

Precisamos equilibrar:

PERFORMANCE
     +
CAPACITY
     +
SLA
     +
SOFTWARE COST
     +
OPERATIONAL RISK
     +
GROWTH

Porque uma solução tecnicamente elegante pode não ser economicamente interessante.

Da mesma maneira, economizar dinheiro sacrificando um SLA crítico pode custar muito mais ao negócio.

Sizing é um problema de engenharia.

Mas também é um problema de negócio.


🎯 14. Antes do zBNA existe uma pergunta zero

Eu acrescentaria uma etapa antes de qualquer análise:

Qual é o SLA?

Imagine que o fechamento termina às 04:30.

Caso A:

SLA = 06:00
Fim = 04:30

Temos determinada situação.

Caso B:

SLA = 03:00
Fim = 04:30

Agora temos um incidente.

Os mesmos JOBs.

A mesma CPU.

O mesmo hardware.

O mesmo elapsed.

Contextos de negócio completamente diferentes.

Performance sem objetivo é apenas uma coleção muito bonita de gráficos.


🧠 15. As seis perguntas de Harry Caul

Se eu estivesse ensinando isso para um programador COBOL iniciante, colocaria seis perguntas ao lado do terminal:

1. Quando o negócio precisa terminar?

SLA.

2. O que precisa acontecer para ele terminar?

Batch Network.

3. Qual sequência determina esse horário?

Critical Path.

4. Por que os componentes críticos estão demorando?

CPU, I/O, locks, ENQ, Db2, VSAM, scheduling, dependências.

5. O workload consegue utilizar capacidade adicional?

Usable Parallelism.

6. Qual alteração entrega maior benefício considerando custo e risco?

Sizing.

Somente então colocamos os candidatos a processador sobre a mesa.


☕ 16. A tradução para quem está começando no COBOL

Você escreveu:

PERFORM PROCESSO-A
PERFORM PROCESSO-B
PERFORM PROCESSO-C
PERFORM PROCESSO-D

Alguém aparece oferecendo um computador duas vezes mais rápido.

Parece razoável imaginar:

2 × PERFORMANCE
       =
1/2 ELAPSED TIME

Mas descobrimos:

PROCESSO-A → CPU

PROCESSO-B → espera arquivo

PROCESSO-C → espera outro JOB

PROCESSO-D → espera lock Db2

Ops.

Nosso computador duas vezes mais rápido não pode acelerar magicamente aquilo que não está usando processador.

Quando ampliamos isso para centenas ou milhares de JOBs, datasets, bancos, schedulers, dependências e recursos compartilhados, começamos a compreender por que precisamos enxergar o workload como sistema.

É aí que o zBNA se torna particularmente interessante.


🥚 Easter Egg — 03:17

O processamento deveria terminar às 03:00.

Harry está sentado no fundo da War Room.

03:00

Nada.

03:05

Nada.

03:11

Os gerentes começam a olhar para o dashboard.

03:16

Alguém diz:

— Precisamos de mais CPU.

Harry coloca os fones.

03:17

Ele volta alguns minutos da gravação operacional.

Na tela:

JOB D
STATUS: WAIT

CPU?

AVAILABLE

Ele continua seguindo a cadeia.

Predecessor.

Dataset.

ENQ.

Wait.

Silêncio.

Harry tira lentamente os fones.

Não faltava processador.

Faltava ouvir a conversa inteira.


🏁 Conclusão — o mainframe também deixa pistas

O ensinamento mais importante do zBNA não é simplesmente aprender a utilizar outra ferramenta.

É aprender a fazer uma pergunta melhor.

Um problema de performance não significa automaticamente:

NEED MORE CAPACITY

A janela batch é resultado de uma combinação muito mais interessante:

BATCH WINDOW
     =
CPU
+
DEPENDENCIES
+
SERIALIZATION
+
PARALLELISM
+
I/O
+
CONTENTION
+
SCHEDULING
+
RESOURCE AVAILABILITY
+
APPLICATION BEHAVIOR

O processador está dentro dessa equação.

Às vezes ele será justamente o gargalo e aumentar capacidade será a decisão correta.

Mas precisamos demonstrar isso.

Harry Caul não condenaria alguém porque uma palavra pareceu suspeita na primeira reprodução.

Ele limparia o ruído.

Voltaria a fita.

Compararia os sinais.

Procuraria o contexto.

No capacity planning deveríamos ter a mesma disciplina.

Antes de perguntar:

“Qual IBM Z devemos comprar?”

pergunte:

“Quem está segurando o batch?”

Depois encontre o critical path.

Descubra quanto do elapsed realmente depende de CPU.

Investigue I/O, locks, datasets, scheduler, JES2, WLM, Db2, VSAM, ENQ e dependências.

Descubra quanto paralelismo é realmente utilizável.

Meça.

Simule.

Altere.

Meça novamente.

E somente depois faça sizing.

Porque existe uma diferença enorme entre possuir uma gravação e compreender a conversa.

Da mesma maneira, existe uma diferença enorme entre possuir métricas e compreender o workload.

🎧 Não faça sizing do mainframe antes de fazer sizing do problema.

O processador pode fornecer a potência.

Mas é o critical path que possui o relógio.

E, às 03:17, quando todos estiverem olhando para a CPU, talvez o verdadeiro gargalo esteja silenciosamente esperando em algum lugar da conversação.

terça-feira, 28 de julho de 2026

IBM COBOL Elevate for z/OS: CSI Las Vegas no Laboratório do Código Legado

 

Bellacosa Mainframe apresenta o Ibm cobol elevate for zos

☕ Um Café no Bellacosa Mainframe

IBM COBOL Elevate for z/OS: CSI Las Vegas no Laboratório do Código Legado

Quando um Programador COBOL Descobre que o Verdadeiro Crime Não Está no Código Antigo — Está em Executá-lo Durante Décadas sem Investigar Onde a CPU Desaparece

Era madrugada no Data Center de Las Vegas.

As luzes do corredor piscavam sobre os corredores de armazenamento. O ruído constante da refrigeração lembrava o motor de uma aeronave que jamais poderia pousar. Milhões de transações cruzavam o ambiente enquanto quase toda a cidade dormia.

Cartões eram autorizados.

Reservas de hotéis eram confirmadas.

Pagamentos eram processados.

Apólices eram calculadas.

Contas bancárias eram atualizadas.

No centro daquele ecossistema havia um IBM Z executando programas COBOL que talvez tivessem sido escritos antes de alguns integrantes da equipe de desenvolvimento nascerem.

Tudo parecia normal.

Até que o alarme apareceu:

CPU CONSUMPTION ABOVE EXPECTED LEVEL

Gil Grissom aproximou-se do terminal 3270, observou os números e disse:

— A máquina não mente. Mas os números também não confessam sozinhos.

Ao lado dele, um jovem programador COBOL examinava um programa com 14 mil linhas e perguntava:

— Devemos recompilar tudo?

Grissom colocou os óculos, aproximou-se da tela e respondeu:

— Antes de alterar a cena do crime, precisamos descobrir o que realmente aconteceu.

É exatamente nesse ponto que entra o IBM COBOL Elevate for z/OS.

Anunciado pela IBM em 7 de julho de 2026, o produto foi apresentado como uma solução integrada para otimização, modernização, análise de desempenho e aceleração de upgrades de aplicações COBOL críticas. A primeira versão anunciada é o IBM COBOL Elevate for z/OS 1.1, com disponibilidade geral planejada para 18 de setembro de 2026. (IBM)

Mas o que isso realmente significa?

Seria apenas mais uma ferramenta de análise?

Um novo compilador?

Um profiler?

Uma solução de inteligência artificial?

Um produto de migração?

Ou uma tentativa da IBM de criar uma espécie de laboratório forense para investigar milhares de programas COBOL antes de alguém decidir alterá-los?

Coloque as luvas.

Isole a área.

Faça uma cópia do load module.

A investigação vai começar.



Capítulo 1 — A vítima não era o COBOL

Durante anos, consultorias, fabricantes e apresentações de modernização repetiram uma narrativa aparentemente irresistível:

“O problema é que o sistema foi escrito em COBOL.”

Essa afirmação soa moderna, mas frequentemente está errada.

O COBOL não é necessariamente o problema.

O verdadeiro problema pode estar em:

  • programas compilados há muitos anos;

  • versões antigas do compilador;

  • opções inadequadas de compilação;

  • módulos que consomem CPU desnecessariamente;

  • dependências que ninguém documentou;

  • chamadas repetitivas;

  • algoritmos inadequados para os volumes atuais;

  • programas recompilados parcialmente;

  • aplicações sem inventário confiável;

  • ausência de dados que mostrem onde vale a pena investir.

Imagine uma aplicação criada em 1996.

Naquele período, ela processava 100 mil registros por noite. Em 2026, executa a mesma lógica sobre 80 milhões de registros.

O código pode estar correto.

O resultado pode estar correto.

O batch pode terminar.

Mas um trecho executado uma única vez em 1996 talvez hoje seja repetido 80 milhões de vezes.

O crime não foi escrever o programa daquela forma.

O crime foi aumentar o volume por trinta anos sem voltar à cena para procurar novas evidências.


Capítulo 2 — A ficha do suspeito

Nome

IBM COBOL Elevate for z/OS

Release inicial anunciado

Versão 1.1

Data do anúncio

7 de julho de 2026

Disponibilidade geral planejada

18 de setembro de 2026

Ambiente principal

Aplicações COBOL executadas no IBM Z sob z/OS.

Missão declarada

Ajudar organizações a modernizar aplicações COBOL críticas por meio de:

  • otimização automatizada de desempenho;

  • aceleração de upgrades de compiladores;

  • análise de inventário e prontidão;

  • assistência por inteligência artificial;

  • informações de desempenho ligadas ao código-fonte;

  • redução do risco operacional;

  • aumento da produtividade das equipes.

A página oficial do produto resume a proposta como uma forma de revitalizar aplicações COBOL, obter ganhos contínuos de performance, acelerar upgrades do compilador e melhorar a qualidade do código, procurando minimizar o risco operacional. (IBM)

Portanto, o Elevate não deve ser entendido apenas como “mais uma ferramenta COBOL”.

Ele é apresentado como uma solução composta por três capacidades complementares:

  1. Accelerate

  2. Upgrade

  3. Performance Insights

Esses três componentes correspondem a três perguntas que assombram qualquer grande ambiente COBOL:

1. O que está consumindo recursos?
2. O que precisa ser atualizado?
3. Onde devemos agir primeiro?

Capítulo 3 — A cena do crime corporativa

Considere um banco fictício chamado Cassino Federal de Las Vegas.

Seu inventário contém:

42.000 programas COBOL
18 milhões de linhas de código
7.500 copybooks
12.000 jobs batch
3.800 transações CICS
2.400 módulos Db2
850 integrações MQ
Programas compilados em diferentes gerações

O diretor pergunta:

— Quanto ganharemos se atualizarmos todos os programas?

Ninguém sabe.

Em seguida, ele pergunta:

— Quais programas devemos recompilar primeiro?

Ninguém sabe.

Depois:

— Quais módulos realmente consomem mais CPU?

A equipe mostra relatórios de SMF, RMF, CICS, Db2, ferramentas de monitoramento e planilhas.

Então surge outra pergunta:

— Qual linha do programa provoca esse consumo?

Silêncio.

Esta é uma dificuldade clássica da engenharia de performance.

Os relatórios operacionais mostram que algo consumiu recursos. Entretanto, transformar a métrica operacional em uma ação concreta sobre o código pode exigir um especialista que entenda simultaneamente:

  • COBOL;

  • compiladores;

  • Language Environment;

  • CICS;

  • Db2;

  • IMS;

  • VSAM;

  • JCL;

  • SMF;

  • comportamento do processador;

  • arquitetura da aplicação;

  • regras de negócio.

Esses profissionais existem, mas são raros.

O IBM COBOL Elevate tenta reduzir essa distância entre o sintoma observado no ambiente e a ação que deve ser tomada no programa.


Capítulo 4 — Primeiro laboratório: Accelerate

O primeiro pilar recebe o nome de Accelerate.

Sua função começa com uma pergunta essencial:

Quais programas realmente precisam de otimização?

Isso parece simples, mas é uma mudança importante.

Em muitas empresas, modernização ainda é tratada como um projeto de massa:

Selecionar milhares de programas
            ↓
Recompilar tudo
            ↓
Executar testes
            ↓
Encontrar incompatibilidades
            ↓
Corrigir
            ↓
Testar novamente
            ↓
Implantar

Esse modelo pode funcionar, mas custa tempo, dinheiro e capacidade de testes.

O Accelerate propõe uma abordagem mais seletiva.

A IBM afirma que a solução realiza uma análise antecipada de performance para identificar os programas COBOL que necessitam de otimização. Depois de uma configuração inicial descrita como simples e realizada uma vez, o produto auxilia no processo de otimização. O anúncio também declara que aplicações identificadas podem ser otimizadas sem alteração do código-fonte, sem recompilação e sem extensas atividades manuais de análise de performance. (IBM)

Essa é provavelmente a afirmação mais provocativa de todo o anúncio.

Como otimizar sem modificar o fonte?

Aqui precisamos separar cuidadosamente fato confirmado de interpretação técnica.

O anúncio confirma o objetivo de otimizar determinados módulos sem modificar o fonte e sem exigir recompilação convencional. Porém, o material público inicial não descreve em detalhes toda a implementação interna utilizada para produzir essa otimização.

Portanto, não devemos inventar que o produto “reescreve o load module”, “aplica patches binários” ou “usa otimização JIT” sem documentação técnica que confirme esses mecanismos.

O que podemos afirmar é:

  • ele analisa previamente o ambiente;

  • identifica candidatos que oferecem potencial de ganho;

  • permite otimizações sem mudanças no fonte;

  • pretende reduzir a necessidade de análise manual extensa;

  • procura diminuir o esforço de testes antes da implantação.

No laboratório do CSI, isso equivale a melhorar a investigação sem obrigar alguém a reconstruir todo o edifício onde o crime ocorreu.

Por que o teste pode ser menor?

Porque existe uma diferença importante entre:

ALTERAR A REGRA DE NEGÓCIO

e:

OTIMIZAR A EXECUÇÃO DA MESMA REGRA

Quando o código-fonte é alterado, a organização precisa provar que:

  • nenhuma condição mudou;

  • nenhum cálculo foi afetado;

  • nenhum campo foi deslocado;

  • nenhum fluxo alternativo deixou de funcionar;

  • nenhum comportamento CICS, Db2 ou IMS foi modificado.

Quando a otimização preserva a lógica e não exige alteração do fonte, a estratégia de validação pode ser mais focada.

Isso não significa “não testar”.

Em sistemas críticos, qualquer mudança deve ser validada.

Significa que o escopo do teste pode potencialmente ser reduzido porque o objetivo não é alterar o comportamento funcional da aplicação.

Exemplo

Considere os seguintes programas:

PGM001 — executado 3 vezes por mês
PGM002 — executado 90 milhões de vezes por dia
PGM003 — consome 0,01 segundo
PGM004 — utiliza 17% da CPU total do batch noturno
PGM005 — será desativado em dois meses

Sem análise, uma empresa poderia tratar todos da mesma forma.

Com uma abordagem orientada por evidências, a prioridade provavelmente seria:

1. PGM004
2. PGM002
3. Investigar os demais somente se necessário

O grande ganho do Elevate pode não estar apenas em “acelerar programas”.

Pode estar em impedir que a equipe desperdice seis meses otimizando programas irrelevantes.


Capítulo 5 — Segundo laboratório: Upgrade

O segundo pilar chama-se Upgrade e trata de um dos projetos mais temidos do mundo COBOL:

atualizar o compilador.

Quem está começando pode imaginar que isso significa apenas trocar o comando de compilação.

Não é tão simples.

Um programa pode conter:

  • sintaxe antiga;

  • opções de compilação herdadas;

  • comportamentos dependentes de versões anteriores;

  • estruturas de dados mal definidas;

  • redefinições perigosas;

  • dependências com copybooks;

  • chamadas estáticas ou dinâmicas;

  • interfaces CICS;

  • SQL embutido;

  • acessos IMS;

  • bibliotecas específicas;

  • programas chamados por dezenas de outros módulos.

Por isso, atualizar um compilador não é apenas um problema tecnológico.

É também um problema de inventário.

A pergunta que ninguém deseja ouvir

— Quantos programas ainda foram compilados com versões antigas?

Em muitos ambientes, a resposta é:

— Estamos levantando.

Depois de três meses:

— Ainda estamos levantando.

Depois de seis meses:

— Encontramos outra biblioteca.

O Upgrade do COBOL Elevate foi projetado para ajudar a acelerar a adoção de níveis suportados do Enterprise COBOL. Para isso, a IBM apresenta recursos de inventário automatizado, avaliações de prontidão, remediação assistida por IA, fluxos guiados, análise de dependências, identificação de requisitos e previsão do risco do projeto. (IBM)

Isso transforma o upgrade em algo mais próximo de uma investigação estruturada.

Passo a passo conceitual

Passo 1 — Inventariar

Descobrir:

Quais programas existem?
Onde estão?
Qual compilador foi utilizado?
Quais bibliotecas participam do processo?
Quais programas chamam outros programas?

Passo 2 — Mapear dependências

Um programa raramente vive sozinho.

PGM-A
  ├── COPY CLIENTE
  ├── COPY CONTA
  ├── CALL PGM-B
  ├── EXEC SQL
  └── EXEC CICS LINK PGM-C

Modificar o PGM-A pode afetar mais do que o PGM-A.

Passo 3 — Avaliar prontidão

O sistema precisa identificar:

  • incompatibilidades;

  • padrões problemáticos;

  • opções obsoletas;

  • riscos de migração;

  • necessidades de correção.

Passo 4 — Priorizar

Os programas podem ser classificados, conceitualmente, como:

Baixo risco
Médio risco
Alto risco
Necessita investigação

Passo 5 — Remediar

A assistência de IA pode ajudar a explicar problemas e orientar correções.

Aqui existe uma diferença enorme entre:

ERRO NA LINHA 1784

e:

A construção utilizada depende de um comportamento legado.
Considere a seguinte alteração e execute estes testes.

Passo 6 — Executar ondas de migração

Em vez de uma migração caótica de 40 mil programas:

Onda 1 — baixo risco
Onda 2 — médio risco
Onda 3 — aplicações críticas
Onda 4 — casos especiais

Esse planejamento reduz o efeito “Big Bang”, no qual tudo é alterado ao mesmo tempo e ninguém consegue determinar qual mudança causou o incidente.


Capítulo 6 — Terceiro laboratório: Performance Insights

O terceiro pilar é o Performance Insights.

Talvez seja a parte mais fácil de explicar para um programador iniciante e uma das mais interessantes para um profissional experiente.

Tradicionalmente, performance no mainframe é observada por meio de dados como:

  • tempo de CPU;

  • tempo decorrido;

  • EXCP;

  • utilização de serviço;

  • contadores CICS;

  • métricas Db2;

  • estatísticas IMS;

  • informações SMF;

  • relatórios RMF;

  • medições por job, transação ou address space.

Essas informações são valiosas.

Porém, existe um problema.

Elas podem dizer:

O PROGRAMA X CONSOME MUITA CPU

mas não necessariamente:

A REGIÃO ENTRE AS LINHAS 1840 E 1880
É A PRINCIPAL RESPONSÁVEL

O Performance Insights procura conectar análise estática, análise dinâmica e dados reais de execução ao código-fonte COBOL. Com isso, a solução pretende identificar e priorizar problemas potenciais de performance, oferecendo recomendações acionáveis diretamente associadas ao fonte. (IBM)

Análise estática

É a investigação do código sem depender apenas de uma execução específica.

Ela pode observar padrões como:

  • estruturas de repetição;

  • chamadas;

  • pesquisas;

  • conversões;

  • movimentações;

  • uso de tabelas;

  • caminhos lógicos;

  • construções que merecem revisão.

Exemplo:

PERFORM 1000-PROCESSAR
   VARYING WS-INDICE FROM 1 BY 1
   UNTIL WS-INDICE > 5000000

A estrutura não é automaticamente um erro.

Mas merece atenção porque qualquer operação dentro dela pode ser repetida cinco milhões de vezes.

Análise dinâmica

É a observação da aplicação durante uma execução real ou representativa.

Ela responde:

  • quantas vezes o trecho executou;

  • quanto recurso foi consumido;

  • quais caminhos foram mais utilizados;

  • quais rotinas quase nunca foram chamadas;

  • onde o tempo ficou concentrado.

A união das duas

A análise estática diz:

“Este trecho tem potencial para ser caro.”

A dinâmica responde:

“Ele foi executado 80 milhões de vezes e representa parte relevante do consumo.”

Juntas, elas formam uma evidência muito mais forte.

No CSI, uma impressão digital isolada pode não resolver o caso.

Uma impressão digital, uma gravação, o horário e o DNA formam um conjunto muito mais convincente.


Capítulo 7 — Exemplo investigativo

Considere um programa de cálculo de tarifas:

       PERFORM VARYING WS-I FROM 1 BY 1
          UNTIL WS-I > WS-QTD-LANCAMENTOS

          MOVE SPACES TO WS-DESCRICAO

          PERFORM 3000-LOCALIZAR-TARIFA

          IF WS-TARIFA-ENCONTRADA
             COMPUTE WS-VALOR-TOTAL =
                     WS-VALOR-TOTAL + WS-TARIFA
          END-IF

       END-PERFORM.

O programa funciona.

Mas a análise revela:

Quantidade de iterações: 60.000.000
Chamadas à rotina de localização: 60.000.000
Percentual de CPU concentrado na rotina: 42%

A investigação do fonte mostra que a tabela de tarifas está ordenada, mas o programa realiza uma busca sequencial.

Um desenvolvedor poderia estudar a possibilidade de substituir uma lógica equivalente a busca linear por uma estratégia de busca binária, quando tecnicamente válida.

Por exemplo, em COBOL, uma tabela adequadamente declarada e ordenada pode permitir o uso de SEARCH ALL.

Mas aqui surge uma regra de ouro:

Nunca troque SEARCH por SEARCH ALL apenas porque alguém disse que é mais rápido.

Para utilizar SEARCH ALL, é necessário garantir, entre outros pontos:

  • tabela ordenada conforme a chave;

  • declaração compatível;

  • condição de busca adequada;

  • manutenção correta da ordenação;

  • testes que confirmem o comportamento.

Performance não é adivinhação.

É ciência baseada em medição.

O Elevate pretende ajudar justamente a mostrar onde uma mudança pode produzir impacto real, evitando a otimização baseada em superstição.


Capítulo 8 — A inteligência artificial entra na sala

A expressão “AI-assisted” aparece no anúncio, especialmente na área de remediação do upgrade.

Isso não deve ser interpretado como:

A IA substituirá todos os programadores COBOL.

O cenário é mais interessante.

A IA pode atuar como um assistente técnico capaz de:

  • interpretar resultados;

  • resumir dependências;

  • explicar incompatibilidades;

  • sugerir remediações;

  • orientar fluxos de atualização;

  • ajudar profissionais menos experientes;

  • reduzir o tempo gasto em levantamentos manuais.

Imagine o programador iniciante encontrando uma construção problemática.

Sem assistência, ele vê:

MIGRATION ISSUE 0C27

Com assistência contextual, ele poderia receber algo semelhante a:

O programa utiliza uma construção cujo comportamento
deve ser revisado na atualização do compilador.

Arquivos relacionados:
COPY-A
COPY-B

Programas dependentes:
PGM102
PGM238

Risco estimado:
Médio

Ação recomendada:
Revisar a definição do campo e executar os testes X, Y e Z.

A inteligência artificial não elimina a necessidade de julgamento humano.

Ela reduz o tempo necessário para chegar às perguntas corretas.

Grissom jamais condenaria um suspeito apenas porque um algoritmo o indicou.

Ele usaria a indicação para procurar evidências.

O mesmo vale para modernização COBOL.


Capítulo 9 — A ligação com o IBM z17

O anúncio do COBOL Elevate foi publicado no mesmo contexto da expansão da família IBM z17, incluindo configurações single frame e rack mount. A IBM posiciona o z17 como uma plataforma para aplicações críticas e relaciona o Elevate ao objetivo de extrair mais valor das aplicações COBOL existentes. A disponibilidade do COBOL Elevate foi anunciada para 18 de setembro de 2026. (IBM Newsroom)

Por que essa ligação importa?

Porque hardware e compilador evoluem juntos.

Um módulo compilado há muitos anos pode não aproveitar da melhor forma:

  • instruções mais recentes;

  • melhorias de geração de código;

  • avanços da arquitetura;

  • otimizações presentes em compiladores modernos;

  • capacidades da nova geração do IBM Z.

Isso não significa que um programa antigo deixe de funcionar.

A retrocompatibilidade é uma das forças históricas do mainframe.

Significa que:

funcionar não é necessariamente o mesmo que aproveitar todo o potencial disponível.

É como colocar um excelente piloto em um veículo moderno, mas obrigá-lo a dirigir utilizando um manual escrito para um modelo de trinta anos atrás.

O veículo anda.

Porém, vários recursos permanecem inutilizados.


Capítulo 10 — Para que o produto serve?

O IBM COBOL Elevate pode ajudar organizações que enfrentam problemas como:

1. Inventário desconhecido

A empresa não sabe exatamente quais programas existem, como se relacionam ou quais versões de compilador foram utilizadas.

2. Upgrade adiado

O projeto de atualização é constantemente postergado por medo do risco, falta de profissionais ou ausência de estimativas confiáveis.

3. CPU crescente

Os volumes aumentam, o consumo cresce e ninguém consegue relacionar facilmente a métrica operacional ao trecho de código responsável.

4. Equipe reduzida

Poucos profissionais conhecem profundamente todo o ambiente.

5. Otimização sem prioridade

Existem milhares de programas, mas não há critérios para decidir quais merecem atenção.

6. Modernização genérica

A empresa fala em modernização, mas não possui uma sequência prática de ações.

O Elevate procura oferecer uma rota mais objetiva:

Descobrir
   ↓
Medir
   ↓
Classificar
   ↓
Priorizar
   ↓
Otimizar
   ↓
Atualizar
   ↓
Validar
   ↓
Acompanhar

Capítulo 11 — O que ele não é

Também precisamos eliminar alguns suspeitos inocentes.

Não é um substituto automático do COBOL

O objetivo não é apagar o COBOL e converter tudo para outra linguagem.

Não é simplesmente um compilador novo

O Enterprise COBOL continua sendo o compilador. O Elevate trabalha em torno do processo de análise, otimização, priorização e upgrade.

Não é uma autorização para deixar de testar

Reduzir esforço de teste não significa eliminar testes.

Não é uma bola de cristal

Uma recomendação precisa ser analisada dentro do contexto da aplicação.

Não elimina especialistas

Ele pode reduzir dependências excessivas e tornar conhecimento mais acessível, mas arquitetos, desenvolvedores, engenheiros de performance, equipes de testes e especialistas de negócio continuam essenciais.

Não corrige regras de negócio erradas apenas acelerando o código

Um programa que calcula algo incorretamente continuará errado, talvez apenas mais rápido.

Essa é uma curiosidade importante:

Otimizar um erro pode transformar um erro lento em um erro de alta velocidade.


Capítulo 12 — Como um programador COBOL iniciante deve estudar o Elevate

Mesmo antes de utilizar o produto, o iniciante pode preparar a base técnica.

Passo 1 — Aprenda o ciclo de compilação

Entenda:

Fonte COBOL
   ↓
Pré-compilação, quando aplicável
   ↓
Compilação
   ↓
Objeto
   ↓
Binder
   ↓
Load module ou program object
   ↓
Execução

Sem compreender essa sequência, será difícil perceber o significado de otimizar, recompilar ou atualizar compiladores.

Passo 2 — Estude opções de compilação

Conheça conceitos como:

  • OPTIMIZE;

  • ARCH;

  • TUNE;

  • informações de debug;

  • listings;

  • mapas;

  • opções relacionadas ao comportamento do compilador.

Não é necessário decorar tudo.

O importante é perceber que dois programas com o mesmo fonte podem gerar objetos diferentes dependendo da versão e das opções utilizadas.

Passo 3 — Aprenda o básico de performance

Diferencie:

  • CPU time;

  • elapsed time;

  • espera por I/O;

  • contenção;

  • consumo de Db2;

  • tempo de serviço;

  • volume processado;

  • frequência de execução.

Um programa pode demorar muito sem consumir muita CPU, por exemplo, quando espera I/O ou algum recurso.

Passo 4 — Estude estruturas COBOL críticas

Observe:

  • loops;

  • tabelas;

  • chamadas;

  • buscas;

  • conversões;

  • campos mal definidos;

  • uso de funções;

  • movimentações repetitivas;

  • acessos a arquivos e bancos.

Passo 5 — Aprenda a medir antes de alterar

Nunca otimize apenas porque um trecho “parece feio”.

Código feio pode executar uma vez por semana.

Código elegante pode executar 500 milhões de vezes por dia.

Passo 6 — Entenda o negócio

Uma rotina pode parecer redundante, mas existir por exigência regulatória, contábil ou histórica.

Antes de removê-la, investigue.

No mainframe, muitos comentários ausentes estão escondidos na memória dos antigos membros da equipe.


Capítulo 13 — Um roteiro corporativo de adoção

Uma organização interessada no COBOL Elevate poderia estruturar uma iniciativa conceitual em fases.

Fase 1 — Definir o caso

Escolher uma aplicação com:

  • consumo relevante;

  • valor de negócio;

  • dados confiáveis;

  • equipe disponível;

  • volume representativo.

Fase 2 — Criar a linha de base

Registrar:

CPU atual
Elapsed atual
Volume processado
Versão dos módulos
Compiladores
Opções
Incidentes
Janela batch
SLA

Sem linha de base, qualquer alegação de melhoria vira opinião.

Fase 3 — Inventariar

Mapear programas, copybooks, bibliotecas e dependências.

Fase 4 — Analisar candidatos

Separar os módulos realmente relevantes.

Fase 5 — Avaliar recomendações

Reunir:

  • desenvolvimento;

  • performance;

  • produção;

  • testes;

  • negócio.

Fase 6 — Criar piloto

Começar com um conjunto controlado.

Fase 7 — Testar

Executar:

  • comparação funcional;

  • regressão;

  • análise de resultados;

  • performance;

  • recuperação;

  • rollback.

Fase 8 — Comparar

Exemplo:

ANTES
CPU: 100 unidades
Elapsed: 45 minutos

DEPOIS
CPU: 78 unidades
Elapsed: 37 minutos

Mas também verificar:

Resultados de negócio idênticos?
Registros processados idênticos?
Abends?
Diferenças?
Comportamento em pico?

Fase 9 — Expandir

Somente depois das evidências, ampliar para outras aplicações.


Capítulo 14 — Curiosidades recolhidas no laboratório

Curiosidade 1 — O nome “Elevate”

A escolha sugere elevar aplicações existentes, não descartá-las.

Não é “COBOL Replace”.

Não é “COBOL Escape”.

É “COBOL Elevate”.

O patrimônio permanece, mas deve ser levado a outro nível de eficiência e manutenção.

Curiosidade 2 — O release começa em 1.1

O produto foi anunciado publicamente como IBM COBOL Elevate for z/OS 1.1. A numeração pode refletir a estratégia de empacotamento e evolução do produto, mas não devemos inventar a existência de uma versão comercial 1.0 sem documentação específica.

Curiosidade 3 — O fonte não é a única evidência

Um programa COBOL possui várias camadas relevantes:

Fonte
Copybooks
Opções do compilador
Objeto
Program object
Runtime
Dados
Volume
Ambiente
Hardware

Analisar apenas o fonte é como analisar apenas a fotografia da cena sem examinar impressões digitais, horários e depoimentos.

Curiosidade 4 — O programa mais longo pode não ser o mais caro

Um programa de 20 mil linhas executado uma vez pode consumir menos que uma rotina de 30 linhas chamada 200 milhões de vezes.

Curiosidade 5 — A otimização pode adiar expansão de capacidade

Quando aplicações utilizam menos CPU ou terminam mais cedo, a empresa pode obter maior valor do hardware existente, liberar janela batch e acomodar crescimento.

Isso não significa que qualquer otimização automaticamente reduzirá custos, pois contratos, métricas e modelos de cobrança variam. Mas eficiência técnica aumenta as opções disponíveis para planejamento de capacidade.


Capítulo 15 — Easter eggs para veteranos

Easter egg 1 — O cadáver que se levantou

O COBOL já foi declarado morto tantas vezes que deveria possuir mais certidões de óbito que programas em uma load library.

Agora, em vez de organizar seu funeral, a IBM apresenta uma solução para fazê-lo executar melhor no z17.

Easter egg 2 — “Follow the evidence”

No CSI, Grissom dizia que as evidências contam a história.

Na performance, o equivalente é:

Follow the measurements.

Não siga a opinião.

Não siga a estética do código.

Não siga o módulo que alguém “acha” problemático.

Siga CPU, frequência, volume, tempo e impacto.

Easter egg 3 — O copybook desaparecido

Todo grande projeto de inventário encontra algum programa cuja compilação depende de um copybook guardado em uma biblioteca que ninguém conhecia.

Em Las Vegas, isso seria chamado de evidência escondida.

No mainframe, chama-se terça-feira.

Easter egg 4 — O load module sem fonte

Existe sempre aquele módulo antigo que funciona há vinte anos, mas cujo fonte correto ninguém consegue localizar.

Ele continua em produção como um suspeito sem documentos, vivendo sob identidade falsa.

Easter egg 5 — A linha inocente

Um simples:

MOVE ZERO TO WS-CONTADOR

parece inofensivo.

E geralmente é.

Mas qualquer operação multiplicada por centenas de milhões merece ser analisada no contexto correto.


Capítulo 16 — A pergunta provocativa

Durante décadas, a modernização foi vendida como uma escolha binária:

OU REESCREVEMOS TUDO
OU CONTINUAMOS PARADOS NO PASSADO

O COBOL Elevate confronta essa ideia.

Ele sugere uma terceira rota:

PRESERVAR A LÓGICA
COMPREENDER O AMBIENTE
ATUALIZAR O COMPILADOR
OTIMIZAR O QUE IMPORTA
MELHORAR CONTINUAMENTE

Isso é menos cinematográfico que uma reescrita completa.

Não produz um slide dizendo “100% transformação”.

Mas pode ser muito mais responsável.

Reescrever milhões de linhas de código não remove automaticamente a complexidade do negócio. Às vezes, apenas transporta os mesmos problemas para uma nova linguagem, adicionando novos defeitos durante o percurso.

A lógica acumulada durante décadas representa conhecimento institucional.

A modernização inteligente não começa perguntando:

“Como nos livramos do COBOL?”

Ela começa perguntando:

“O que este sistema faz, por que é importante, onde está o risco e como podemos melhorá-lo com evidências?”


Capítulo 17 — O impacto para a carreira COBOL

Para o programador iniciante, o anúncio traz uma notícia excelente.

O futuro profissional não será apenas escrever:

IF SALDO > ZERO
   PERFORM PAGAMENTO
END-IF

O novo profissional COBOL precisará compreender:

  • performance;

  • compilação;

  • dependências;

  • observabilidade;

  • análise estática;

  • análise dinâmica;

  • IA assistiva;

  • DevOps;

  • modernização;

  • arquitetura IBM Z;

  • qualidade de software.

O programador deixa de ser apenas o autor do fonte.

Torna-se investigador do comportamento da aplicação.

Essa mudança amplia a carreira.

Um desenvolvedor pode evoluir para:

  • especialista em modernização COBOL;

  • engenheiro de performance;

  • arquiteto de aplicações IBM Z;

  • especialista em upgrade de compiladores;

  • engenheiro DevOps para mainframe;

  • líder de qualidade;

  • analista de dependências;

  • consultor de otimização.

O COBOL Elevate não reduz a importância do conhecimento COBOL.

Ele torna esse conhecimento parte de uma disciplina mais ampla.


Veredito final do laboratório

O IBM COBOL Elevate for z/OS 1.1, anunciado em 7 de julho de 2026 e com disponibilidade geral planejada para 18 de setembro de 2026, representa uma tentativa ambiciosa da IBM de reunir otimização, modernização, atualização de compiladores, inteligência artificial e análise de performance em uma solução integrada. (IBM)

Seus três pilares formam uma sequência lógica:

ACCELERATE
Identificar e otimizar módulos relevantes.

UPGRADE
Inventariar, avaliar e acelerar a atualização do compilador.

PERFORMANCE INSIGHTS
Ligar evidências de execução ao código-fonte.

O maior mérito da proposta não é prometer uma substituição mágica do legado.

É reconhecer que o ambiente COBOL precisa ser investigado antes de ser transformado.

Em vez de tratar todos os programas como culpados, a solução procura:

  • localizar os verdadeiros consumidores;

  • medir o impacto;

  • identificar dependências;

  • avaliar riscos;

  • orientar correções;

  • concentrar o esforço onde existe retorno.

No final daquela madrugada em Las Vegas, o jovem programador olhou novamente para o alerta de CPU.

— Então não devemos recompilar tudo?

Grissom desligou a lanterna, colocou o relatório sobre a mesa e respondeu:

— Não até sabermos quais módulos estavam presentes, quantas vezes foram executados e o que fizeram com cada ciclo de processador.

Na tela do terminal, milhares de programas continuavam trabalhando.

Alguns estavam perfeitamente inocentes.

Outros escondiam comportamentos caros havia décadas.

E pela primeira vez, havia um novo investigador entrando no laboratório.

Seu nome era:

IBM COBOL ELEVATE FOR z/OS
RELEASE 1.1

Porque no mainframe, como no CSI, o código pode permanecer em silêncio.

Mas a CPU sempre deixa vestígios.

 Maiores informações

https://www.ibm.com/new/announcements/introducing-ibm-cobol-elevate-for-z-os

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...