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

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.

sexta-feira, 27 de fevereiro de 2026

O Caso dos MIPS que Cresceram Três Vezes Mais Rápido : Quando Dick Tracy entra no CPD para investigar o assassinato do COBOL

 

Bellacosa Mainframe e o caso do mips comilao

☕ Um Café no Bellacosa Mainframe

O Caso dos MIPS que Cresceram Três Vezes Mais Rápido

Quando Dick Tracy entra no CPD para investigar o assassinato do COBOL — e descobre que a vítima continua processando milhões de transações

A madrugada havia engolido a cidade.

Do lado de fora, a chuva desenhava linhas tortas nas janelas do edifício. Do lado de dentro, no vigésimo andar de um banco que jamais dormia, milhares de transações atravessavam silenciosamente um IBM Z.

Cartões eram autorizados.

Pagamentos eram compensados.

Contas eram atualizadas.

Fraudes eram avaliadas.

Arquivos eram classificados.

Jobs eram executados.

E, em uma sala iluminada apenas pelo brilho verde de um terminal 3270, um programador COBOL iniciante observava uma mensagem inquietante no monitor:

A INTELIGÊNCIA ARTIFICIAL VAI MATAR O COBOL.

Ele afastou as mãos do teclado.

Naquele instante, a porta se abriu.

Entrou um homem de sobretudo amarelo, chapéu inclinado sobre os olhos e um estranho relógio-comunicador preso ao pulso.

— Meu nome não importa — disse o detetive. — O que importa é descobrir quem inventou essa história.

Sobre a mesa havia três objetos:

  1. uma queda de 13% nas ações da IBM;

  2. uma ferramenta chamada watsonx Code Assistant for Z;

  3. uma declaração afirmando que clientes usuários da ferramenta estavam aumentando sua capacidade em MIPS três vezes mais rapidamente.

Parecia um caso simples.

Mas, no mainframe, como em toda boa investigação, o primeiro suspeito raramente é o verdadeiro culpado.


Capítulo 1 — A manchete que assustou Wall Street

Em fevereiro de 2026, a Anthropic anunciou recursos de inteligência artificial voltados à compreensão e modernização de sistemas escritos em COBOL. A reação do mercado foi imediata: as ações da IBM caíram aproximadamente 13,2% em um único pregão.

A interpretação de muitos investidores foi direta:

IA compreende COBOL
        ↓
IA converte COBOL
        ↓
Empresas abandonam o mainframe
        ↓
IBM perde clientes
        ↓
Fim do IBM Z

A Reuters registrou que a queda ocorreu após o mercado interpretar o anúncio como uma possível ameaça ao negócio de modernização de aplicações legadas e ao ecossistema de mainframe da IBM. (Reuters)

Para quem observa o mainframe apenas de fora, o raciocínio parece razoável.

Existem milhões de programas COBOL em bancos, seguradoras, governos, indústrias, empresas de telecomunicações e companhias aéreas. Se uma inteligência artificial puder converter tudo isso para Java, Python ou outra linguagem, então bastaria apertar um botão, esperar algumas horas e desligar o mainframe.

Caso encerrado.

O detetive, porém, olhou para a manchete e comentou:

— Rápido demais. Quando alguém apresenta uma migração corporativa como se fosse um MOVE, procure as provas que desapareceram.

Porque transformar um sistema corporativo não é isto:

MOVE PROGRAMA-COBOL TO PROGRAMA-JAVA.

A sintaxe pode ser convertida.

O significado do negócio, não necessariamente.


Capítulo 2 — O COBOL não trabalha sozinho

Um programador iniciante pode imaginar que uma aplicação COBOL seja apenas um arquivo-fonte contendo algumas centenas de linhas.

Em um exercício de treinamento, talvez seja assim:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. CALCULA-SALDO.

       DATA DIVISION.
       WORKING-STORAGE SECTION.

       01 WS-SALDO        PIC S9(9)V99 COMP-3.
       01 WS-CREDITO      PIC S9(9)V99 COMP-3.
       01 WS-DEBITO       PIC S9(9)V99 COMP-3.

       PROCEDURE DIVISION.

           COMPUTE WS-SALDO =
                   WS-CREDITO - WS-DEBITO

           DISPLAY 'SALDO: ' WS-SALDO

           GOBACK.

Entretanto, uma aplicação real pode envolver:

Programa COBOL
   │
   ├── COPYBOOKS
   ├── arquivos sequenciais
   ├── VSAM
   ├── tabelas Db2
   ├── transações CICS
   ├── mensagens IBM MQ
   ├── chamadas IMS
   ├── serviços REST
   ├── programas Assembler
   ├── rotinas PL/I
   ├── JCL
   ├── PROCs catalogadas
   ├── Control-M, IWS ou outro scheduler
   ├── regras RACF
   └── procedimentos operacionais

O programa não vive isolado.

Ele pertence a uma teia operacional.

Considere um simples campo:

01 WS-TIPO-CLIENTE PIC X(01).

Uma ferramenta automática pode reconhecer que se trata de um caractere.

Mas o que significa A?

Pode significar:

  • cliente ativo;

  • cliente antigo;

  • cliente especial;

  • conta de alto risco;

  • agência;

  • pessoa autorizada;

  • produto categoria A.

E o valor B?

Talvez não exista em nenhum manual. Pode ter sido criado em 1997 para atender uma resolução temporária que, por alguma razão, tornou-se permanente.

É aí que começa o verdadeiro mistério.

Código não é apenas código. Código corporativo é história empresarial executável.


Capítulo 3 — O cadáver que nunca apareceu

O mercado procurava o corpo do COBOL.

Não encontrou.

Cinco meses depois da queda provocada pelo temor de que a IA aceleraria a saída do mainframe, a própria IBM voltou a mencionar um dado curioso: clientes que implantaram o watsonx Code Assistant for Z estariam aumentando sua capacidade em MIPS três vezes mais rapidamente do que clientes que não o utilizavam.

A afirmação apareceu nos comentários financeiros da IBM já no primeiro trimestre de 2026 e foi repetida posteriormente. Nos comentários preparados do primeiro trimestre, a empresa declarou que os clientes que haviam implantado a solução apresentavam crescimento de capacidade três vezes superior. (IBM)

O mesmo indicador foi novamente citado na conferência de resultados de julho de 2026, associado à expansão de cargas, modernização e adoção de inteligência artificial no IBM Z. (Roic AI)

O detetive colocou duas fotografias sobre a mesa.

Na primeira:

FEVEREIRO DE 2026

IA PARA COBOL
       ↓
MERCADO IMAGINA MIGRAÇÃO
       ↓
AÇÃO DA IBM CAI

Na segunda:

MESES DEPOIS

IA PARA COBOL
       ↓
APLICAÇÕES SE TORNAM MAIS FÁCEIS DE EVOLUIR
       ↓
NOVOS PROJETOS ENTRAM EM PRODUÇÃO
       ↓
CAPACIDADE CRESCE

— Temos uma contradição — disse o programador.

— Não — respondeu o detetive. — Temos uma hipótese errada.

A inteligência artificial pode ajudar uma empresa a migrar partes de uma aplicação. Mas também pode tornar o ambiente existente mais compreensível, produtivo e modernizável.

Nesse segundo cenário, a IA não esvazia o mainframe.

Ela o destrava.


Capítulo 4 — O que são MIPS?

Antes de prosseguir, precisamos examinar uma das principais pistas.

MIPS significa:

Millions of Instructions Per Second
Milhões de instruções por segundo.

Historicamente, o termo foi usado como uma forma de representar a capacidade de processamento de um computador. No universo mainframe, ele também se tornou uma maneira informal de falar sobre o tamanho da capacidade instalada ou consumida.

Entretanto, para um profissional iniciante, é importante não transformar MIPS em uma medida mágica.

MIPS não responde sozinho a perguntas como:

  • o sistema está eficiente?

  • o programa está bem escrito?

  • o custo está controlado?

  • o tempo de resposta está adequado?

  • a carga está sendo executada no processador correto?

  • o crescimento corresponde a novas receitas?

  • houve aumento de desperdício?

No licenciamento e no gerenciamento de capacidade do IBM Z também aparecem conceitos como:

  • MSU;

  • R4HA;

  • rolling four-hour average;

  • capacidade contratada;

  • subcapacity;

  • Tailored Fit Pricing;

  • zIIP eligibility;

  • consumo por workload;

  • métricas de WLM e SMF.

Portanto, quando a IBM afirma que determinado grupo está crescendo capacidade em MIPS três vezes mais rapidamente, a leitura correta não é:

“A IA deixou o processador três vezes mais veloz.”

A leitura mais razoável é:

“As organizações que usam a ferramenta estão adicionando ou consumindo capacidade em ritmo significativamente maior.”

A IA não colocou nitroglicerina na CPU.

Ela pode ter acelerado o ciclo de desenvolvimento, análise e modernização.


Capítulo 5 — Correlação não é confissão

Todo bom detetive precisa desconfiar das evidências fáceis.

A declaração dos três vezes mais MIPS vem da IBM, fabricante tanto do mainframe quanto da ferramenta de inteligência artificial. Portanto, deve ser tratada como um indicador comercial relevante, não como uma prova científica independente.

Existem várias explicações possíveis.

Hipótese A — A ferramenta provoca crescimento

O watsonx Code Assistant for Z reduz o esforço de compreensão e modernização. Com isso, mais projetos são concluídos e mais cargas entram em produção.

Hipótese B — Empresas que já cresciam compraram a ferramenta

Organizações que adotam soluções avançadas de IA talvez já estivessem ampliando seus ambientes, aumentando transações e modernizando aplicações.

Nesse caso, o crescimento não teria sido causado exclusivamente pela ferramenta.

Hipótese C — Os dois fatores trabalham juntos

Clientes em expansão adotam a IA; a IA aumenta a produtividade; a produtividade permite ainda mais expansão.

Provavelmente, a realidade contém uma combinação dessas hipóteses.

A estatística é interessante, mas não demonstra sozinha causalidade. Ela não nos informa, por exemplo:

  • quantos clientes foram analisados;

  • qual foi o período exato;

  • quais setores estavam representados;

  • quanto do crescimento veio de novas aplicações;

  • quanto veio de crescimento orgânico;

  • quanto foi capacidade geral ou consumo específico;

  • como os clientes foram comparados.

Por isso, não devemos transformar o “3x” em religião.

Mas também não devemos ignorá-lo.

Em uma investigação, uma pegada não condena o suspeito. Porém, mostra onde ele esteve.


Capítulo 6 — O que o watsonx Code Assistant for Z realmente faz?

Aqui está uma das maiores confusões sobre IA e COBOL.

Muita gente imagina que a ferramenta possua apenas uma função:

COBOL → Java

Na realidade, a proposta é muito mais ampla.

A IBM descreve o watsonx Code Assistant for Z como uma solução que apoia diferentes fases do ciclo de vida: descoberta e análise de aplicações, explicação de código, refatoração, geração, otimização, transformação para linguagens mais novas e testes. (IBM)

Entre suas possibilidades estão:

1. Descoberta da aplicação

Antes de modernizar, é necessário saber o que existe.

A ferramenta pode ajudar a identificar:

  • programas;

  • chamadas;

  • COPYBOOKS;

  • arquivos;

  • tabelas;

  • jobs;

  • transações;

  • dependências;

  • fluxos de dados.

É o equivalente digital a espalhar fotografias, endereços e linhas vermelhas sobre a parede da delegacia.

PGM-A
  │
  ├── CALL PGM-B
  │      └── DB2.TBCLIENTE
  │
  ├── READ ARQVSAM
  │
  └── CALL PGM-C
         └── MQ.PUT

Sem esse mapa, uma alteração aparentemente pequena pode atingir dezenas de componentes.

2. Explicação de código

O desenvolvedor pode pedir uma explicação de determinada rotina ou fluxo.

Isso é particularmente útil quando encontramos algo assim:

       IF WS-COD-OPERACAO = '17'
          AND WS-TIPO-CONTA NOT = '9'
          AND WS-FLAG-ESP = 'S'
              PERFORM 4300-TRATA-LIMITE
       ELSE
              PERFORM 4500-TRATA-EXCECAO
       END-IF.

A IA pode resumir a lógica:

Quando a operação for do tipo 17, a conta não pertencer à categoria 9 e estiver marcada como especial, o programa processa o limite; caso contrário, executa o tratamento de exceção.

Isso ajuda.

Mas ainda precisamos perguntar:

  • O que é operação 17?

  • Por que a conta 9 foi excluída?

  • Quem define o indicador especial?

  • Essa regra continua válida?

  • Existe uma exigência regulatória?

  • O comportamento está coberto por testes?

A IA explica o que está escrito.

O especialista descobre o que aquilo significa para a empresa.

3. Descoberta de regras de negócio

A interface Z Understand foi criada para ajudar arquitetos e desenvolvedores a analisar aplicações e descobrir regras de negócio usando uma abordagem conversacional. (IBM)

Essa capacidade pode revelar que uma regra importante está espalhada entre:

3 programas COBOL
2 COPYBOOKS
1 tabela Db2
1 parâmetro em arquivo
1 passo de JCL

É muito comum que a regra real não esteja concentrada em um único lugar.

4. Documentação

Sistemas antigos nem sempre possuem documentação atualizada.

Na verdade, existe uma piada clássica no CPD:

“A documentação está perfeita. Só não corresponde mais ao programa.”

A IA pode auxiliar na produção de:

  • resumo funcional;

  • descrição técnica;

  • fluxo de execução;

  • inventário de componentes;

  • explicação de parágrafos;

  • documentação de interfaces;

  • identificação de entradas e saídas.

Em um caso divulgado pela IBM, a NOSI utilizou o produto para obter visibilidade sobre código e integrações não documentadas e automatizar parte da documentação. A IBM afirma que houve redução de 94% no tempo necessário para analisar código COBOL considerado supérfluo naquele contexto específico. É um estudo de caso do fornecedor, portanto deve ser interpretado dentro dessas condições. (IBM)

5. Refatoração

Refatorar não significa necessariamente trocar de linguagem.

Pode significar:

  • dividir um programa gigantesco;

  • isolar uma regra de negócio;

  • reduzir duplicações;

  • remover código morto;

  • separar acesso a dados;

  • transformar uma função em serviço;

  • melhorar nomes;

  • facilitar testes;

  • preparar uma API.

Imagine um programa de 40 mil linhas chamado:

PGM0001

Ele calcula tarifas, consulta clientes, atualiza contas, gera relatórios e talvez prepare café.

A modernização pode começar separando responsabilidades:

PGM0001
   │
   ├── SERVICO-CLIENTE
   ├── SERVICO-TARIFA
   ├── SERVICO-LIMITE
   └── SERVICO-AUDITORIA

O programa continua em COBOL, mas torna-se mais modular.

6. Transformação seletiva

Em alguns casos, uma parte da aplicação pode ser transformada em Java ou outra tecnologia. A própria IBM apresenta a transformação como seletiva e incremental, não como uma conversão automática indiscriminada de todo o ambiente. (IBM Mediacenter)

Essa diferença é crucial.

Modernização séria não pergunta:

“Como removemos todo o COBOL?”

Ela pergunta:

“Qual componente deve permanecer, qual deve ser refatorado, qual deve ser exposto por API e qual realmente precisa ser substituído?”


Capítulo 7 — O teste é a testemunha principal

Suponha que a IA converta o seguinte cálculo:

COMPUTE WS-JUROS ROUNDED =
        WS-SALDO * WS-TAXA / 100.

A versão gerada em Java pode parecer correta.

Mas precisamos investigar:

  • o COBOL utiliza decimal empacotado?

  • qual é a precisão?

  • onde ocorre o arredondamento?

  • existe truncamento intermediário?

  • o sinal está preservado?

  • quais valores máximos são permitidos?

  • existe ON SIZE ERROR?

  • o Java está usando double ou BigDecimal?

  • como os valores nulos são tratados?

  • existe diferença na representação da data?

  • como ocorre o commit?

Uma tradução sintaticamente bonita pode produzir resultados financeiramente errados.

COBOL: R$ 1.245,37
JAVA:  R$ 1.245,36

Um centavo parece pouco.

Multiplique por dez milhões de operações.

Agora temos uma ocorrência para a divisão de crimes financeiros.

Pesquisas sobre transformação automática de COBOL mostram que a validação da equivalência funcional continua sendo um dos pontos mais difíceis. Um trabalho publicado por pesquisadores ligados ao desenvolvimento de testes para o watsonx Code Assistant for Z observa que código transformado por modelos de linguagem não deve ser considerado correto sem validação, tornando necessários testes de equivalência entre o COBOL original e o código gerado. (arXiv)

Outro relato anterior de migração real de COBOL para Java também identificou os testes como uma das partes mais problemáticas do projeto, além da transferência do conhecimento do domínio. (arXiv)

Essa é a pista decisiva:

Converter código é uma atividade. Demonstrar que o negócio continua correto é outra completamente diferente.


Capítulo 8 — Como a IA pode aumentar os MIPS?

Agora conseguimos reconstruir o crime.

Imagine um banco com 120 solicitações de modernização.

Sem assistência de IA, cada equipe gasta grande parte do tempo tentando localizar componentes, interpretar código e mapear impactos.

120 solicitações
      ↓
análise lenta
      ↓
fila crescente
      ↓
poucas entregas
      ↓
aplicação congelada

Com ferramentas de descoberta, explicação e documentação:

120 solicitações
      ↓
análise mais rápida
      ↓
melhor compreensão
      ↓
mais testes preparados
      ↓
mais entregas
      ↓
mais serviços em produção

Essas entregas podem gerar:

  • novas transações CICS;

  • consultas adicionais ao Db2;

  • mensagens MQ;

  • chamadas de APIs;

  • processamento antifraude;

  • integração com aplicativos móveis;

  • novos lotes noturnos;

  • uso de IA próximo aos dados;

  • novos produtos bancários;

  • expansão da base de clientes.

O consumo de capacidade cresce não porque a IA tornou um ADD mais pesado, mas porque a organização conseguiu colocar mais funcionalidades em operação.

A equação é esta:

MAIOR COMPREENSÃO DO LEGADO
             +
MENOR TEMPO DE MODERNIZAÇÃO
             +
MAIOR VELOCIDADE DE ENTREGA
             =
MAIS CARGAS EXECUTADAS

O aumento de MIPS pode ser consequência de crescimento do negócio, modernização bem-sucedida ou novas cargas.

Isso não significa necessariamente desperdício.

Também não significa automaticamente economia.

Significa que o ambiente está evoluindo.


Capítulo 9 — Um roteiro prático para o programador COBOL iniciante

O detetive abriu o caderno.

— Chega de teoria. Vamos ao procedimento operacional.

Passo 1 — Aprenda COBOL antes de delegá-lo à IA

Não use a inteligência artificial como substituta dos fundamentos.

Você precisa compreender:

  • divisões do programa;

  • níveis de dados;

  • cláusula PIC;

  • USAGE;

  • COMP, COMP-3 e binários;

  • MOVE;

  • COMPUTE;

  • IF;

  • EVALUATE;

  • PERFORM;

  • tabelas;

  • arquivos;

  • tratamento de erros;

  • chamadas;

  • SQL embutido;

  • conceitos de CICS.

Sem conhecimento básico, você não consegue avaliar a resposta recebida.

A IA pode afirmar algo incorreto com aparência impecável.

Passo 2 — Peça explicações pequenas

Em vez de entregar um programa inteiro com 30 mil linhas, selecione uma rotina.

Exemplo:

Explique o objetivo deste parágrafo COBOL.
Identifique entradas, saídas, condições e possíveis erros.
Não invente o significado comercial dos códigos.

Essa última frase é importante.

A ferramenta deve separar:

  • o que pode observar;

  • o que está inferindo;

  • o que não sabe.

Passo 3 — Confirme no código

Se a IA disser que um campo recebe dados de uma tabela Db2, procure:

EXEC SQL
   SELECT ...
END-EXEC

Se afirmar que um programa é chamado, procure:

CALL 'PROGRAMA'

ou uma chamada dinâmica:

CALL WS-NOME-PROGRAMA

A resposta da IA é uma pista.

O código é a cena do crime.

Passo 4 — Consulte especialistas

Converse com:

  • analista de negócios;

  • programador experiente;

  • DBA;

  • administrador CICS;

  • equipe de produção;

  • segurança;

  • operação;

  • suporte;

  • usuário-chave.

Um operador pode saber que determinado job não deve executar antes das 2 horas porque depende de um arquivo externo que chega por transmissão.

Essa regra talvez não esteja no COBOL.

Passo 5 — Gere documentação revisável

Produza um documento contendo:

Nome do programa
Objetivo
Entradas
Saídas
Arquivos
Tabelas
Chamadas
Regras identificadas
Pontos de dúvida
Riscos
Testes necessários

Marque claramente o que foi:

  • confirmado;

  • inferido;

  • informado por especialista;

  • ainda não investigado.

Passo 6 — Crie testes antes de alterar

Antes de modernizar, capture o comportamento atual.

Inclua:

  • caso normal;

  • valores mínimos;

  • valores máximos;

  • zero;

  • negativo;

  • campo vazio;

  • dado inválido;

  • data de virada de mês;

  • ano bissexto;

  • duplicidade;

  • falha de arquivo;

  • erro SQL;

  • rollback;

  • timeout.

O programa antigo pode conter comportamentos estranhos.

Alguns são defeitos.

Outros são regras do negócio que ninguém documentou.

Não corrija aquilo que você ainda não compreendeu.

Passo 7 — Faça mudanças incrementais

Evite a estratégia:

Converter tudo
Desligar tudo
Torcer

Prefira:

Descobrir
      ↓
Documentar
      ↓
Testar
      ↓
Isolar
      ↓
Refatorar
      ↓
Comparar
      ↓
Implantar gradualmente
      ↓
Monitorar

Em mainframe, coragem sem controle de mudança recebe outro nome:

incidente de produção.


Capítulo 10 — O que a IA não consegue fazer sozinha

Mesmo uma ferramenta avançada não possui automaticamente:

  • conhecimento completo do negócio;

  • responsabilidade jurídica;

  • autoridade para alterar produção;

  • compreensão de acordos informais;

  • conhecimento de exceções históricas;

  • garantia absoluta de equivalência;

  • contexto de todos os sistemas externos;

  • discernimento político da organização;

  • memória dos incidentes antigos;

  • responsabilidade pelo resultado.

Ela também pode:

  • interpretar incorretamente uma condição;

  • ignorar uma chamada dinâmica;

  • não perceber dados montados em tempo de execução;

  • confundir código morto com código raramente usado;

  • sugerir tipos inadequados;

  • gerar testes insuficientes;

  • explicar com confiança uma regra que não existe.

Portanto:

IA SEM ESPECIALISTA
       =
SUSPEITO INTERROGANDO A SI MESMO

A inteligência artificial deve atuar como assistente.

O profissional continua responsável pela decisão.


Capítulo 11 — Curiosidades encontradas no arquivo confidencial

Curiosidade 1 — COBOL não sobreviveu por acidente

Ele permanece porque milhões de regras empresariais foram codificadas, testadas e refinadas durante décadas.

Um programa pode parecer antigo, mas ter sobrevivido a:

  • mudanças de moeda;

  • fusões bancárias;

  • novas regulamentações;

  • crises econômicas;

  • mudanças tributárias;

  • milhões de execuções diárias.

Idade não é prova de qualidade.

Mas também não é prova de inutilidade.

Curiosidade 2 — “Legado” não significa “abandonado”

Legado é aquilo que foi herdado.

Uma aplicação pode ser antiga e continuar recebendo manutenção, integração, atualização de compilador, APIs e recursos de segurança.

O problema não é ser legado.

O problema é ser legado incompreendido.

Curiosidade 3 — A melhor modernização pode preservar o COBOL

Uma empresa pode:

  • manter o núcleo transacional em COBOL;

  • expor serviços por APIs;

  • integrar com aplicações móveis;

  • usar eventos e mensageria;

  • incorporar análises de IA;

  • modernizar a experiência do desenvolvedor;

  • automatizar testes e pipelines.

Modernização não exige obrigatoriamente remoção da linguagem.

Curiosidade 4 — Código morto pode estar apenas dormindo

Uma rotina pode não ser chamada há meses e ainda representar um processo anual, uma contingência ou um procedimento de recuperação.

Antes de removê-la, investigue:

  • scheduler;

  • JCL;

  • chamadas dinâmicas;

  • transações;

  • procedimentos manuais;

  • execução de fechamento anual;

  • planos de continuidade.

Como diria o detetive:

“Ausência de execução recente não é atestado de óbito.”


Easter egg — O comunicador de pulso

O jovem programador observou o relógio do detetive.

— Isso é uma espécie de smartphone?

— Smartphone? — respondeu ele. — Em 1946 eu já usava rádio de pulso nas histórias em quadrinhos.

O programador sorriu.

A ideia parecia futurista décadas antes de relógios inteligentes se tornarem produtos comuns.

O detetive então apontou para o terminal 3270:

— A tecnologia adora anunciar como novidade aquilo que alguém imaginou muito antes.

No canto da tela apareceu:

READY

Era o TSO aguardando o próximo comando.

Ou talvez fosse o próprio mainframe respondendo à notícia de sua morte.


Capítulo 12 — A sentença do caso

Depois de examinar programas, relatórios, declarações financeiras, diagramas e testes, o detetive reuniu todos na sala de operações.

— Já sei quem tentou matar o COBOL.

O programador arregalou os olhos.

— Foi a IA?

— Não.

— Java?

— Também não.

— A nuvem?

— Inocente neste caso.

O detetive escreveu no quadro:

CULPADO:

A SIMPLIFICAÇÃO EXCESSIVA

A narrativa de que uma IA converterá milhões de linhas COBOL e eliminará instantaneamente o mainframe ignora quase tudo o que torna uma aplicação corporativa complexa:

  • dados;

  • regras;

  • integrações;

  • segurança;

  • operação;

  • testes;

  • desempenho;

  • disponibilidade;

  • auditoria;

  • conhecimento humano;

  • risco empresarial.

A IA pode facilitar migrações? Sim.

Pode ajudar a transformar COBOL em Java? Sim.

Pode auxiliar na remoção de partes do legado? Sim.

Mas também pode:

  • documentar aplicações;

  • acelerar novos profissionais;

  • encontrar dependências;

  • preparar testes;

  • melhorar código COBOL;

  • isolar serviços;

  • aumentar a velocidade de entrega;

  • prolongar a vida econômica do IBM Z.

A tecnologia não possui uma única direção obrigatória.

Ela amplia a capacidade de quem a utiliza.


Conclusão — O COBOL não precisa de um coveiro; precisa de investigadores

A pergunta inicial era:

E se a inteligência artificial não fosse inimiga do COBOL, mas sua melhor aliada?

Depois de examinar as evidências, a resposta mais honesta é:

Ela pode ser uma grande aliada, desde que seja utilizada com conhecimento, governança, testes e responsabilidade humana.

O dado dos clientes que ampliaram MIPS três vezes mais rapidamente é uma declaração da própria IBM e não deve ser tratado como prova independente de causalidade. Ainda assim, ele oferece uma pista importante: aparentemente, pelo menos em parte do mercado, a adoção de IA para modernização não está sendo acompanhada por uma fuga imediata do mainframe.

Ao contrário, organizações capazes de compreender melhor suas aplicações podem encontrar novas razões para investir nelas.

O verdadeiro gargalo nunca foi simplesmente escrever COBOL.

O verdadeiro gargalo era entrar em um sistema com 30 ou 40 anos de história e responder com segurança:

O que este programa faz?

Quem o chama?

Quais dados ele altera?

Que regra empresarial está escondida aqui?

O que acontece se modificarmos esta condição?

Como provamos que nada foi quebrado?

Ferramentas como o watsonx Code Assistant for Z podem reduzir o tempo necessário para investigar essas perguntas. Elas não eliminam a necessidade do programador COBOL. Na realidade, tornam o profissional que conhece COBOL, negócio, testes, dados e arquitetura ainda mais valioso.

O iniciante não deve temer a IA.

Também não deve ajoelhar-se diante dela.

Deve aprender a interrogá-la.

Deve exigir evidências.

Deve comparar respostas com o código.

Deve verificar os dados.

Deve construir testes.

Deve conversar com especialistas.

Deve registrar as conclusões.

E, sobretudo, deve desconfiar de qualquer relatório que termine com:

RC=0000

sem explicar exatamente o que foi executado.

A chuva parou.

O detetive vestiu o sobretudo, ajustou o chapéu e caminhou em direção à porta.

Antes de partir, olhou uma última vez para o programador.

— Então o COBOL está salvo? — perguntou o jovem.

O detetive respondeu:

— Linguagens não são salvas por discursos. São salvas quando continuam resolvendo problemas.

No terminal, uma nova transação foi processada.

Depois outra.

Depois mais dez mil.

O relógio marcou duas da manhã.

O mainframe não estava morto.

Ele estava apenas começando o próximo batch.

quinta-feira, 22 de maio de 2025

O Scheduler da Curiosidade: IA, Backlogs e o Dia em que Tínhamos 30 Assuntos em Paralelo e Nenhum Queria Dar $HASP395

Bellacosa Mainframe e o scheduler da curiosidade 

☕ Um Café no Bellacosa Mainframe

O Scheduler da Curiosidade: IA, Backlogs e o Dia em que Tínhamos 30 Assuntos em Paralelo e Nenhum Queria Dar $HASP395

Por Vagner Bellacosa

Existe um problema novo acontecendo na minha mesa.

Não é falta de documentação.

Não é falta de livros.

Não é falta de cursos.

Não é falta de acesso à informação.

Também não é exatamente falta de tempo — embora os boletos continuem insistindo que o dia tenha apenas 24 horas.

O problema é quase o contrário.

Há conhecimento demais ao alcance das mãos.

E então chegou a Inteligência Artificial.

Agora existe uma criatura disponível praticamente a qualquer momento que aceita perguntas sobre COBOL, filosofia, economia, anime, história, mainframe, arqueologia, inteligência artificial, acidentes aéreos, linguística, segurança, psicologia, grafos, bancos, YAML, XML, Atari e aquela dúvida completamente absurda que apareceu às duas da manhã e que você jamais perguntaria numa reunião de trabalho.

Você pergunta.

Ela responde.

A resposta produz outra pergunta.

Essa produz três.

Uma delas parece muito mais interessante do que a pergunta original.

Você segue por ali.

Duas horas depois está lendo sobre uma tabuinha de argila babilônica de milhares de anos atrás e já não consegue explicar exatamente como uma conversa sobre COBOL terminou na Mesopotâmia.

Bem-vindo ao problema.

Ou talvez...

bem-vindo à solução.

Coloque café na xícara.

Hoje não vamos falar exatamente sobre COBOL.

Vamos falar sobre o programa mais complexo que provavelmente executaremos durante toda a nossa vida:

a nossa própria curiosidade.

E aparentemente o scheduler está tendo problemas.


$HASP100: JOB CURIOSIDADE ON READER

Outro dia olhei para minha lista de conversas fixadas no ChatGPT.

Ali estavam coisas como:

Anime Another Resumo
Memórias Vagnerianas
JSON no COBOL Mainframe
Manias Econômicas Históricas
Curso Lógica Programação
YAML para Programadores
Inuyasha Anime e Legado
Impacto de Conan no Anime
Análise de Erros XML
Homenagem ao Atari

Olhei aquilo e comecei a rir.

Não porque fossem assuntos ruins.

Justamente o contrário.

Todos eram interessantes.

Esse era o problema.

Cada conversa havia começado por alguma razão perfeitamente legítima. Algumas estavam virando artigos. Outras eram investigações técnicas. Algumas eram memórias. Outras tinham começado simplesmente porque alguma coisa despertara curiosidade.

Nenhuma havia realmente terminado.

E então percebi algo.

Minha lista de conversas estava começando a parecer:

SDSF STATUS DISPLAY

Só que em vez de JOBs havia ideias.

JOBNAME     STATUS
COBOLJSON   ACTIVE
YAML001     HELD
ATARI001    WAITING
INUYASHA    ACTIVE
MEMORIA     ACTIVE
ECONHIST    HELD
XMLERROR    ACTIVE
CONAN001    WAITING
LOGICA15    ACTIVE

E em algum lugar do sistema:

30 JOBS ACTIVE
47 JOBS WAITING
123 JOBS DISCOVERED

Nenhum querendo emitir:

$HASP395 JOB ENDED

Foi quando percebi que talvez tivéssemos inventado acidentalmente uma espécie de JES2 da curiosidade intelectual.

E o ChatGPT estava funcionando como uma mistura perigosa de READER, CONVERTER, EXECUTOR e operador da console.


A escola ensinou conhecimento como uma fila

Durante muito tempo fomos educados segundo uma estrutura predominantemente linear.

Capítulo 1.

Depois capítulo 2.

Depois capítulo 3.

Prova.

Próxima matéria.

A própria estrutura física dos livros reforçava isso.

Página 1 → página 2 → página 3.

Claro que sempre existiram notas de rodapé, referências e bibliografias. Mas havia um custo para abandonar a estrada principal.

Imagine estudar alguma coisa em 1985.

Você encontra uma referência interessante:

"Esse conceito deriva dos trabalhos de Fulano publicados em 1967."

Interessante.

Mas você não possui o livro de Fulano.

Talvez exista na biblioteca.

Talvez precise pedir emprestado.

Talvez nem esteja traduzido.

Então você faz uma anotação:

Pesquisar Fulano depois.

E continua lendo.

A escassez de informação produzia involuntariamente uma coisa extremamente valiosa:

foco.

Não porque as pessoas fossem necessariamente mais disciplinadas.

Mas porque perseguir cada ramificação era caro.

Hoje o custo marginal de abrir outra porta intelectual aproxima-se perigosamente de zero.

Estou lendo sobre COBOL.

Encontro "JSON GENERATE".

Pesquiso.

Descubro JSON PARSE.

Pergunto ao ChatGPT.

Aparece uma discussão sobre interoperabilidade.

Interoperabilidade lembra APIs.

APIs levam ao z/OS Connect.

z/OS Connect leva a REST.

REST leva a OpenAPI.

OpenAPI leva a YAML.

YAML lembra pipelines.

Pipelines levam a Jenkins.

Jenkins leva a DevOps.

DevOps leva a agentes de IA.

Agentes levam a sistemas autônomos.

Sistemas autônomos levam a governança.

Governança leva a acidentes.

Acidentes levam à aviação.

Aviação leva a Crew Resource Management.

CRM leva a psicologia organizacional.

Psicologia leva a vieses cognitivos.

E de repente...

onde está o JSON?

Ele continua lá.

Cinco níveis acima no stack trace da curiosidade.


Talvez estejamos pensando errado sobre conhecimento

Aqui aparece algo fascinante.

Talvez o problema seja esperar que conhecimento verdadeiro tenha estrutura linear.

Porque ele não tem.

Conhecimento parece muito mais um grafo.

Para quem passou recentemente pelo Neo4j, a analogia é irresistível.

Imagine:

(:Pessoa)-[:ESTUDA]->(:COBOL)

(:COBOL)-[:EXECUTA_EM]->(:Mainframe)

(:Mainframe)-[:UTILIZA]->(:zOS)

(:zOS)-[:POSSUI]->(:JES2)

(:JES2)-[:GERENCIA]->(:Jobs)

(:Jobs)-[:PODEM_FALHAR_COM]->(:ABEND)

(:ABEND)-[:EXIGE]->(:Diagnostico)

(:Diagnostico)-[:USA]->(:Raciocinio)

(:Raciocinio)-[:SOFRE_COM]->(:ViesCognitivo)

(:ViesCognitivo)-[:APARECE_EM]->(:Aviacao)

(:ViesCognitivo)-[:APARECE_EM]->(:Medicina)

(:ViesCognitivo)-[:APARECE_EM]->(:MercadoFinanceiro)

Agora faça uma pergunta aparentemente inocente:

"Como diagnosticar melhor um problema em produção?"

Podemos começar no COBOL e terminar estudando Sherlock Holmes, House, Patrick Jane, Kahneman, acidentes aéreos e medicina diagnóstica.

E isso não é necessariamente desvio.

Pode ser travessia do grafo.


O ChatGPT virou uma máquina de criar arestas

Essa talvez seja uma das transformações intelectuais mais interessantes provocadas pelos grandes modelos de linguagem.

Google tradicionalmente é extraordinário para encontrar nós.

Você pergunta:

IBM COBOL JSON GENERATE

e recebe documentos relacionados ao assunto.

Mas numa conversa podemos fazer algo diferente:

"Isso me lembrou o problema de comunicação entre pilotos em acidentes aéreos. Existe alguma relação conceitual?"

Agora estamos procurando uma aresta.

COBOL → operação → incidente → comunicação → aviação

Ou:

"Essa arquitetura de agentes lembra CICS?"

Outra aresta.

"O problema de memória de agentes lembra checkpoint/restart?"

Outra.

"Essa ideia econômica existia na Roma antiga?"

Outra.

"Esse comportamento de IA lembra alguma coisa da psicologia cognitiva?"

Outra.

É como se tivéssemos colocado diante do grafo uma máquina especializada em sugerir:

MATCH (ideia)-[r:?]->(outra_ideia)
RETURN outra_ideia

Só existe um pequeno problema.

O MATCH não termina.


O Rabbit Hole virou feature

Existe uma expressão inglesa maravilhosa:

rabbit hole.

A toca do coelho.

Alice vê o coelho, entra atrás dele e descobre que aquilo era apenas a entrada para um universo inteiro.

A Internet já havia industrializado rabbit holes.

A IA generativa colocou elevadores dentro deles.

Você pergunta:

"Por que isso acontece?"

Recebe resposta.

Pergunta:

"Mas de onde veio?"

Resposta.

"Existe precedente histórico?"

Resposta.

"Quem discordava?"

Resposta.

"Isso ainda é válido?"

Resposta.

"E se aplicarmos ao mainframe?"

Resposta.

"E ao mercado financeiro?"

Resposta.

"E aos agentes de IA?"

Resposta.

Às 03:17 da manhã:

"Então precisamos voltar aos babilônios."

Parabéns.

Você começou querendo entender um parâmetro do JCL.


A diferença entre distração e exploração

Mas precisamos tomar cuidado para não diagnosticar toda ramificação como déficit de atenção.

Há uma diferença enorme entre:

COBOL
 ↓
Instagram
 ↓
meme
 ↓
vídeo
 ↓
notícia
 ↓
WhatsApp
 ↓
esqueci o COBOL

e:

COBOL
 ↓
Mainframe
 ↓
Sistemas críticos
 ↓
Resiliência
 ↓
Falhas
 ↓
Fator humano
 ↓
Psicologia cognitiva
 ↓
Gestão de incidentes

O primeiro fluxo provavelmente representa distração.

O segundo pode representar exploração intelectual.

Existe coerência semântica.

O problema é que ambos consomem o mesmo recurso físico:

tempo.

Seu cérebro pode ter descoberto a conexão intelectual mais extraordinária da semana.

O relógio continuará dizendo:

03:42.


O verdadeiro recurso escasso mudou

Durante séculos o recurso escasso foi informação.

Hoje, para grande parte de nós, não é mais.

Temos Wikipedia.

Livros digitais.

Papers.

Vídeos.

Cursos.

Podcasts.

Blogs.

GitHub.

Documentação.

Fóruns.

Reddit.

Stack Overflow.

ChatGPT.

Outras IAs.

E bilhões de páginas indexadas.

O recurso escasso passou a ser:

atenção.

E logo atrás:

capacidade de seleção.

A pergunta intelectual moderna não é apenas:

"O que devo aprender?"

É também:

"O que deliberadamente não vou aprender agora?"

Essa segunda pergunta é muito mais cruel.

Porque dizer "não" para algo desinteressante é fácil.

O verdadeiro problema é dizer:

"Isso é fascinante. Mas ficará para depois."


Surge o backlog intelectual

É exatamente aí que nasce nossa lista.

JSON no COBOL
YAML
XML
Atari
Anime
Economia
Memórias
IA
Segurança
História

Ela não é necessariamente um cemitério de projetos abandonados.

Talvez seja algo mais interessante:

um buffer intelectual.

Uma área de spool.

A ideia chegou.

Foi registrada.

Ainda não existem recursos disponíveis para executá-la.

Então:

JOB STATUS = HELD

Isso é infinitamente melhor do que perder a ideia.

O problema começa quando confundimos:

HELD

com:

FAILED

Uma investigação estacionada não fracassou.

Ela apenas perdeu prioridade para outra.


Precisamos de WLM para a cabeça

Quem trabalha com mainframe imediatamente perceberá o próximo problema.

Se existem dezenas de workloads competindo pelos mesmos recursos, alguém precisa estabelecer prioridades.

No z/OS temos Workload Manager.

Na cabeça temos...

Bem...

Café.

Talvez seja justamente aí que precisamos melhorar.

Imagine um WLM intelectual:

SERVICE CLASS: PRODUCAO
-----------------------
Curso atual
Trabalho
Artigo com prazo
Aula da semana

SERVICE CLASS: ALTA
-------------------
Pesquisa diretamente relacionada
Projeto em andamento

SERVICE CLASS: DISCRETIONARY
----------------------------
Anime obscuro de 1987
História do Atari
Origem de palavra suméria
Tecnologia soviética esquecida

SERVICE CLASS: SYSOTHER
-----------------------
"Por que os romanos não inventaram..."

😂

O objetivo não seria matar SYSOTHER.

Aliás, algumas das descobertas mais deliciosas provavelmente estão lá.

O objetivo seria impedir SYSOTHER de consumir toda a capacidade enquanto PRODUCAO está atrasada.


A IA não eliminou a necessidade de disciplina

Esse é um ponto importante.

Existe uma fantasia contemporânea segundo a qual IA permitirá aprender tudo.

Não permitirá.

Pode reduzir brutalmente o custo de explicação.

Pode resumir.

Pode traduzir.

Pode comparar.

Pode produzir exemplos.

Pode adaptar a linguagem.

Pode ajudar a encontrar relações.

Pode responder perguntas imediatamente.

Mas existe uma coisa que ela ainda não consegue aumentar:

24 horas = 24 horas

Podemos aumentar nossa eficiência.

Não podemos aumentar indefinidamente nosso throughput humano.

E pior:

compreender continua custando tempo.

Ler uma explicação não significa incorporá-la.

Reconhecer um conceito não significa dominá-lo.

Assistir a uma demonstração não significa conseguir reproduzi-la.

Receber código funcionando não significa compreender sua arquitetura.

Esse talvez seja um dos perigos da aprendizagem com IA:

confundir velocidade de obtenção da resposta com velocidade de aquisição do conhecimento.

São coisas diferentes.

Muito diferentes.


Conhecimento não é download

Se conhecimento fosse simplesmente transferência de bytes, poderíamos fazer:

//LEARN EXEC PGM=UPLOAD
//SYSIN DD *
  COBOL
  NEO4J
  PYTHON
  QUANTUM
  JAPANESE
/*

Resultado:

IEC999I KNOWLEDGE SUCCESSFULLY INSTALLED

Infelizmente não funciona.

Aprendizagem exige reconstrução interna.

Você precisa errar.

Relacionar.

Esquecer.

Relembrar.

Aplicar.

Comparar.

Explicar para outra pessoa.

Encontrar contradições.

Reformular.

Voltar meses depois e perceber que aquilo que parecia óbvio não era.

A IA pode acompanhar todo esse processo.

Mas não pode simplesmente substituir o processo.


Talvez nossa aparente desorganização esconda alguma coisa valiosa

Aqui entra uma hipótese que me fascina.

E se parte dessas ramificações não for desperdício?

E se estivermos construindo uma espécie de Knowledge Graph pessoal?

Durante décadas de trabalho uma pessoa acumula experiências.

Banco.

Mainframe.

Incidentes.

Programação.

Gestão.

Pessoas.

Viagens.

Livros.

Filmes.

Histórias.

Tecnologias.

Fracassos.

Acertos.

Essas coisas ficam armazenadas como nós aparentemente desconectados.

Então surge uma conversa.

Um assunto ativa outro.

Uma memória conecta-se a um conceito novo.

Uma história profissional antiga encontra uma teoria publicada décadas depois.

De repente:

(:Experiencia1989)
      |
      | [:EXPLICA]
      v
(:Conceito2026)

A experiência sempre esteve lá.

Faltava a aresta.

Talvez uma das funções mais poderosas da IA para alguém que acumulou décadas de experiência não seja simplesmente ensinar fatos novos.

Talvez seja ajudar a indexar intelectualmente a própria vida.

Isso é enorme.


Curiosidade como algoritmo de busca

Uma pessoa curiosa executa continuamente algo parecido com:

while alive:
    observe()
    question()
    connect()
    investigate()
    update_model()

Só existe um pequeno bug:

while alive:

não possui END-IF.

E aparentemente tampouco possui MAX-DEPTH.

😂

Por isso precisamos talvez acrescentar:

IF DEPTH > ACCEPTABLE-LIMIT
   MOVE CURRENT-TOPIC TO BACKLOG
   PERFORM RETURN-TO-MAIN-QUEST
END-IF

Esse talvez seja o algoritmo intelectual necessário para a era da IA.

Não bloquear rabbit holes.

Controlar profundidade.


O conceito de estacionamento intelectual

Imagine que estamos estudando agentes de IA.

Durante a conversa surgem:

[ ] memória vetorial
[ ] MCP
[ ] sistemas multiagentes
[ ] segurança
[ ] prompt injection
[ ] teoria de jogos
[ ] swarm intelligence
[ ] governança
[ ] custos de inferência
[ ] mainframe integration

Não precisamos abrir dez frentes.

Podemos dizer:

CURRENT:
Agentes e memória

PARKED:
MCP
Segurança
Swarm
Governança
Mainframe integration

A curiosidade continua viva.

Mas o scheduler recupera o controle.

Essa simples mudança psicológica é poderosa porque reduz aquela sensação:

"Estou deixando algo importante para trás."

Não.

Você colocou no spool.


O perigo oposto: nunca terminar nada

Agora precisamos tomar a red pill.

Existe uma versão romântica da curiosidade que pode virar desculpa.

"Sou explorador."

"Tenho muitos interesses."

"Estou conectando conhecimentos."

Tudo verdadeiro.

Mas existe um teste brutal:

o que foi concluído?

Porque conhecimento também precisa produzir $HASP395.

Artigo publicado.

Programa funcionando.

Curso concluído.

Experimento documentado.

Livro lido.

Hipótese descartada.

Aula preparada.

Problema resolvido.

Sem isso podemos passar anos em:

$HASP373 JOB STARTED

sem jamais chegar a:

$HASP395 JOB ENDED

E então o backlog não é biblioteca.

É dívida.


Talvez terminar seja uma tecnologia

Essa é outra ideia que merece reflexão.

Somos treinados para começar.

Cursos vendem começos.

Tutoriais ensinam começos.

Plataformas recomendam novos começos.

Algoritmos apresentam novidades.

IA responde imediatamente à próxima curiosidade.

Pouquíssimos sistemas são economicamente incentivados a dizer:

"Não abra nada novo. Termine aquilo."

Porque novidade gera clique.

Descoberta gera dopamina.

Conclusão frequentemente exige a parte menos glamourosa:

revisar.

corrigir.

testar.

reescrever.

organizar.

publicar.

documentar.

É muito mais divertido descobrir outro rabbit hole.

Talvez finalização tenha se tornado uma competência intelectual própria.


O Scheduler da Curiosidade

Chegamos então ao nosso pequeno sistema operacional mental.

Eu o imaginaria assim:

                 ┌───────────────┐
                 │ CURIOSIDADE   │
                 └───────┬───────┘
                         │
                         ▼
                  NOVA PERGUNTA
                         │
               ┌─────────┴─────────┐
               │                   │
         RELEVANTE AGORA?          NÃO
               │                   │
              SIM                  ▼
               │               BACKLOG
               ▼
           EXECUTAR
               │
         ┌─────┴─────┐
         │           │
   NOVO RAMO?       NÃO
         │           │
        SIM          ▼
         │       CONCLUIR
         ▼           │
    REGISTRAR        ▼
         │       $HASP395
         │
         └──────► VOLTAR

Parece trivial.

Mas pense na diferença.

Não estamos dizendo:

"Pare de ser curioso."

Estamos dizendo:

"Faça scheduling da curiosidade."


E onde vamos parar?

Essa talvez seja a pergunta mais divertida.

Provavelmente em lugar nenhum.

E isso não é necessariamente ruim.

Porque conhecimento não possui tela final.

Não existe:

CONGRATULATIONS
YOU HAVE COMPLETED KNOWLEDGE
100%

Quanto mais aprendemos, maior parece o mapa.

É quase cruel.

Quando sabemos pouco, o mundo parece relativamente simples.

Quando aprendemos mais, começamos a enxergar as dependências.

Depois enxergamos as exceções.

Depois as controvérsias.

Depois a história.

Depois as escolas rivais.

Depois descobrimos que algumas certezas eram aproximações.

O mapa aumenta justamente porque aprendemos a enxergá-lo.

Talvez seja esse o paradoxo definitivo da curiosidade:

cada resposta aumenta o território das perguntas.


A IA tornou o universo intelectual navegável — não finito

Esse ponto é fundamental.

ChatGPT e outras ferramentas não transformaram conhecimento em algo que podemos terminar.

Transformaram conhecimento em algo que podemos percorrer com muito menos atrito.

Antes havia oceanos entre os continentes intelectuais.

Agora construímos pontes.

Isso muda completamente a viagem.

Mas não reduz o tamanho do planeta.

Talvez até faça o contrário.

Quando percebemos que COBOL pode conversar com IA, que mainframe pode conversar com cloud, que psicologia pode conversar com segurança, que história pode explicar tecnologia e que experiências de décadas atrás podem iluminar problemas atuais...

o mundo fica intelectualmente maior.

Não menor.


O profissional em T

Durante muito tempo falou-se no profissional em T.

Conhecimento amplo horizontalmente.

Especialização profunda verticalmente.

Talvez a IA esteja favorecendo outro formato.

Algo parecido com um grafo.

Você possui alguns nós extremamente profundos.

Mainframe.

COBOL.

Sistemas financeiros.

E centenas de conexões menos profundas:

        História
           |
Economia--Mainframe--IA
           |
      Segurança
       /      \
 Psicologia  Aviação
      |
  Gestão

O valor não está necessariamente em dominar todos esses campos.

Está também em conseguir perceber:

"Eu já vi esse padrão em outro lugar."

Essa capacidade é extraordinariamente poderosa.

Porque inovação muitas vezes nasce justamente da transferência de modelos entre domínios.


Easter egg: talvez o cérebro seja um mainframe ruim

Antes que algum neurocientista jogue café em mim:

é uma metáfora.

Mas divertida.

Temos memória.

Temos processamento.

Temos prioridades.

Temos interrupções.

Temos cache.

Temos processos esquecidos.

Temos informações que sabemos que estão armazenadas em algum lugar, mas cujo endereço aparentemente foi perdido.

Temos:

"Eu conheço essa pessoa..."

seguido de:

SEARCHING...
SEARCHING...
SEARCHING...

Três horas depois, tomando banho:

HIT!

😂

Temos também algo equivalente a storage leak:

uma música ruim de 1987 permanece perfeitamente armazenada enquanto esquecemos por que entramos na cozinha.

O hardware humano definitivamente possui algumas decisões arquitetônicas curiosas.


O grande desafio não será saber mais

Será governar o que queremos saber.

Isso talvez seja uma das grandes competências da próxima década.

Não apenas prompt engineering.

Não apenas saber perguntar.

Mas saber decidir:

qual pergunta merece continuação?

qual merece estacionamento?

qual merece profundidade?

qual merece abandono?

qual precisa virar projeto?

qual deve permanecer apenas como curiosidade?

Porque podemos perguntar praticamente indefinidamente.

Mas não podemos viver indefinidamente.

Existe aí uma dimensão profundamente humana que nenhuma otimização elimina.

Escolher aprender alguma coisa significa escolher não aprender outras naquele momento.

Escolher escrever um artigo significa deixar três esperando.

Escolher terminar um curso significa ignorar temporariamente cinco tecnologias novas.

Escolher profundidade significa renunciar momentaneamente à novidade.

Esse é o verdadeiro scheduler.


Blue Pill ou Red Pill?

A Blue Pill é confortável:

"Com IA finalmente conseguirei aprender tudo."

Não.

Provavelmente acontecerá exatamente o contrário.

A IA mostrará quanto existe para aprender.

A Red Pill é mais interessante:

"Nunca aprenderei tudo. Então preciso escolher melhor minhas viagens."

Isso muda completamente nossa relação com conhecimento.

Não precisamos conquistar todo o mapa.

Podemos explorá-lo.

Construir caminhos.

Registrar descobertas.

Voltar.

Conectar regiões.

E ocasionalmente colocar uma placa:

TODO:
RETORNAR AQUI

$HASP395: ou talvez não

Chegamos ao fim deste artigo falando sobre...

Deixe-me conferir.

Começamos com conversas abertas no ChatGPT.

Passamos por JES2.

Grafos.

Neo4j.

Rabbit holes.

Psicologia.

WLM.

Aprendizagem.

Gestão de atenção.

IA.

Knowledge Graph.

E terminamos discutindo finitude humana.

Nada mal para uma conversa que começou olhando uma barra lateral cheia de chats inacabados.

Talvez seja exatamente esse o ponto.

A curiosidade intelectual não é uma estrada.

É uma rede.

Cada pergunta é um nó.

Cada associação cria uma aresta.

Cada experiência antiga pode ganhar significado novo quando conectada a alguma coisa aprendida hoje.

ChatGPT não inventou esse comportamento.

Nós sempre fizemos isso.

A diferença é que agora existe uma ferramenta capaz de acompanhar nossa corrida pelo grafo quase na velocidade em que surgem as perguntas.

E isso é maravilhoso.

Também é perigoso.

Porque sempre haverá outra aresta.

Sempre haverá outro nó.

Sempre haverá:

"Só mais uma pergunta..."

O verdadeiro desafio intelectual da era da IA talvez não seja descobrir como começar uma investigação.

Isso ficou absurdamente fácil.

Será aprender quando continuar, quando estacionar e quando terminar.

Precisamos ser simultaneamente exploradores e operadores.

Curiosos e schedulers.

Alice e JES2.

Precisamos permitir:

$HASP373 CURIOSITY STARTED

Mas de vez em quando precisamos olhar para o backlog, escolher alguma coisa e exigir:

$HASP395 CURIOSITY ENDED

Mesmo sabendo que aquilo nunca terminou completamente.

Porque uma boa resposta deixa uma pergunta.

Uma boa pergunta encontra outra área.

Uma experiência encontra uma teoria.

Uma memória encontra significado.

Um artigo encontra outro artigo.

E talvez seja justamente por isso que continuamos estudando depois de décadas.

Não porque estejamos chegando ao fim.

Mas porque finalmente começamos a enxergar o tamanho do grafo.

Então onde vamos parar?

Não faço a menor ideia.

Provavelmente começaremos falando sobre o scheduler da curiosidade, alguém mencionará teoria dos grafos, daí surgirá a história dos sete graus de separação, que levará a redes sociais, que levará a algoritmos de recomendação, que levará a manipulação comportamental, que levará a Skinner, que levará a psicologia, que lembrará inteligência artificial...

...e daqui a pouco estaremos novamente discutindo COBOL.

Talvez exista uma explicação técnica para isso.

Ou talvez seja simplesmente:

//CURIOS EXEC PGM=LIFE
//PARM DD *
   MAXDEPTH=UNLIMITED
   CURIOSITY=YES
   COFFEE=STRONG
   RETURN=OPTIONAL
/*

IEFBR14 provavelmente não resolverá.

☕ Café terminado.

Artigo terminado.

JOB terminado.

Finalmente:

$HASP395 CURIOSITY ENDED

...

Espera.

Se conhecimento funciona como grafo, será que nosso backlog de conversas poderia ser automaticamente transformado em um grafo visual de interesses, mostrando quais assuntos deram origem a quais outros?

Droga.

$HASP100 NEWJOB ON READER

E lá vamos nós outra vez. ☕🖥️

sexta-feira, 6 de dezembro de 2024

MIPS, MSU e o Mistério da Conta que Cresce Mais Rápido que o Banco

 


☕ Um Café no Bellacosa Mainframe

MIPS, MSU e o Mistério da Conta que Cresce Mais Rápido que o Banco

Ou: como um programador COBOL iniciante descobre que um PERFORM inocente pode terminar numa reunião com o CFO

Se você está começando em COBOL, provavelmente alguém já lhe contou a versão resumida da história.

O mainframe é grande.

O mainframe é caro.

MIPS é alguma coisa relacionada a capacidade.

MSU é alguma coisa relacionada a cobrança.

E se você mexer num programa errado, algum senhor de barba grisalha aparecerá atrás de você com uma planilha impressa e uma expressão que significa:

— Filho… o que exatamente você colocou em produção ontem?

Essa versão não está completamente errada.

Mas está longe de contar a história inteira.

Porque existe um detalhe fascinante no universo IBM Z: uma linha de código pode ser tecnicamente correta, produzir exatamente o resultado esperado, passar nos testes, não gerar ABEND, não provocar S0C7, não derrubar CICS, não assustar RACF e ainda assim ser economicamente horrível.

E é aqui que nosso jovem gafanhoto COBOL entra no dojo.

Imagine o Sr. Miyagi diante de um terminal 3270.

Ele olha para você e diz:

— Bellacosa-san… programa bom não é programa que apenas funciona.

Você pergunta:

— Então o que é?

Ele aponta para o SMF.

— Programa bom trabalha certo, trabalha rápido e não põe fogo na fatura.

A aula começa.



🥋 1. Primeiro golpe: MIPS não é MSU

Antes de continuar, precisamos desmontar uma confusão muito comum.

MIPS e MSU aparecem frequentemente na mesma conversa, mas não são a mesma coisa.

MIPS significa, historicamente:

Millions of Instructions Per Second.

É uma forma tradicional de falar de capacidade computacional.

Só que em mainframe moderno isso precisa ser tratado com cuidado, porque uma “instrução” não é simplesmente uma moedinha universal que vale a mesma coisa em qualquer processador, geração ou workload.

Duas máquinas podem ter características diferentes.

Dois workloads podem exercitar partes diferentes do processador.

Uma aplicação matemática pesada se comporta de uma forma.

Um workload de transações CICS de outra.

Um batch COBOL gigante de outra.

Por isso, MIPS virou muito mais uma linguagem de capacidade e planejamento — e também, em muitos casos, uma unidade comercial usada por fornecedores de software — do que uma medida física absoluta.

MSU significa:

Million Service Units.

E aqui entramos diretamente no mundo de pricing e capacidade do software IBM Z.

A primeira regra do dojo é esta:

MIPS é normalmente uma conversa sobre capacidade. MSU pode ser uma conversa sobre capacidade, licenciamento e custo.

Mas cuidado.

Não saia por aí tentando converter:

1 MSU = 7,3 MIPS

como se estivesse convertendo quilômetros em milhas.

Não funciona assim.

Não existe uma conversão universal simples.

Se algum colega lhe entregar uma tabela mágica dizendo:

MSU × número secreto = MIPS

faça aquilo que todo programador COBOL experiente faz diante de uma planilha duvidosa:

olhe desconfiado.

Depois peça a fonte.



🧠 2. CPU também não é custo

Aqui vem a segunda rasteira.

O iniciante pensa:

“Se meu programa gastou 10% mais CPU, a empresa pagará 10% mais.”

Não necessariamente.

Você pode gastar mais CPU sem aumentar determinada parte do custo.

Pode gastar a mesma CPU e aumentar a conta.

Pode diminuir CPU e ter pouco impacto financeiro.

Pode simplesmente mudar o horário de execução e alterar completamente o efeito econômico.

Você acabou de conhecer uma das verdades mais importantes do mainframe:

Performance e custo são parentes, mas não são gêmeos.

Isso explica um fenômeno aparentemente absurdo.

Um banco pode crescer 8% em volume de negócio.

O consumo pode crescer 15%.

E a conta de software subir 30%.

O CFO olha para aquilo e pergunta:

— Quem roubou os outros 22%?

Nesse momento todos olham para o mainframe.

O mainframe olha para o teto.

O COBOL olha para o Db2.

O Db2 olha para o batch.

E o batch diz:

— Eu só estava seguindo o JCL.



⏰ 3. Conheça o monstro chamado R4HA

Agora o Sr. Miyagi pega quatro pedras e coloca sobre a mesa.

Cada pedra representa uma hora.

Ele diz:

— Quatro horas. Observe.

Em vários modelos tradicionais de subcapacity pricing existe um conceito muito importante:

Rolling Four-Hour Average, ou R4HA.

Em português informal:

média móvel de quatro horas.

A ideia é simples de entender.

Imagine o consumo:

08h — 70 MSU
09h — 80 MSU
10h — 85 MSU
11h — 90 MSU

Existe uma média para essa janela.

Depois:

09h — 80
10h — 85
11h — 90
12h — 95

Nova janela.

Depois:

10h — 85
11h — 90
12h — 95
13h — 110

E assim por diante.

A janela vai deslizando.

Daí o nome rolling.

Agora vem a parte importante.

Em determinados modelos tradicionais de cobrança, o pico relevante dessa média móvel pode influenciar a capacidade faturável.

E então acontece a tragédia clássica.

Durante o dia:

CICS            70
Db2             40
APIs            20
online geral    15

Tudo administrável.

Às 17h alguém dispara:

fechamento
relatório regulatório
batch contábil
extração de dados
reconciliação
backup lógico

Todos juntos.

Porque sempre foi assim.

Desde 1998.

Ninguém sabe exatamente por quê.

Mas existe um comentário no JCL:

//* NAO ALTERAR - PRODUCAO

E isso, no mainframe, às vezes tem o mesmo poder psicológico de uma placa escrita:

TUMBA DO FARAÓ — NÃO ABRIR.

O consumo dispara.

O banco não ficou três vezes maior.

O mundo não começou a fazer três vezes mais PIX.

Apenas vários workloads decidiram executar simultaneamente.

E aquela concentração pode produzir impacto econômico.

Esse é um dos motivos pelos quais scheduling pode ser tão importante quanto programação.



🎯 4. Primeira lição de ouro: deslocar não é otimizar

Imagine um batch que consome:

60 CPU seconds

Você executa às 17h.

Depois desloca para 02h.

Ele continua consumindo:

60 CPU seconds

Tecnicamente você não otimizou o código.

Não reduziu nenhuma instrução.

Não mexeu no COBOL.

Não mudou Db2.

Não alterou VSAM.

Mas pode ter melhorado a economia do ambiente dependendo do modelo de cobrança.

Isso é lindo porque destrói uma ideia muito comum:

otimização = mexer no programa.

Não.

Você pode otimizar:

  • código;

  • SQL;

  • scheduling;

  • arquitetura;

  • classificação de workload;

  • uso de processadores especializados;

  • política de capacidade;

  • configuração;

  • contrato.

Programador COBOL iniciante costuma enxergar apenas o programa.

Engenheiro mainframe experiente começa a enxergar o sistema inteiro.

Essa é a evolução.



🧾 5. Antes de mexer em qualquer coisa, descubra o contrato

Aqui está uma frase que deveria ser impressa em canecas:

Antes de otimizar o mainframe, descubra como o mainframe está sendo cobrado.

Porque não existe “a conta do mainframe”.

Existem várias contas.

Você pode ter:

hardware
software IBM
software ISV
storage
suporte
DR
licenças por capacidade
licenças por consumo
licenças por MIPS
modelos tradicionais
Tailored Fit Pricing
contratos especiais

E cada parte pode reagir de maneira diferente.

Imagine que você passe uma semana reduzindo um batch em 20%.

Excelente.

Mas descubra depois que aquele componente específico não altera o custo relevante do contrato atual.

Você melhorou performance.

Ótimo.

Só não economizou o que esperava.

Agora faça o contrário.

Você move um workload, altera uma janela de execução e reduz um pico economicamente relevante.

Nenhuma linha COBOL mudou.

E o financeiro percebe o efeito.

Bem-vindo ao mainframe.



🐍 6. O segundo monstro está dentro do seu COBOL

Agora finalmente chegamos à parte que interessa diretamente ao jovem programador.

Imagine este código:

PERFORM UNTIL WS-EOF = 'Y'
    READ ARQUIVO-CLIENTES
    ...
END-PERFORM.

Em 2001 o arquivo tinha:

500.000 registros

Em 2026:

40.000.000 registros

O código não piorou.

Ele é exatamente o mesmo.

Mas o mundo ao redor cresceu.

Isso ensina uma coisa importante:

Código velho pode ficar economicamente pior sem mudar uma única linha.

Não porque o código “apodrece”.

Porque os dados crescem.

Agora imagine coisa pior.

Dentro do loop existe outro acesso:

PERFORM PARA-CADA-CLIENTE
    PERFORM PROCURA-MOVIMENTO
END-PERFORM.

E PROCURA-MOVIMENTO faz uma busca ineficiente.

Talvez você tenha construído algo próximo de:

para cada cliente
    procurar em muitos registros

Com base pequena, aceitável.

Com base enorme, desastre.

Essa é a diferença entre:

funciona

e

escala.

Sr. Miyagi diria:

— Programa que vence teste com mil registros ainda não venceu produção com quarenta milhões.



🗄️ 7. Db2: onde uma linha aparentemente inocente pode virar um incêndio

Agora chegamos ao dojo subterrâneo.

SQL.

Um SQL pode continuar retornando exatamente os mesmos dados, mas consumir muito mais recursos.

Imagine:

SELECT NOME,
       SALDO
FROM CLIENTE
WHERE CPF = :WS-CPF

Ontem o Db2 usava um índice maravilhoso.

Hoje, por alguma mudança de estatística, cardinalidade, distribuição, acesso, manutenção ou desenho, o access path mudou.

Agora ele faz algo muito mais caro.

Uma consulta que custava pouco passa a custar cinco vezes mais CPU.

Uma execução?

Talvez ninguém perceba.

Agora multiplique por:

3.000.000 execuções por dia

A diferença aparece.

E muitas vezes ninguém associa a mudança imediatamente ao custo.

O programa entrou em produção em março.

A conta assustou em junho.

Finanças pergunta em agosto.

Desenvolvimento diz:

— Mas essa alteração foi meses atrás.

Exatamente.

O mainframe tem excelente memória.

Inclusive para as coisas que você gostaria que ele esquecesse.



📚 8. SMF: o livro-caixa secreto do reino

Se você é iniciante, guarde essa sigla:

SMF — System Management Facilities.

Não precisa decorar todos os record types agora.

Mas entenda o conceito.

O z/OS registra uma quantidade fantástica de informações sobre o que acontece no sistema.

Jobs.

Steps.

CPU.

I/O.

Workloads.

Subsistemas.

Consumo.

Horários.

Recursos.

Imagine o SMF como um gigantesco livro de bordo.

O CFO pergunta:

— Quem gastou?

Você não deveria responder:

— Produção.

Isso é o equivalente tecnológico de dizer:

— Foi alguém.

O objetivo é chegar perto disto:

LPAR PROD1
↓
service class X
↓
JOB ABC123
↓
STEP040
↓
programa COB987
↓
package Db2 XYZ
↓
SQL statement específico
↓
execuções aumentaram 300%

Agora temos investigação.

Não opinião.

O dashboard diz:

CPU aumentou.

O SMF ajuda a perguntar:

quem
quando
quanto
onde
por quê

Um mostra a fumaça.

O outro ajuda a encontrar o fósforo.


📈 9. RMF: enxergando a máquina respirando

Outro amigo importante:

RMF — Resource Measurement Facility.

Enquanto SMF oferece registros fundamentais para análise, RMF ajuda profundamente na observação e análise de recursos e performance do ambiente.

Pense assim:

SMF é o livro contábil.

RMF é o estetoscópio.

Você observa:

CPU
LPAR
workload
storage
I/O
delay
utilização

E começa a compreender se o sistema está saudável, pressionado, desequilibrado ou simplesmente executando o que deveria.




🧙 10. WLM: o mestre de cerimônias

Agora entra outro personagem:

WLM — Workload Manager.

O WLM é uma das ideias mais bonitas do z/OS.

Ele não pensa simplesmente:

“todo processo merece CPU igual.”

Ele trabalha com objetivos, importância e classes de serviço.

Porque no mundo real:

transação de cliente

não tem necessariamente a mesma prioridade que:

relatório interno

Um batch pode esperar.

Uma transação bancária olhando para um cliente na tela talvez não possa.

Então WLM ajuda o sistema a responder:

  • qual workload importa mais?

  • qual objetivo precisa ser atendido?

  • quem está atrasado?

  • como distribuir recursos?

  • existe pressão?

  • existem políticas de capacidade?

O iniciante vê CPU.

O WLM vê serviço.

Isso é uma mudança mental importantíssima.



🚀 11. zIIP: nem todo ciclo custa igual

Outro easter egg fundamental para quem está entrando no mundo IBM Z:

zIIP.

Certos tipos de trabalho podem ser elegíveis para execução em processadores especializados.

Isso muda completamente uma análise econômica.

Imagine:

Mês A
CP   = 70
zIIP = 40

Depois:

Mês B
CP   = 90
zIIP = 42

Você pergunta:

— Por que CP cresceu tanto?

Talvez o volume tenha mudado.

Talvez a arquitetura tenha mudado.

Talvez workload antes elegível esteja se comportando de outra maneira.

Talvez exista spillover.

Talvez haja configuração ou concorrência envolvida.

A pergunta correta deixa de ser:

“Quanto CPU usamos?”

e passa a ser:

“Onde o trabalho está sendo executado e qual é a implicação econômica disso?”

Isso é pensamento mainframe maduro.



📱 12. O aplicativo móvel que transformou uma transação em dez

Agora vem uma armadilha moderna.

O banco diz:

— Crescemos apenas 8% em clientes.

Então alguém conclui:

— CPU deveria crescer 8%.

Errado.

Imagine o aplicativo antigo.

Cliente abre o sistema.

Faz:

login
consulta saldo
logout

Três eventos relevantes.

Agora o aplicativo novo abre e dispara silenciosamente:

saldo
limite
PIX
cartões
investimentos
ofertas
notificações
score
extrato
financiamentos

O usuário fez uma ação.

O backend recebeu dez.

O negócio cresceu 8%.

A atividade computacional talvez tenha crescido 40%.

Isso é o que podemos chamar de:

amplificação digital.

A aplicação moderna fica mais bonita.

A UX fica mais rica.

O cliente vê tudo numa tela.

O mainframe recebe uma pequena chuva de APIs.

E depois alguém pergunta por que aumentou o consumo.



🧮 13. Pare de contar apenas transações

Outra lição.

Nem toda transação vale a mesma coisa.

Imagine:

consulta simples VSAM

e:

PIX com antifraude, auditoria, MQ, Db2 e logging

Ambas podem aparecer em algum relatório como:

1 transação

Mas economicamente são bichos diferentes.

Por isso uma organização madura começa a medir:

CPU por 1.000 transações
CPU por PIX
CPU por consulta
CPU por cliente ativo
Db2 CPU por chamada
batch CPU por conta

Essa ideia é poderosa porque aproxima TI do negócio.

Agora o CFO consegue entender.

Em vez de:

— Gastamos 140 MSU.

Você diz:

— O custo computacional por mil transações caiu 6%.

Isso é música para finanças.


💰 14. Nasce o Mainframe Unit Economics

Aqui está uma forma muito boa de pensar.

Crie indicadores como:

CPU segundos / 1.000 transações
MSU / milhão de operações
custo / cliente ativo
custo / PIX
custo / conta processada

Agora compare ao longo do tempo:

          JAN   FEV   MAR   ABR

Volume    100   103   106   108
CPU       100   104   116   130
CPU/txn   100   101   109   120

Veja março.

Alguma coisa aconteceu.

Pergunta Mr. Miyagi:

— O que mudou entre fevereiro e março?

Essa pergunta talvez encontre:

  • novo release;

  • novo relatório;

  • access path Db2 ruim;

  • logging excessivo;

  • API nova;

  • antifraude;

  • rotina duplicada;

  • batch movido;

  • volume inesperado;

  • reprocessamento.

Agora você tem um método investigativo.




📉 15. Custo médio é bom. Custo marginal é melhor.

Existe uma pergunta ainda mais sofisticada:

Quanto custa processar o próximo crescimento do negócio?

Matematicamente:

Δ custo
───────
Δ volume

Imagine:

negócio +10%
consumo +10%

Normal.

Agora:

negócio +10%
consumo +25%

Alerta.

Por outro lado:

negócio +10%
consumo +4%

Talvez você esteja ganhando escala.

Isso é lindo porque destrói outro mito:

“Conta maior significa sistema pior.”

Não.

Você pode gastar mais dinheiro e ficar mais eficiente.

Exemplo:

transações +20%
custo +5%

A conta aumentou.

Mas o custo por transação caiu brutalmente.

O CFO precisa enxergar isso.



⚖️ 16. Nem todo consumo é desperdício

Essa talvez seja uma das lições mais importantes deste artigo.

Existem pelo menos três categorias de crescimento.

1. Consumo necessário

O negócio cresceu.

Mais clientes.

Mais transações.

Mais contas.

Mais pagamentos.

Naturalmente o mainframe trabalha mais.

2. Consumo deliberado

Você adicionou:

antifraude
criptografia
auditoria
compliance
observabilidade
novas funcionalidades

Tudo isso custa CPU.

Mas gera valor.

3. Consumo evitável

Aqui mora o desperdício:

loop desnecessário
SQL ruim
leitura redundante
job duplicado
reprocessamento
programa órfão
batch mal agendado
consulta desnecessária

A missão não é:

reduzir CPU a qualquer custo.

A missão é:

reduzir consumo que não produz valor.

Porque você também pode destruir performance tentando economizar demais.

O sistema economiza 3%.

O cliente passa a esperar.

O SLA vai embora.

Parabéns.

Você economizou CPU e perdeu negócio.

Mr. Miyagi bate com a régua no terminal.

— Não economizar assim.



🧟 17. O job zumbi

Todo ambiente antigo tem algum.

Ninguém sabe quem criou.

Ninguém sabe quem usa.

Executa todo domingo às 03h17.

Nome:

BCHX8712

Comentário:

//* PROCESSO ESPECIAL

Especial para quem?

Mistério.

Tentaram desligar uma vez em 2007.

Alguém telefonou reclamando.

Desde então ninguém mexe.

Esse é o famoso:

job zumbi.

Ambientes mainframe grandes acumulam processos por décadas.

Migrações.

Fusões.

Mudanças regulatórias.

Aplicações substituídas.

Relatórios que ninguém lê.

Interfaces abandonadas.

Por isso um dos melhores projetos de otimização pode não envolver performance.

Pode envolver coragem.

Pergunta:

Quem consome a saída deste job?

Se ninguém souber, não desligue no impulso.

Investigue.

Rastreie.

Valide dependências.

Teste.

Desative controladamente.

Mainframe não gosta de heroísmo sem evidência.



🔍 18. Passo a passo para o jovem programador

Se você está começando agora, siga esta sequência.

Passo 1 — descubra o que seu programa realmente faz

Não leia apenas COBOL.

Entenda:

entrada
processamento
arquivos
Db2
VSAM
MQ
CICS
chamadas externas
saída

Passo 2 — descubra o volume

Pergunte:

Quantas execuções?
Quantos registros?
Quantas transações?
Qual crescimento mensal?

Passo 3 — observe o custo por unidade

Não pense apenas:

programa gastou 200 CPU seconds

Pergunte:

200 CPU seconds para quantos registros?

Passo 4 — procure regressões

Compare versões.

Antes:

10 ms por transação

Depois:

18 ms

Alguma coisa mudou.

Passo 5 — veja SQL

Se usa Db2:

qual access path?
qual frequência?
quantas rows examinadas?
quantas retornadas?

Passo 6 — olhe scheduling

Seu job executa quando?

Ele compete com quem?

Existe motivo?

Passo 7 — pergunte sobre WLM

Qual service class?

Qual prioridade?

Qual objetivo?

Passo 8 — correlacione com negócio

Essa aplicação atende:

PIX?
cartões?
clientes?
folha?
fraude?

Passo 9 — documente

Porque seis meses depois alguém perguntará.

E talvez esse alguém seja você.




🕵️ 19. Um exemplo completo

O CFO diz:

— Conta de mainframe subiu 30%.

O time investiga.

Descobre:

crescimento normal do negócio      +8%
novo antifraude                    +5%
nova observabilidade               +3%
SQL regressivo                     +7%
batch concentrado em pico          +4%
processo duplicado                 +2%
outros                             +1%
                                  ----
                                   30%

Agora a conversa mudou.

Dos 30%:

16% = crescimento + capacidade nova
13% = problemas investigáveis/otimizáveis
1%  = ainda desconhecido

Isso é infinitamente melhor do que:

— Mainframe ficou caro.

Agora temos ações.

SQL regressivo?

Corrigir.

Batch?

Reagendar se fizer sentido no modelo econômico.

Processo duplicado?

Eliminar.

Antifraude?

Manter.

Porque aquilo protege o banco.




🧩 20. Easter egg para quem chegou até aqui

Existe uma velha tendência em computação de tentar transformar tudo numa métrica simples.

MIPS.

CPU.

TPS.

latência.

custo.

Mas sistemas complexos odeiam métricas isoladas.

É quase um princípio de Douglas Adams aplicado ao datacenter:

A resposta pode ser 42. O problema é descobrir qual era a pergunta.

Se alguém chegar na reunião dizendo:

— O sistema usa 12.000 MIPS.

A pergunta correta é:

— E daí?

12.000 MIPS pode ser excelente.

Pode ser horrível.

Pode ser barato.

Pode ser caro.

Pode estar processando milhões de transações com eficiência fantástica.

Ou pode estar queimando CPU lendo o mesmo arquivo quinze vezes.

A métrica sem contexto é apenas um número muito bem vestido.



🥋 21. A última lição do dojo

O jovem programador começa querendo aprender:

MOVE
PERFORM
IF
EVALUATE
READ
WRITE
CALL

Depois aprende:

JCL
VSAM
Db2
CICS

Depois entende:

SMF
RMF
WLM
R4HA
zIIP
pricing
capacity

E então acontece uma mudança interessante.

Ele deixa de pensar:

“Meu programa funciona?”

E começa a perguntar:

“Meu programa funciona bem dentro do sistema?”

Depois:

“Meu sistema usa recursos de maneira eficiente?”

E finalmente:

“O custo computacional produzido por esse workload faz sentido para o negócio?”

Nesse ponto você deixou de ser apenas programador COBOL.

Começou a pensar como engenheiro de plataforma.



☕ Epílogo — O CFO, o COBOL e a conta de luz

Voltemos à primeira cena.

Sala de reunião.

CFO na ponta da mesa.

Gráfico na tela.

Ele pergunta:

— Por que o custo do mainframe subiu 30% se o negócio cresceu 8%?

Silêncio.

Antigamente alguém responderia:

— Houve aumento de capacidade.

Hoje uma equipe madura deveria responder:

— Dos 30 pontos, oito correspondem ao crescimento do negócio. Cinco vieram do antifraude novo. Três da observabilidade. Sete são uma regressão Db2 já identificada. Quatro vieram de concentração de workloads numa janela economicamente desfavorável. Dois correspondem a processos redundantes em eliminação. Um ainda estamos investigando.

Agora o CFO entende.

E o mais importante:

confia.

Porque ninguém está defendendo mainframe com religião.

Está defendendo com dados.

Essa é talvez a grande diferença entre o velho discurso:

“Mainframe é caro, mas confiável.”

e o discurso moderno:

“Eu sei exatamente quanto custa, quem consome, por que consome e o que recebemos em troca.”

No fundo, MIPS e MSU não são apenas unidades técnicas.

São pistas.

SMF é a cena do crime.

RMF é o perito.

WLM organiza o trânsito.

Db2 às vezes é o suspeito.

O batch jura inocência.

O COBOL diz que só cumpriu ordens.

O CFO quer saber quem vai pagar.

E em algum canto escuro do datacenter existe um job de 1997 executando toda terça-feira às 02h13 porque alguém escreveu no JCL:

//* NAO REMOVER

Ninguém sabe quem.

Ninguém sabe por quê.

Mas ele continua lá.

Consumindo CPU.

Silenciosamente.

À espera de um jovem gafanhoto suficientemente curioso para perguntar:

— Mestre… isto ainda serve para alguma coisa?

E o Sr. Miyagi do mainframe sorri.

Porque finalmente você fez a pergunta certa.



https://eljefemidnightlunch.blogspot.com/2026/02/o-caso-dos-mips-que-cresceram-tres.html

https://eljefemidnightlunch.blogspot.com/2026/08/o-leilao-reverso-do-conhecimento-quando.html

https://eljefemidnightlunch.blogspot.com/2026/05/o-segredo-sujo-da-performance-no.html

https://eljefemidnightlunch.blogspot.com/2026/05/o-mainframe-nao-esta-lento-seu-sql-e.html

https://eljefemidnightlunch.blogspot.com/2026/03/bellacosa-mainframe-simulator-mainframe.html

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