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

sábado, 12 de setembro de 2026

👄 COBOL Horror Picture Show — Frank-N-Furter e a Estranha Arte de Modernizar sem Matar a Criatura

 

Bellacosa Mainframe e a modernização do cobol

☕ Um Café no Bellacosa Mainframe

👄 COBOL Horror Picture Show — Frank-N-Furter e a Estranha Arte de Modernizar sem Matar a Criatura

“Don’t dream it. Be it.” — e, se estiver em produção há quarenta anos, talvez seja melhor descobrir primeiro todas as dependências antes de tentar transformá-lo.

Há alguma coisa deliciosamente apropriada em colocar Frank-N-Furter, de The Rocky Horror Picture Show, diante de uma arquitetura de modernização COBOL.

Pense na cena.

No centro do laboratório existe uma aplicação COBOL.

Ela é antiga.

Muito antiga.

Há décadas recebe transações, abre arquivos, atualiza bancos de dados, processa lotes durante a madrugada e alimenta sistemas que provavelmente nem existiam quando sua primeira versão foi compilada.

Em volta dela aparecem engenheiros carregando Git, Jenkins, Terraform, Ansible, AWS EC2, RDS, Secrets Manager e CloudWatch.

Luzes piscam.

Pipelines começam a executar.

Playbooks descem do Git.

EC2s surgem.

O banco ganha vida.

E alguém grita:

“IT'S ALIVE!”

Calma.

Frank-N-Furter ficaria encantado.

Eu ficaria procurando o JCL.

Porque existe uma diferença monumental entre fazer um programa COBOL executar em outro lugar e modernizar o sistema empresarial do qual aquele programa faz parte.

E é justamente essa diferença que vamos explorar.

Bem-vindo ao laboratório.



🎭 1. Antes de tudo: conheça o Dr. Frank-N-Furter

The Rocky Horror Picture Show nasceu como adaptação cinematográfica do musical The Rocky Horror Show, criado por Richard O'Brien, e chegou aos cinemas em 1975.

No centro daquela insanidade musical está o Dr. Frank-N-Furter, interpretado por Tim Curry.

Cientista.

Showman.

Manipulador.

Extravagante.

E, sobretudo, criador.

Frank não quer simplesmente estudar aquilo que existe.

Ele quer construir sua própria criatura.

Rocky nasce dentro do laboratório como materialização dessa ambição.

E é exatamente por isso que Frank é nosso tutor perfeito para esta conversa.

Modernização de sistemas também pode sofrer da síndrome de Frank-N-Furter:

ficamos tão fascinados com nossa capacidade de construir alguma coisa nova que esquecemos de perguntar se entendemos completamente aquilo que estamos substituindo.



⚡ 2. Há uma criatura COBOL sobre a mesa

Nossa arquitetura começa com algo aparentemente simples:

COBOL
   +
AWS EC2
   +
AWS RDS
   +
Ansible
   +
Terraform
   +
CI/CD

A proposta é elegante.

Temos ambientes:

DEV
 ↓
SIT
 ↓
UAT
 ↓
PRE-PROD
 ↓
PROD

Terraform provisiona infraestrutura.

Ansible configura máquinas e instala o ambiente necessário.

O pipeline controla o processo.

RDS fornece banco de dados gerenciado.

Git preserva código e configuração.

CloudWatch observa o ambiente.

Excelente.

Mas Frank-N-Furter aproxima-se da mesa, levanta o lençol e pergunta:

“Isso é realmente tudo que existe dentro da criatura?”

Não.

Quase nunca.



🧟 3. COBOL não é o monstro

Esta talvez seja a primeira grande inversão que precisamos fazer.

Quando alguém anuncia:

“Temos uma aplicação COBOL de quarenta anos.”

muita gente imediatamente imagina que encontrou o problema.

Não encontrou.

Encontrou uma linguagem.

O problema real pode estar em tudo aquilo que cresceu ao redor dela:

                COBOL
                  │
       ┌──────────┼──────────┐
       │          │          │
      CICS       IMS        Db2
       │          │          │
      VSAM       MQ        Stored
       │                   Procedures
       │
      JCL
       │
   Scheduler
       │
 GDG / datasets

Depois aparecem:

SORT
IDCAMS
REXX
PROCs
copybooks
utilities
FTP/SFTP
APIs
arquivos externos
interfaces
sistemas parceiros

Então alguém encontra um programa:

CALL 'XPTO123'

Ótimo.

Onde está XPTO123?

Ninguém sabe.

Até que aquele senhor sentado no fundo da sala fala:

“Ah... isso chama uma rotina que o Pereira escreveu em 1997.”

Onde está Pereira?

Aposentado.

Documentação?

Não existe.

Código?

Está numa load library.

Bem-vindo ao castelo.


🔬 4. “I can make you a man” — recompilar não significa modernizar

Imagine que conseguimos pegar determinado programa COBOL e compilá-lo para execução em Linux numa instância EC2.

Fantástico.

COBOL/zOS
    │
    ▼
COBOL/Linux
    │
    ▼
AWS EC2

A aplicação executa.

Então:

“IT'S ALIVE!”

Sim.

Mas cuidado.

Fizemos replatforming.

Talvez isso seja exatamente aquilo que o projeto necessita. Não há absolutamente nada de errado com replatforming.

O erro está em chamar qualquer mudança de plataforma de transformação completa.

A lógica pode continuar praticamente igual.

O código pode continuar COBOL.

O que mudou foi o ambiente no qual ele vive.

É como Rocky.

Frank criou um homem.

Mas criar um corpo funcionando não resolveu automaticamente todos os problemas do castelo.


🏗️ 5. Terraform constrói o laboratório

Vamos separar responsabilidades.

Terraform pode assumir a infraestrutura:

Terraform
    │
    ├── VPC
    ├── Subnets
    ├── Security Groups
    ├── EC2
    ├── IAM
    ├── RDS
    └── outros recursos

Pense nele como quem prepara o laboratório.

Mesa instalada.

Eletricidade ligada.

Tanque montado.

Cabos conectados.

Máquinas posicionadas.

Mas Terraform não deveria necessariamente decidir cada detalhe de configuração da criatura.

Para isso entra outro personagem.


🧰 6. Ansible entra usando salto alto

Ansible entra no laboratório dizendo:

“Deixem a configuração comigo.”

E começa.

EC2
 ↓
pacotes do sistema operacional
 ↓
COBOL compiler/runtime
 ↓
environment variables
 ↓
aplicação
 ↓
configuração
 ↓
database connectivity
 ↓
services
 ↓
health checks

É aqui que a arquitetura original fica realmente interessante.

Não precisamos ter um processo artesanal para DEV, outro para SIT, outro para UAT e um ritual secreto conhecido apenas por dois operadores para PRE-PROD.

Temos automação reutilizável.

Algo conceitualmente assim:

             ANSIBLE ROLE
                  │
       ┌──────────┼──────────┐
       │          │          │
      DEV        SIT        UAT
                              │
                              ▼
                          PRE-PROD

A receita permanece.

Os ingredientes variáveis são separados.


🧓 7. O programador COBOL olha para group_vars e começa a rir

Aqui temos uma das minhas partes favoritas.

A turma DevOps explica:

“Nós separamos a lógica da automação dos parâmetros específicos do ambiente.”

O programador COBOL responde:

“Parâmetros?”

Sim.

DEV pode ter:

DB = APP_DEV
PORT = 1521
ENDPOINT = dev-database

SIT:

DB = APP_SIT
PORT = 1521
ENDPOINT = sit-database

UAT:

DB = APP_UAT
PORT = 1521
ENDPOINT = uat-database

O playbook continua fundamentalmente o mesmo.

Para alguém vindo do mainframe, isso não deveria parecer ficção científica.

Nós passamos décadas trabalhando com conceitos semelhantes através de:

JCL
PROCs
symbolic parameters
PARMLIB
SYSIN
DD statements

Mudam as ferramentas.

A ideia de externalizar configuração é muito mais antiga que os slides modernos que a apresentam.

Frank-N-Furter provavelmente acrescentaria glitter.


👄 8. “Don’t dream it. Be it.” — Infrastructure as Code

Aqui encontramos uma mudança genuinamente poderosa.

Durante décadas tivemos infraestrutura e configuração documentadas mais ou menos assim:

“Instalar pacote X, editar arquivo Y, trocar parâmetro Z, reiniciar serviço e telefonar para Carlos se não funcionar.”

Carlos sai da empresa.

Fim da documentação.

Infrastructure as Code transforma parte desse conhecimento operacional em algo executável.

CONHECIMENTO
     ↓
    CODE
     ↓
Version Control
     ↓
Automation
     ↓
Environment

Isso é importante.

Código pode ser:

revisado, versionado, comparado, testado, auditado e reproduzido.

O conhecimento deixa de existir exclusivamente na memória do operador.


🧪 9. DEV → SIT → UAT → PRE-PROD

Agora Frank conduz nossa criatura pelos diferentes aposentos do castelo.

DEV

Aqui desenvolvemos e realizamos os primeiros testes.

SOURCE
  ↓
BUILD
  ↓
TEST
  ↓
DEPLOY

SIT

System Integration Testing.

Aqui descobrimos uma verdade universal da informática:

Tudo funciona perfeitamente até precisar conversar com outra coisa.

Banco.

APIs.

Filas.

Serviços.

Arquivos.

Autenticação.

Sistemas externos.

UAT

User Acceptance Testing.

Agora a pergunta deixa de ser apenas:

“Funciona?”

e torna-se:

“Isso faz aquilo que o negócio realmente precisa?”

Diferença enorme.

PRE-PROD

Aqui chegamos ao ensaio geral.

E PRE-PROD deveria ser assustadoramente parecido com produção.


🏰 10. PRE-PROD precisa ser o castelo quase completo

Um PRE-PROD simplificado demais produz falsa segurança.

Precisamos considerar:

OS version
runtime version
COBOL compiler/runtime
database version
patches
CPU architecture
memory
network
TLS
IAM
filesystem
locale
encoding
timezone
batch
integrations
security policies

Quanto mais diferente de PROD, mais perguntas surgem.

Imagine:

UAT
COBOL Runtime 8.0

PROD
COBOL Runtime 7.4

Funcionou no UAT.

Que maravilhoso.

Mas você não testou produção.

Testou outra coisa.


📦 11. Está faltando um personagem importante: o artefato

Aqui eu faria uma alteração importante na arquitetura.

Não gosto da ideia de recompilar arbitrariamente a aplicação em cada ambiente.

Prefiro:

          SOURCE
             │
             ▼
           BUILD
             │
             ▼
            TEST
             │
             ▼
      ARTIFACT REPOSITORY
             │
     ┌───────┼─────────┐
     ▼       ▼         ▼
    DEV     SIT       UAT
                       │
                       ▼
                   PRE-PROD
                       │
                       ▼
                     PROD

Isso nos leva a um princípio extremamente poderoso:

Build once, deploy many.

Produzimos uma criatura.

Depois submetemos aquela mesma criatura aos testes.

Não fazemos Rocky 1 para DEV, Rocky 2 para SIT, Rocky 3 para UAT e Rocky 4 para produção esperando que todos sejam geneticamente idênticos.


🕵️ 12. A pergunta do auditor

Imagine uma mudança chegando a produção.

O auditor pergunta:

“Esse binário é exatamente aquele homologado?”

Se cada ambiente recompila:

SOURCE
 ↓
DEV BUILD

SOURCE
 ↓
SIT BUILD

SOURCE
 ↓
UAT BUILD

SOURCE
 ↓
PROD BUILD

temos quatro processos de construção.

Mesmo que tudo pareça igual, aumentamos nossa superfície de dúvida.

Com artefato imutável:

SOURCE
 ↓
BUILD
 ↓
ARTIFACT 7.3.17
 ↓
DEV
 ↓
SIT
 ↓
UAT
 ↓
PRE-PROD
 ↓
PROD

agora existe uma cadeia muito mais clara.


🔐 13. Sweet Transvestite não significa senha escrita no YAML

Chegamos aos secrets.

Nunca faça:

database_password: "senha_supersecreta123"

e depois:

git commit

Parabéns.

Você acaba de transformar seu Git em museu arqueológico de credenciais.

A arquitetura corretamente menciona mecanismos como Ansible Vault e AWS Secrets Manager.

O princípio é:

CODE ≠ SECRET

Idealmente:

CI/CD
   │
   ▼
IAM / temporary authorization
   │
   ▼
Secrets Manager
   │
   ▼
Runtime

O segredo aparece apenas onde e quando precisa aparecer.


🧛 14. Privilégio mínimo: nem Frank deveria ter acesso a tudo

Outro princípio:

Developer ≠ Production Admin
Application ≠ Database Admin
Pipeline ≠ Unlimited AWS Administrator

Cada componente recebe apenas aquilo de que necessita.

Isso é least privilege.

Se determinado processo precisa consultar um segredo, não existe razão automática para permitir que consulte todos.

Se uma aplicação precisa acessar determinado banco, não significa que deva possuir poder administrativo sobre ele.

É o equivalente moderno de algo que o pessoal RACF conhece muito bem:

Quem é você e por que exatamente precisa acessar isso?


🗄️ 15. RDS parece simples até começarmos a falar de Db2

A imagem permite Oracle/PostgreSQL como exemplos.

Tudo bem.

Mas um cenário vindo de mainframe pode envolver:

COBOL
  +
Db2 for z/OS

E alguém inevitavelmente pensa:

Db2 → Db2

Então deve ser simples.

Ah, meu jovem Brad...

Não necessariamente.

Db2 for z/OS
      ≠
Db2 LUW
      ≠
RDS for Db2

Existe parentesco tecnológico.

Não existe identidade operacional perfeita.

Precisamos investigar SQL utilizado, stored procedures, utilities, comportamento transacional, autorização, integração e características específicas da plataforma.

O banco pode carregar tanta arqueologia quanto o COBOL.


🗃️ 16. E o VSAM?

Agora Frank encontra um arquivo VSAM no porão.

Silêncio.

Se a aplicação original utiliza:

KSDS
ESDS
RRDS

precisamos responder:

Para onde esses dados vão?

RDS?

Arquivos?

Outro datastore?

Mantemos comportamento equivalente?

E principalmente:

a aplicação depende semanticamente da organização original?

Não basta exportar registros e dizer:

“Migrei.”

Dados possuem comportamento.

Chaves.

Ordenação.

Concorrência.

Locking.

Integridade.

Performance.

Tudo isso importa.


📜 17. E o JCL?

Aqui está uma das grandes vítimas dos diagramas bonitos de modernização.

Pegamos o COBOL.

Migramos.

E esquecemos que às 02:00 existe isto:

JOB A
 ↓
JOB B
 ↓
JOB C ─── JOB D
   │
   ▼
 JOB E
   │
   ▼
 JOB F

Existem dependências.

Calendários.

Arquivos.

Condições.

Return codes.

Restart.

Checkpoints.

SLA.

Janelas de processamento.

O JCL talvez desapareça.

A necessidade que ele implementava não desaparece.

Alguma outra coisa precisará orquestrar aquilo.


⏰ 18. O batch não quer saber que agora você é cloud

Imagine um processamento que precisa terminar até 06:00.

No mainframe:

23:00 START
...
05:31 END

Migramos para AWS.

Agora:

23:00 START
...
06:47 END

Tecnicamente funciona.

Funcionalmente funciona.

Os resultados estão corretos.

E mesmo assim:

A MIGRAÇÃO FALHOU.

Porque o negócio precisava dos dados às 06:00.

Essa é uma lição gigantesca.

Compatibilidade funcional não é suficiente.

Precisamos de compatibilidade operacional.


📊 19. CloudWatch não deveria ficar decorando o canto do desenho

Observabilidade precisa atravessar toda a solução.

Não basta:

EC2 = UP
RDS = UP

Enquanto:

Pedidos processados = ZERO

Infraestrutura saudável não significa aplicação saudável.

Precisamos enxergar:

CPU
memory
disk
network
database latency
connections
locks
errors
transaction rate
response time
batch duration
business transactions

E aqui o veterano do mainframe reconhece novamente uma velha ideia.

O importante não é saber apenas:

“A máquina está ligada?”

O importante é:

“O workload está entregando aquilo que deveria?”


💥 20. PRE-PROD também precisa morrer

Frank provavelmente aprovaria esta parte.

Testamos:

DATABASE ONLINE

Excelente.

Agora desligue o banco.

Testamos:

NETWORK OK

Excelente.

Agora introduza timeout.

Testamos:

DISK SPACE OK

Encha o disco.

Testamos:

PASSWORD VALID

Revogue a credencial.

Queremos descobrir:

database unavailable
network failure
bad credentials
timeout
disk full
process killed
duplicate transaction
corrupted input
rollback failure
partial deployment

Porque produção descobrirá essas condições por você.

E produção não agenda laboratório.


🔥 21. O health check mais importante talvez seja o ABEND

Um health check dizendo:

HTTP 200

é agradável.

Mas para uma aplicação empresarial eu quero saber:

Aplicação iniciou?
Banco conecta?
Fila responde?
Transação funciona?
Arquivo abre?
Batch executa?
Rollback funciona?
Restart funciona?
Dados permanecem consistentes?

Um sistema não é saudável porque existe um processo no ps.

Ele é saudável quando consegue realizar sua função.


🔄 22. Rollback precisa entrar no espetáculo

Deployment sem rollback testado é fé.

O pipeline deveria conhecer algo como:

VERSION 8.4
    │
    ▼
DEPLOY
    │
    ├── SUCCESS → continue
    │
    └── FAILURE
            │
            ▼
        VERSION 8.3
            │
            ▼
        VALIDATION

Mas existe uma complicação.

Rollback de executável é relativamente fácil.

Rollback de banco pode não ser.

Se versão 8.4 alterou schema e começou a gravar dados novos, voltar simplesmente o executável para 8.3 talvez não resolva.

Portanto deployment strategy precisa conversar com database migration strategy.


🧬 23. A criatura tem memória

Esse é outro erro frequente.

Tratamos aplicação como código.

Mas aplicações empresariais são:

CODE
 +
DATA
 +
STATE
 +
INTEGRATIONS
 +
HISTORY

Migrar código é apenas uma parte.

Migrar décadas de dados mantendo integridade pode ser o verdadeiro projeto.

Frank consegue construir outro corpo.

Transferir quarenta anos de memória para ele é outra história.


🕸️ 24. Discovery deveria aparecer antes de Terraform

Se eu redesenhasse completamente a figura, colocaria no início:

             DISCOVERY
                 │
      ┌──────────┼───────────┐
      │          │           │
    COBOL       JCL         DATA
      │          │           │
     CICS    Scheduler     VSAM
      │                      │
     IMS                    Db2
      │
      MQ
      │
 External Systems

Depois:

Dependency Mapping
       ↓
Workload Classification
       ↓
Modernization Strategy
       ↓
Architecture
       ↓
Terraform / Ansible / CI/CD

Essa ordem é fundamental.

Não escolha a ferramenta antes de compreender o problema.


🧭 25. Nem tudo precisa sair do mainframe

Aqui está outra heresia contra certas apresentações de modernização.

Podemos terminar com:

                   ENTERPRISE
                       │
           ┌───────────┴───────────┐
           │                       │
         IBM Z                    AWS
           │                       │
      COBOL/CICS                 Services
           │                       │
          Db2       ← API/MQ →     RDS
           │                       │
        Batch                    Analytics

Isso também é modernização.

Talvez seja uma modernização melhor.

Mainframe não precisa desaparecer para AWS existir.

AWS não precisa substituir IBM Z para gerar valor.

O objetivo deveria ser colocar cada workload onde faz sentido técnico, econômico e operacional.


🏎️ 26. Performance: “funciona” é uma palavra perigosíssima

Suponha que uma transação CICS respondesse em:

40 ms

A nova aplicação responde em:

480 ms

Funciona?

Sim.

É equivalente?

Talvez não.

Agora multiplique pela quantidade de transações.

Adicione network latency.

Database round trips.

APIs.

TLS.

Logs.

Tracing.

De repente aquela diferença aparentemente pequena torna-se enorme.

Modernização precisa de baseline antes da migração.

Sem baseline você termina dizendo:

“Parece mais lento.”

Isso não é engenharia.


💰 27. E existe FinOps

Outro easter egg escondido sob a mesa do laboratório.

No mainframe alguém pode reclamar:

“MIPS são caros!”

Migramos para cloud.

Então descobrimos:

EC2
RDS
storage
IOPS
snapshots
data transfer
NAT
logs
monitoring
backup
licenses
support

e percebemos que cloud não significa:

barato.

Significa principalmente:

modelo econômico diferente.

Se não medirmos consumo, uma arquitetura elasticamente maravilhosa pode gerar uma conta elasticamente maravilhosa também.


👄 28. “Don’t dream it. Be it.”

Chegamos finalmente à grande lição de Frank-N-Furter.

Não devemos ter medo de transformar sistemas.

COBOL pode viver em novas plataformas.

Pode participar de pipelines modernos.

Pode trabalhar com Git.

Pode ser automatizado com Ansible.

Pode ter infraestrutura criada com Terraform.

Pode conversar com cloud.

Pode expor APIs.

Pode entrar num processo CI/CD.

Não existe qualquer contradição nisso.

O problema começa quando confundimos modernização com maquiagem tecnológica.

Trocar:

z/OS

por:

Linux

não moderniza automaticamente arquitetura.

Trocar:

Db2

por:

PostgreSQL

não moderniza automaticamente dados.

Trocar:

JCL

por:

YAML

não moderniza automaticamente processos.

E trocar:

datacenter

por:

AWS

não moderniza automaticamente engenharia.


🧠 29. A verdadeira modernização

Para mim, modernização aparece quando conquistamos:

REPRODUCIBILITY
      +
AUTOMATION
      +
OBSERVABILITY
      +
TRACEABILITY
      +
SECURITY
      +
TESTABILITY
      +
RESILIENCE
      +
MAINTAINABILITY

Se conseguimos isso mantendo COBOL?

Excelente.

Se parte precisa ser reescrita?

Pode fazer sentido.

Se outra parte permanece no IBM Z?

Perfeitamente possível.

Se determinado workload vai para AWS?

Ótimo.

Tecnologia é consequência da decisão arquitetural.

Não deveria ser sua causa.


🥚 Easter egg — 03:17 no castelo

Naturalmente precisamos deixar uma pequena surpresa.

São 03:17 da madrugada.

O telefone toca.

Produção parou.

O dashboard está verde.

EC2:

RUNNING

RDS:

AVAILABLE

CPU:

12%

Memory:

41%

CloudWatch:

NO INFRASTRUCTURE ALARM

Mas o batch não termina.

Um engenheiro olha para outro.

Ninguém entende.

Então aparece um veterano COBOL carregando uma caneca de café.

Ele olha cinco minutos para os logs e pergunta:

“Onde está o arquivo que o JOB anterior deveria ter criado?”

Silêncio.

O arquivo não existe.

O JOB anterior terminou com RC=04.

O novo scheduler considerou RC=04 sucesso.

O sistema antigo possuía uma regra que tratava aquele retorno especificamente.

Ela nunca apareceu no diagrama de migração.

Frank-N-Furter olha para sua criatura.

A criatura olha para Frank.

E o veterano toma outro gole de café.

O COBOL havia sido migrado perfeitamente.

O conhecimento operacional, não.


☕ 30. A lição final do Bellacosa Mainframe

Há algo profundamente fascinante nesses sistemas antigos.

Quando encontramos um programa COBOL escrito em 1989, atualizado em 1997, alterado em 2008, integrado com uma API em 2019 e ainda executando em 2026, não estamos olhando simplesmente para código legado.

Estamos olhando para história empresarial executável.

Cada IF.

Cada copybook.

Cada DD.

Cada tabela.

Cada fila.

Cada estranho RC=04.

Pode existir porque alguma coisa aconteceu.

Alguém tomou uma decisão.

Algum problema ocorreu.

Alguma regra comercial nasceu.

Algum cliente reclamou.

Algum auditor exigiu.

Alguma madrugada de produção ensinou uma lição.

Por isso, quando alguém entrar no laboratório segurando Terraform numa mão e Ansible na outra, não devemos impedi-lo.

Muito pelo contrário.

Acendam as máquinas.

Preparem AWS.

Construam pipelines.

Versionem tudo.

Automatizem.

Observem.

Testem.

Modernizem.

Só não cometam o erro de Frank-N-Furter:

não fiquem tão apaixonados pela nova criatura a ponto de esquecer de compreender o mundo no qual ela terá de sobreviver.

Porque, no final, a pergunta mais importante de uma modernização COBOL não é:

“Conseguimos fazê-lo rodar na AWS?”

É:

“Conseguimos preservar quarenta anos de comportamento, regras, dependências e conhecimento — eliminando aquilo que ficou obsoleto e melhorando aquilo que realmente precisava mudar?”

Se a resposta for sim, então podem aumentar o volume.

As luzes do laboratório podem acender.

Terraform pode subir a infraestrutura.

Ansible pode executar o playbook.

Jenkins pode promover o artefato.

CloudWatch pode começar a observar.

E Frank-N-Furter finalmente poderá anunciar:

⚡ “IT'S ALIVE!”

Enquanto o velho programador COBOL, sentado discretamente no fundo do laboratório, acrescentará:

“Muito bonito. Agora vamos ver se fecha o batch antes das seis.” ☕👄⚡



 

quinta-feira, 25 de junho de 2026

☕ O ABEND da Migração Mágica: Quando a IA Generativa Descobre que o Mainframe Não é Apenas um Arquivo COBOL

Bellacosa Mainframe quando a magia da migração via ia do mainframe falha


☕ O ABEND da Migração Mágica: Quando a IA Generativa Descobre que o Mainframe Não é Apenas um Arquivo COBOL

O Dia em que o Mercado Percebeu que o ChatGPT Não Conhece o Batch das 02h17

Existe um momento na carreira de todo profissional de Mainframe em que ele aprende uma lição importante.

A primeira é que JCL não foi criado para ser bonito.

A segunda é que ninguém documenta adequadamente um scheduler.

A terceira é que sempre haverá alguém chegando com um PowerPoint dizendo:

— Vamos aposentar o Mainframe em doze meses.

Nos últimos vinte anos ouvi essa frase tantas vezes quanto mensagens $HASP373, IEC161I ou aquele clássico telefonema de sexta-feira às 18h:

— Bellacosa, caiu a produção.

Recentemente, entretanto, surgiu um ingrediente novo nessa antiga receita corporativa.

A Inteligência Artificial Generativa.

E, junto dela, uma nova promessa digna dos antigos alquimistas digitais:

"Nossa IA converte milhões de linhas COBOL para Java automaticamente."

"Seu CICS vira microsserviços em poucos cliques."

"Seu VSAM agora é PostgreSQL."

"Seu batch vira Kubernetes."

"Seu legado desaparece em seis meses."

Foi justamente nesse contexto que a Gartner publicou uma análise que talvez represente um dos maiores banhos de água fria já aplicados no mercado de migração de Mainframe.

Segundo a consultoria, mais de 70% dos projetos de saída do Mainframe iniciados em 2026 não entregarão os benefícios esperados.

E o motivo é simples.

As pessoas estão superestimando o que a IA realmente sabe fazer.

E subestimando brutalmente o que um ambiente IBM Z realmente é.


O Maior Equívoco da Década: Achar que Mainframe é Apenas COBOL

Quando alguém diz:

— Temos cinquenta milhões de linhas COBOL.

Meu primeiro pensamento nunca é sobre COBOL.

Meu primeiro pensamento é:

Quantos schedulers existem?

Quantos GDGs?

Quantos catálogos?

Quantos exits?

Quantos produtos ISV?

Quantos jobs dependem de um único arquivo VSAM aberto em RLS?

Porque o código é apenas a ponta visível do iceberg.

Abaixo da linha d'água vivem criaturas muito mais antigas e perigosas.

CA-7.

Control-M.

ESP.

Zeke.

NetView.

RACF.

DFSMS.

SMF.

RMF.

MQ.

WLM.

CICSplex.

IMS.

DB2 Packages.

Plan Stability.

PassTickets.

SAF.

Exit routines escritas em Assembler por alguém que se aposentou em 2009 e hoje cultiva orquídeas em Campinas.

A IA consegue interpretar um trecho como:

IF SALDO > LIMITE
   MOVE 'BLOQUEAR' TO ACAO
END-IF

Ela pode até gerar um Java elegante.

Mas dificilmente responderá perguntas como:

Por que esse programa executa apenas às terças-feiras?

Por que ele depende do fechamento do SMF?

Por que aguarda um arquivo SWIFT vindo da Bélgica?

Por que existe um passo IEBGENER aparentemente inútil?

Por que um job precisa terminar antes das 02h17?

E principalmente:

Quem será responsabilizado se o PIX parar durante duas horas?


O Conhecimento Tribal: A Tecnologia Mais Difícil de Migrar

Costumo dizer aos alunos do Bellacosa Mainframe:

O ativo mais caro de um banco não é o hardware.

Não é o software.

Nem mesmo os dados.

É o conhecimento acumulado por pessoas.

José está há trinta e dois anos na instituição.

Maria administra o RACF desde 1997.

Carlos conhece cada mensagem DFSxxxx de cabeça.

João sabe exatamente qual dataset pode ser apagado e qual causará um desastre regulatório.

Nenhum deles está em um repositório Git.

Nenhum deles está em um Wiki.

Nenhum deles aparece em um prompt.

Esse conhecimento mora na memória das pessoas.

E a IA não faz leitura telepática.

Ela apenas processa aquilo que recebeu.

Quando recebe documentação incompleta, devolve respostas incompletas.

Quando recebe caos, produz caos estatisticamente coerente.


O Marketing da Varinha Mágica Digital

Não tenho dúvidas.

Existe muita tecnologia impressionante surgindo.

Copilots.

Agentes autônomos.

Análise semântica.

Descoberta automática de dependências.

RAG.

Embeddings.

Vetorização.

Tudo isso possui enorme potencial.

Mas também estamos vivendo uma epidemia de apresentações corporativas.

Parece que alguns vendedores descobriram a Pedra Filosofal da Computação.

Basta enviar um ZIP contendo quarenta milhões de linhas COBOL.

E, algumas horas depois, nasce uma arquitetura nativa de nuvem.

Observabilidade pronta.

CI/CD configurado.

Microsserviços desacoplados.

Eventos Kafka.

Terraform.

OpenTelemetry.

Kubernetes.

Documentação impecável.

Testes automatizados.

Compliance.

Segurança.

Alta disponibilidade.

Tudo isso sem compreender uma única regra de negócio.

É quase uma versão tecnológica daquele vendedor de elixires do Velho Oeste.

Só que agora utilizando a palavra GenAI.


O Mainframe Continua Evoluindo

Enquanto parte do mercado tenta organizar funerais prematuros para o IBM Z, a IBM continua investindo bilhões de dólares na plataforma.

Hoje temos:

COBOL 6.x;

z/OS Connect;

OpenTelemetry;

Ansible;

Zowe;

Git integrado;

DevOps moderno;

API Economy;

Containers Linux on Z;

IA embarcada;

Criptografia acelerada por hardware;

Processadores especializados.

Ou seja.

O Mainframe não está parado.

O Mainframe está fazendo aquilo que sempre fez melhor.

Adaptando-se.

Em 1964 ele sobreviveu ao surgimento dos minicomputadores.

Nos anos 80 sobreviveu às workstations.

Nos anos 90 sobreviveu ao Client/Server.

Nos anos 2000 sobreviveu à internet.

Nos anos 2010 sobreviveu à cloud.

Nos anos 2020 provavelmente sobreviverá ao hype da IA Generativa.

Porque, no final das contas, bancos continuam precisando fechar o dia.

Companhias aéreas continuam emitindo passagens.

Governos continuam pagando benefícios.

Seguradoras continuam processando milhões de eventos.

E quase ninguém gosta quando esses sistemas param.


Talvez a Pergunta Esteja Errada

A pergunta nunca deveria ser:

"Como saímos do Mainframe?"

A pergunta correta talvez seja:

"Qual workload realmente precisa sair?"

Talvez um portal web de RH possa migrar.

Talvez um batch de impressão possa ser substituído.

Talvez um sistema satélite seja reescrito.

Mas talvez o motor central de compensação bancária deva permanecer exatamente onde está.

Porque engenharia não é religião.

Arquitetura não é ideologia.

Tecnologia não é torcida organizada.

A melhor plataforma é aquela que resolve o problema com menor risco, melhor disponibilidade, maior previsibilidade financeira e retorno sustentável.


Considerações Finais

Suspeito que a Gartner não esteja dizendo:

"Nunca migrem."

Também não está afirmando:

"Mainframe venceu."

A mensagem parece muito mais madura.

A IA Generativa será extraordinariamente útil para documentar, explicar, testar, modernizar e integrar aplicações existentes.

Mas ainda estamos distantes de confiar bilhões de dólares em transações financeiras a um modelo estatístico incapaz de compreender por que um velho JOB chamado FINA987 precisa começar precisamente às 02h17 da madrugada.

E talvez seja justamente aí que esteja a maior ironia desta década.

A tecnologia mais avançada da atualidade descobriu que o Mainframe nunca foi apenas COBOL.

Ele sempre foi memória institucional.

Processos.

Pessoas.

Histórias.

E algumas dezenas de milhares de linhas de JCL escritas por um Sysprog que provavelmente continua tendo razão.

https://www.gartner.com/en/newsroom/press-releases/2026-06-18-gartner-predicts-more-than-70-percent-of-mainframe-exit-projects-will-fail-due-to-overestimation-of-generative-ais-capabilities

sexta-feira, 8 de maio de 2026

☕🔥 O NOVO PROFISSIONAL MAINFRAME — O “SYSOP DO FUTURO” JÁ CHEGOU… E MUITA GENTE AINDA NÃO PERCEBEU 🔥☕

 

Bellacosa Mainframe fala sobre o futuro do profissional mainframe

☕🔥 O NOVO PROFISSIONAL MAINFRAME — O “SYSOP DO FUTURO” JÁ CHEGOU… E MUITA GENTE AINDA NÃO PERCEBEU 🔥☕

Durante anos o mercado repetiu a mesma ladainha:

“Mainframe morreu.”
“COBOL acabou.”
“Tudo vai para cloud.”
“Só tem profissional velho.”
“Daqui 5 anos ninguém mais usa z/OS.”

…e mesmo assim o mainframe continua processando bilhões de transações financeiras, cartões, seguros, companhias aéreas, governo, saúde e bancos do planeta inteiro.

O mais curioso?

Enquanto muita gente fazia meme do COBOL…
a IBM lançava:

  • novas releases do z/OS,
  • melhorias absurdas de segurança,
  • integração com Linux,
  • OpenShift,
  • containers,
  • APIs REST,
  • IA embarcada,
  • automação,
  • observabilidade,
  • criptografia quântica,
  • integração cloud híbrida,
  • DevOps,
  • Ansible,
  • Zowe,
  • Python no z/OS,
  • pipelines CI/CD,
  • modernização de CICS,
  • Db2 acelerado,
  • zCX,
  • Wazi,
  • integração com Kubernetes…

Ou seja:

o mainframe não ficou parado.

Muita gente ficou.

☕💾 O PROFISSIONAL MAINFRAME DE HOJE NÃO É MAIS “OPERADOR DE TELA VERDE”

Esse é talvez o maior choque cultural.

O profissional moderno de mainframe virou um híbrido raro no mercado.

Hoje ele precisa entender:

  • infraestrutura,
  • cloud,
  • segurança,
  • automação,
  • Linux,
  • APIs,
  • containers,
  • integração distribuída,
  • observabilidade,
  • DevOps,
  • redes,
  • performance,
  • IA,
  • além do velho e poderoso conhecimento de z/OS.

O cara que antes conhecia apenas:

  • JCL,
  • JES2,
  • TSO,
  • COBOL,
  • CICS,

…agora conversa com:

  • squads cloud,
  • times DevOps,
  • arquitetos AWS/Azure/GCP,
  • desenvolvedores Java,
  • SRE,
  • engenharia de plataforma,
  • segurança ofensiva,
  • APIs e microsserviços.

E isso muda completamente a carreira.

☕🔥 O MAINFRAME VIROU O “CORE ENGINE” DA CLOUD HÍBRIDA

Muita gente ainda pensa:
“Cloud substitui mainframe.”

Mas na prática o mercado percebeu algo diferente:

☁️ Cloud resolve elasticidade.
💾 Mainframe resolve missão crítica.

E o mundo corporativo descobriu que:

  • downtime custa bilhões,
  • segurança importa,
  • consistência importa,
  • throughput importa,
  • governança importa,
  • estabilidade importa.

Resultado?

O discurso mudou de:
“vamos eliminar o mainframe”

…para:
“como integrar o mainframe com cloud?”

Esse é o novo jogo.

E quem entende dos dois mundos virou profissional premium.

☕🚀 O PROFISSIONAL 50+ MAINFRAME NÃO ESTÁ ULTRAPASSADO

Esse talvez seja o ponto mais importante.

Existe uma geração inteira de profissionais carregando:

  • décadas de experiência,
  • conhecimento de negócio,
  • troubleshooting real,
  • visão sistêmica,
  • disciplina operacional,
  • capacidade analítica,
  • experiência em crises reais.

Essa experiência vale ouro.

Porque infraestrutura crítica não é TikTok.
Não é hype.
Não é framework da semana.

Banco não pode “dar refresh”.
PIX não pode travar.
Cartão não pode cair.
Folha de pagamento não pode falhar.

E quando tudo explode às 2h da manhã…
a empresa descobre rapidamente quem é profissional de verdade.

☕💡 O DESAFIO NÃO É IDADE. É ATUALIZAÇÃO.

O mercado não está descartando profissionais 50+.

O mercado está descartando quem:

  • parou no tempo,
  • rejeita aprender,
  • tem medo de mudança,
  • trata novidade como inimiga.

Porque hoje existe espaço gigantesco para:

  • mentor técnico,
  • especialista híbrido,
  • arquiteto legado/cloud,
  • modernização,
  • automação z/OS,
  • segurança,
  • observabilidade,
  • integração API/mainframe,
  • DevOps enterprise.

O profissional experiente que aprende:

  • Linux,
  • automação,
  • APIs,
  • Python,
  • cloud híbrida,
  • IA aplicada,
  • ferramentas modernas IBM,

vira praticamente um “unicórnio corporativo”.

☕🔥 IA NÃO VEIO PARA MATAR O MAINFRAME

Na verdade…

IA vai aumentar ainda mais a importância dos ambientes estáveis.

Porque IA precisa:

  • dados confiáveis,
  • processamento consistente,
  • segurança,
  • governança,
  • rastreabilidade.

E adivinha onde estão os dados mais críticos do planeta?

No mainframe.

O que muda é o papel do profissional.

Menos trabalho repetitivo.
Mais automação.
Mais integração.
Mais análise.
Mais arquitetura.
Mais inteligência operacional.

O futuro do mainframe não é apertar ENTER em tela verde.

É orquestrar ambientes híbridos gigantescos.

☕💾 HOME OFFICE MUDOU O JOGO

Antigamente o profissional mainframe era visto quase como:
“o cara preso no CPD.”

Hoje:

  • participa de reuniões globais,
  • trabalha remoto,
  • atende clientes internacionais,
  • opera ambientes gigantes de casa,
  • ensina online,
  • cria conteúdo,
  • ministra treinamento,
  • faz consultoria mundial.

O conhecimento ficou global.

E isso abriu espaço enorme para profissionais experientes.

☕🔥 O MAINFRAME NÃO MORREU. ELE EVOLUIU.

Talvez a maior mentira da TI tenha sido:
“mainframe vai acabar.”

O que acabou foi:

  • o isolamento do mainframe,
  • a cultura fechada,
  • o profissional que só conhecia um único mundo.

O novo profissional z/OS conversa com:

  • cloud,
  • Linux,
  • IA,
  • APIs,
  • automação,
  • DevSecOps,
  • observabilidade,
  • analytics,
  • containers.

E isso é fascinante.

☕🚀 UMA MENSAGEM PARA O PROFISSIONAL MAINFRAME 50+

Se você tem décadas de carreira:
não carregue vergonha da sua experiência.

Carregue orgulho.

Você sobreviveu:

  • a migração Y2K,
  • downsizing,
  • ondas Unix,
  • client/server,
  • virtualização,
  • internet,
  • cloud,
  • DevOps,
  • microsserviços,
  • IA…

…e o mainframe continua aqui.

Mas agora existe uma missão nova:

não proteger o passado.

E sim conectar o passado ao futuro.

Aprenda algo novo.
Teste Linux.
Brinque com Python.
Entenda cloud.
Automatize tarefas.
Explore IA.
Converse com equipes jovens.
Compartilhe experiência.

Porque o mercado não precisa apenas de juventude.

O mercado precisa de gente que entende o que acontece quando sistemas críticos realmente importam.

E nisso…
o profissional mainframe ainda é uma das peças mais valiosas da tecnologia mundial. ☕🔥

quinta-feira, 23 de abril de 2026

💣🔥 EzNoSQL no z/OS — O Golpe Silencioso: COMO O MAINFRAME APRENDEU JSON SEM PEDIR PERMISSÃO

 

Bellacosa Mainframe apresenta EzNoSQL no Z/OS

💣🔥 EzNoSQL no z/OS — O Golpe Silencioso: COMO O MAINFRAME APRENDEU JSON SEM PEDIR PERMISSÃO

Se você é COBOL júnior e acha que NoSQL é coisa de cloud, segura essa:
o mainframe não só entendeu… como absorveu o conceito sem quebrar uma linha de negócio.


🧬 Origem — de onde veio essa “mutação”?

Tudo começa com um problema real:

👉 Sistemas core em z/OS
👉 Dados rígidos em Db2, VSAM, IMS
👉 Mundo moderno falando JSON, REST, mobile, eventos

💥 Conflito inevitável.

A IBM já vinha preparando o terreno com:

  • Suporte a JSON no Db2
  • z/OS Connect expondo APIs
  • Integração com cloud

👉 O EzNoSQL for z/OS® surge como uma resposta pragmática:

💣 “E se a gente trouxer o modelo NoSQL pra dentro do mainframe ao invés de empurrar o mainframe pra fora?”


📅 História e lançamento

Diferente de produtos clássicos da IBM, o EzNoSQL não nasceu como um “big bang” tipo CICS ou Db2.

👉 Ele aparece por volta da década de 2010 (era pós-cloud), como parte da estratégia de:

  • Modernização de aplicações
  • APIs REST
  • Dados semi-estruturados

💡 Não é um produto mainstream amplamente divulgado como CICS ou Db2
👉 É mais nichado, usado em arquiteturas modernas híbridas


🧠 O que ele realmente é (explicação raiz)

Pensa assim, jovem COBOLista:

👉 VSAM = registro fixo
👉 Db2 = tabela estruturada
👉 EzNoSQL = documento flexível (tipo JSON)

Exemplo:

{
"conta": "123",
"cliente": "Bellacosa",
"apps": ["mobile", "web"],
"config": {
"notificacao": true
}
}

💣 Isso no mundo antigo exigiria:

  • várias tabelas
  • joins
  • redesign

👉 Aqui: 1 documento


⚙️ Como ele funciona na prática

Arquitetura típica:

App → API → z/OS Connect → COBOL → EzNoSQL

Integra com:

  • CICS
  • z/OS
  • Segurança via RACF

🚀 Vantagens (o lado poderoso)

🔥 1. Modernização sem reescrita

Você não precisa jogar COBOL fora.

👉 Você evolui.


⚡ 2. JSON nativo no mainframe

Perfeito para:

  • APIs REST
  • Mobile
  • Integrações modernas

🛡️ 3. Segurança absurda

Tudo herdado do mainframe:

  • RACF
  • auditoria
  • controle fino

🧩 4. Integração natural

Nada de ETL maluco ou sync externo.


⚠️ Desvantagens (a parte que ninguém te conta)

❌ 1. Não é cloud-native puro

Não compete diretamente com:

  • MongoDB
  • Cassandra

❌ 2. Escalabilidade diferente

Mainframe escala verticalmente
NoSQL moderno escala horizontalmente


❌ 3. Curva de entendimento

COBOL + JSON = choque cultural no começo 😅


🧪 Exemplo mental (modo Bellacosa)

🎯 Problema

Cliente muda preferências toda hora.

No Db2:

  • ALTER TABLE?
  • nova coluna?
  • impacto em batch?

💣 Dor.


🎯 Com EzNoSQL

{
"cliente": "123",
"preferencias": {
"tema": "dark",
"idioma": "pt-BR",
"notificacao": true
}
}

👉 Mudou? Só adiciona campo.

SEM ALTER TABLE.
SEM impacto global.


🧠 Curiosidades (nível raiz)

💡 EzNoSQL não substitui Db2
👉 Ele resolve outro tipo de problema

💡 Ele é mais comum em:

  • bancos
  • fintechs
  • modernização de legado

💡 Muitas vezes você usa sem perceber:
👉 “camada invisível” por trás de APIs


🥚 Easter Egg (essa é boa)

💣 O maior segredo:

Muita empresa diz:

👉 “Estamos usando microserviços modernos”

Mas por trás…

👉 ainda existe COBOL chamando algo tipo EzNoSQL no z/OS 😎


🧠 Insight profundo (pra você crescer rápido)

👉 O futuro NÃO é:

  • COBOL vs NoSQL
  • Mainframe vs Cloud

💣 O futuro é:

Mainframe + NoSQL + APIs + eventos


🧪 Analogia final (pra fixar de vez)

  • Db2 = planilha Excel organizada
  • VSAM = arquivo binário rápido
  • EzNoSQL = JSON flexível tipo API moderna

🚀 Conclusão

O EzNoSQL for z/OS® é uma peça estratégica:

👉 Ele permite que o mainframe:

  • fale JSON
  • exponha APIs
  • se conecte ao mundo moderno

💣 Sem perder:

  • performance
  • segurança
  • confiabilidade
  •  

domingo, 22 de março de 2026

Como um Padawan COBOL Pode Aprender a Trabalhar com um Companheiro de IA Criado pela IBM sem Abandonar o IBM Z, o JCL e sua Caneca de Café

Bellacosa Mainframe estuda o IBM BOB


☕ O Holocron do IBM Bob

Como um Padawan COBOL Pode Aprender a Trabalhar com um Companheiro de IA Criado pela IBM sem Abandonar o IBM Z, o JCL e sua Caneca de Café

"O medo de perder conhecimento leva ao caos. O caos leva à reescrita em Java. A reescrita em Java leva ao sofrimento."
— Mestre Sysprog Yoda, Sala de Operações do JES2, aproximadamente 03:17 da manhã.


Existe um momento na jornada de todo Padawan COBOL...

Existe um momento na jornada de todo Padawan COBOL em que ele percebe uma verdade desconfortável.

A aplicação que ele acabou de receber para manutenção possui mais de trinta anos.

Não existe documentação.

O analista funcional aposentou-se em 2014.

O arquiteto virou diretor.

O programador original mora em alguma praia do Nordeste e provavelmente desligou seu pager em 1998.

Os diagramas UML nunca existiram.

Os requisitos estão enterrados em milhares de linhas de COBOL, dezenas de PROCs catalogadas, JCLs obscuros, COPYBOOKS compartilhados por cinquenta programas diferentes, packages DB2 esquecidos, mapas BMS, tabelas VSAM, MQs espalhadas pela infraestrutura e algum código assembler que ninguém ousa tocar.

Você abre o primeiro programa.

São apenas 18 mil linhas.

Respira aliviado.

Até descobrir que ele faz PERFORM em outros vinte programas.

E então surge a pergunta inevitável.

"Será que existe alguma IA capaz de entender tudo isso?"

Talvez.

E talvez ela tenha um nome curioso.

IBM Bob.

Hoje vamos abrir mais um Holocron do Bellacosa Mainframe e conversar sobre aquilo que talvez seja uma das iniciativas mais interessantes da IBM para os próximos anos.


O que é o IBM Bob?

IBM Bob é apresentado como um assistente inteligente para desenvolvimento de software baseado em Inteligência Artificial.

Mas chamá-lo apenas de um gerador de código é diminuir bastante sua ambição.

Na prática, Bob parece querer ocupar um espaço muito maior.

Ele deseja ser:

  • Desenvolvedor auxiliar;

  • Revisor de código;

  • Especialista em documentação;

  • Tutor técnico;

  • Ferramenta de onboarding;

  • Auditor de segurança;

  • Agente de produtividade;

  • Companheiro corporativo de engenharia.

Talvez a melhor definição seja:

IBM Bob é uma tentativa da IBM de construir um "engenheiro de software virtual" especializado em ambientes empresariais.


IBM já tentou isso antes

A ideia não é nova.

IBM possui uma longa tradição em criar ferramentas para aumentar a produtividade.

DécadaFerramenta
1960FORTRAN Compiler
1970ISPF
1980CSP
1990VisualAge
2000Rational Rose
2010Bluemix
2020Watson
2025watsonx
2026IBM Bob

Existe uma espécie de evolução natural.

Antigamente tínhamos compiladores.

Depois IDEs.

Posteriormente ALM.

Mais tarde plataformas cloud.

Agora temos companheiros cognitivos.

Bob pode ser visto como uma mistura de:

  • GitHub Copilot

  • Rational Assistant

  • Watsonx

  • ChatGPT

  • Knowledge Assistant

Tudo isso embalado para empresas.


O problema que IBM está tentando resolver

Existe uma crise silenciosa acontecendo.

E ela não é tecnológica.

Ela é humana.

Estamos perdendo especialistas.

Todos os dias.

Pessoas que conhecem:

CICS

IMS

PL/I

COBOL

Natural

IDMS

JCL

Netview

SA z/OS

RACF

DB2

MQ

GDPS

SMP/E

RMF

SMF

SAF

VTAM

estão se aposentando.

E conhecimento não documentado possui meia vida curta.

Quando o especialista sai, o sistema continua.

Mas o entendimento desaparece.

Bob parece ser uma tentativa de capturar parte dessa inteligência institucional.


O maior erro do artigo original

O artigo que motivou esta discussão é bastante interessante.

Mas possui uma lacuna gigantesca.

Praticamente ignora o Mainframe.

E justamente aí está talvez a maior oportunidade do IBM Bob.

IBM possui bilhões de linhas COBOL instaladas.

Bilhões.

Sistemas que movimentam:

Cartões.

PIX.

Seguros.

Bolsas.

Impostos.

Benefícios sociais.

Compensação bancária.

Passagens aéreas.

Energia elétrica.

Telecomunicações.

Saúde.

Previdência.

Esses sistemas não vão desaparecer.

Eles precisam ser compreendidos.

E compreendê-los custa caro.

Muito caro.


Imagine conversar com um sistema legado

Imagine abrir um chat.

Perguntar:

Explique PROGCBL1.

Bob responde.


Sistema responsável pela liquidação diária.

Arquivos utilizados:

CLIENTES.KSDS

MOVTO.PS

Dependências:

DB2

MQ

CICS

Programas chamados:

CBL100

CBL200

CBL991

Pontos críticos:

Falta tratamento SQLCODE +100.

Possível deadlock.

Campo SALDO alterado em três locais.


Pronto.

Dias de investigação reduzidos para minutos.


O Holocron dos COPYBOOKS Perdidos

Todo Padawan COBOL conhece esse momento.

Você encontra:

COPY CLI0001

COPY BAN0007

COPY FIS9999

COPY SEG1234

Pergunta:

"Onde estão?"

Ninguém sabe.

Bob poderia consultar:

Git

Endevor

Changeman

Panvalet

Librarian

PDS

PDSE

e responder.


COPY SEG1234

Localização:

CORP.COBOL.COPYLIB

Última alteração:

15/03/2024

Responsável:

Equipe Seguros

Campos utilizados:

CPF

SALDO

RISCO

TIPO_APOLICE


Você acabou de economizar duas horas.


O poder do entendimento semântico

Talvez a maior revolução seja essa.

Não escrever código.

Entender sistemas.

Pergunta:

Quem atualiza SALDO_DISPONIVEL?

Resposta:

PROG010

PROG200

TRN991

JOBNIGHT

Impacto:

17 programas.

Possíveis efeitos colaterais:

Extrato.

PIX.

TED.

Internet Banking.


Isso é engenharia reversa inteligente.


Bob poderia ser o arqueólogo corporativo

Hoje fazemos arqueologia manual.

ISPF.

3.14.

3.4.

SUPERC.

FILEAID.

SPUFI.

SDSF.

JES2.

TSO.

Bob poderia atuar como um arqueólogo digital.

Encontrando relações invisíveis.


O sonho do Sysprog

Imagine perguntar.


Explique este JCL.


Resposta:

Job diário.

Executa às 23h.

Consome 4 CPUs.

Lê VSAM.

Executa DFSORT.

Atualiza DB2.

Publica mensagem MQ.

Gera SMF.

Último ABEND:

S806.

Ocorrências:


Ou então.


Por que ocorreu este ABEND?


S0C7

Campo NUMERO-CONTA possui dados inválidos.

Registro 145783.

Programa:

COBLIQ01

Parágrafo:

3000-PROCESSA


Isso seria quase magia.

Mas magia suficientemente avançada é indistinguível da tecnologia.


O problema dos LLMs

Nem tudo são flores.

Existe um problema sério.

LLMs alucinam.

E sistemas corporativos não aceitam alucinações.

Bob não pode inventar.

Não pode responder.

"Talvez."

Em bancos.

Talvez custa milhões.

Portanto provavelmente Bob utilizará RAG.

Retrieval Augmented Generation.

Consultando:

Catálogos.

DB2 Catalog.

Git.

Endevor.

SMF.

SDSF.

WLM.

RMF.

Copybooks.

Documentação interna.

Tickets Jira.

Confluence.

Runbooks.


Segurança

Este é provavelmente o aspecto mais importante.

Um banco não pode enviar CPF para um LLM público.

Nem dados médicos.

Nem cartões.

Nem chaves PIX.

Bob precisa viver próximo dos dados.

Talvez em:

LinuxONE.

OpenShift.

Cloud privada.

IBM Z.

Com recursos de:

LGPD.

PCI DSS.

SOX.

Mascaramento.

Auditoria.

Guardrails.

Zero Trust.


O verdadeiro diferencial

Acredito que Bob cometeria um erro enorme tentando competir diretamente com Copilot.

Copilot escreve código.

Bob deveria compreender empresas.

Ele deveria ser especialista em:

CICS.

IMS.

MQ.

COBOL.

JCL.

DB2.

VSAM.

RACF.

SA z/OS.

Netview.

GDPS.

WLM.

DFSMS.

SMP/E.


Prompt:

Crie API REST para este COBOL.

Resposta:

OpenAPI.

JSON.

COBOL parser.

z/OS Connect.

Swagger.

JCL Deploy.

Tudo documentado.


O Holocron Vivo da Empresa

Talvez seja essa a visão mais bonita.

Bob não substituirá desenvolvedores.

Ele preservará memória.

Será um Holocron corporativo.

Um aprendiz conversa.

Pergunta.

Aprende.

Entende.

Documenta.

Compartilha.

E a empresa deixa de depender exclusivamente da memória de poucas pessoas.


O futuro pertence aos desenvolvedores que sabem conversar com IA

Muitos têm medo.

"IA vai substituir programadores."

Talvez substitua quem apenas copia código.

Mas dificilmente substituirá quem entende negócio.

Quem entende processamento batch.

Quem entende compensação bancária.

Quem conhece JES2.

Quem domina CICS.

Quem compreende RACF.

Quem sabe porque um catálogo ICF ficou inconsistente às três da manhã.

Esses profissionais continuarão valiosos.

Talvez ainda mais.

Porque agora terão um novo aliado.

Um companheiro.

Um assistente.

Um aprendiz digital.

Um pequeno droide azul corporativo.

Um Bob.


Considerações Finais

Existe uma frase muito conhecida na comunidade de tecnologia:

"Todo sistema legado é apenas um sistema que continua pagando as contas."

IBM conhece essa realidade melhor do que ninguém.

E talvez o IBM Bob seja uma das primeiras tentativas realmente sérias de transformar cinquenta anos de conhecimento corporativo em algo conversável, pesquisável e ensinável.

Se conseguir compreender verdadeiramente COBOL, JCL, CICS, IMS, DB2, VSAM e os inúmeros segredos escondidos nos data centers do planeta, Bob poderá se tornar muito mais do que um assistente de programação.

Ele poderá tornar-se o primeiro grande Holocron do Mainframe Moderno.

E para nós, Padawans COBOL, isso significa algo extraordinário.

Pela primeira vez em décadas, talvez seja possível sentar diante de um sistema com quarenta anos de idade, tomar uma caneca de café, fazer uma pergunta simples e ouvir uma resposta compreensível.

E convenhamos...

Isso parece muito mais próximo da Força do que da simples Inteligência Artificial.


segunda-feira, 22 de abril de 2024

Uncharted Entra no CPD — A IA Encontrou o COBOL, Mas o Tesouro Estava Escondido no JCL

 

Bellacosa Mainframe e a ia encontrou o mainframe cobol

☕ Um Café no Bellacosa Mainframe

Uncharted Entra no CPD — A IA Encontrou o COBOL, Mas o Tesouro Estava Escondido no JCL

Ou: por que Nathan Drake consegue ler o mapa, mas ainda precisa descobrir a passagem secreta, o CALL dinâmico, a PROC esquecida e o scheduler que alguém alterou em 2009

Existe uma cena clássica em qualquer aventura de Uncharted.

Nathan Drake encontra um mapa.

O papel está amarelado.

Há símbolos misteriosos.

Uma anotação feita há duzentos anos aponta para algum lugar impossível.

Sully olha para aquilo e provavelmente pensa:

— Garoto, isso vai dar problema.

Nathan responde alguma coisa otimista, pega a mochila, recarrega a arma e vai atrás do tesouro.

O erro seria imaginar que, porque ele encontrou o mapa, a aventura acabou.

Na realidade, foi exatamente naquele momento que ela começou.

Bem-vindo à modernização de aplicações mainframe com Inteligência Artificial.

Hoje temos ferramentas fantásticas capazes de pegar milhões de linhas COBOL, PL/I, Assembler, JCL e copybooks e fazer coisas que vinte anos atrás exigiriam equipes inteiras.

Elas podem:

  • explicar programas;

  • encontrar referências;

  • montar árvores de chamadas;

  • gerar documentação;

  • sugerir regras de negócio;

  • criar testes;

  • traduzir código;

  • localizar dependências;

  • produzir diagramas;

  • auxiliar numa migração.

Um programador COBOL iniciante olha para isso e pensa:

“Pronto. Coloca o repositório na IA e ela descobre o sistema.”

Calma, jovem explorador.

Você encontrou o mapa do tesouro.

Não encontrou necessariamente o tesouro.

E talvez nem saiba ainda onde estão as cobras.



Prólogo — Nathan Drake encontrou o COBOL

Imagine que chegamos a uma empresa fictícia chamada Bellacosa International Treasure Bank.

O banco possui:

18.000 programas COBOL
9.400 copybooks
26.000 JCLs
4.000 PROCs
centenas de tabelas Db2
milhares de datasets
CICS
IMS
MQ
VSAM
Assembler
REXX
sort cards
scheduler

Além disso, algumas pessoas que criaram partes importantes do sistema já se aposentaram.

Outras trabalham ali há trinta anos e sabem coisas que nunca foram documentadas.

A diretoria anuncia:

“Vamos modernizar.”

A palavra ecoa pelo CPD.

Modernizar.

Maravilhosa palavra.

Pode significar desde:

compilar COBOL com versão mais nova

até:

migrar metade da empresa para cloud
e descobrir seis meses depois
que alguém esqueceu um arquivo EBCDIC.

Para ajudar, chega a Inteligência Artificial.

Jogamos nela:

PAY001.CBL

A IA analisa o programa.

Encontra:

CALL 'PAY002'
CALL 'PAY003'

EXEC SQL
   SELECT ...
END-EXEC

Ela produz:

PAY001
 ├── PAY002
 ├── PAY003
 └── DB2

Excelente.

Nathan Drake encontrou o primeiro pedaço do mapa.

Só que existe isto:

CALL WS-PROGRAM USING WS-AREA

Sully imediatamente pergunta:

“E quem diabos é WS-PROGRAM?”

Ótima pergunta.


1. O primeiro templo — programa não é aplicação

Essa é provavelmente uma das lições mais importantes para quem começa em mainframe.

Quando estudamos programação, pensamos:

programa = aplicação

Isso pode funcionar num pequeno exercício.

Você tem:

CALCULA.CBL

O programa lê valores, calcula alguma coisa e termina.

Mas aplicações corporativas que nasceram há décadas são outra criatura.

Um sistema real pode ser:

COBOL
+
COPYBOOK
+
JCL
+
PROC
+
DB2
+
VSAM
+
CICS
+
IMS
+
MQ
+
Scheduler
+
Control Tables
+
Assembler
+
REXX
+
Configuração
+
Dados
+
Operação
+
Conhecimento humano

O COBOL é importante.

Mas ele é apenas uma sala do templo.

E algumas das passagens secretas ficam fora dela.


2. O mapa encontrado pela IA

Vamos usar um programa simples.

IDENTIFICATION DIVISION.
PROGRAM-ID. PAY001.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 WS-PROGRAM PIC X(8).

PROCEDURE DIVISION.

    MOVE 'PAY002' TO WS-PROGRAM

    CALL WS-PROGRAM

    GOBACK.

Um analisador consegue identificar:

CALL variável

Mas o destino pode depender de lógica anterior.

Agora imagine:

EXEC SQL
   SELECT PROGRAM_NAME
     INTO :WS-PROGRAM
     FROM CONTROL_TABLE
    WHERE OPERATION = :WS-OPERATION
END-EXEC

CALL WS-PROGRAM.

O programa chamado não está literalmente escrito no comando CALL.

Pode ser:

PAY002
PAY003
PAY099
PAY777

dependendo do conteúdo da tabela.

A IA pode perceber que existe uma chamada dinâmica.

Mas sem conhecer os valores possíveis daquela tabela, ela não consegue afirmar com certeza qual programa será chamado.

Portanto:

SOURCE CODE

diz:

“Existe uma chamada dinâmica.”

Enquanto:

RUNTIME

pode dizer:

“Nas últimas 48 horas, PAY002 foi chamado 800 mil vezes e PAY777 foi chamado três vezes.”

Essas três execuções podem ser exatamente as três que movem cinquenta milhões de reais.

Agora você entende por que quantidade de execução e importância de negócio não são a mesma coisa.


3. Curiosidade Bellacosa — o código que quase nunca executa pode ser o mais importante

Um iniciante normalmente pensa:

“Se roda pouco, deve ser pouco importante.”

Não necessariamente.

Imagine:

ROTINA-A

executa 4 milhões de vezes por dia.

Ela formata um nome.

Agora:

ROTINA-B

executa uma vez por ano.

Ela fecha o exercício fiscal.

Qual você prefere quebrar?

Pois é.

Modernização exige algo que Uncharted ensina muito bem:

Nem toda porta escondida guarda o mesmo perigo.


4. O segundo templo — COPYBOOK não é só Ctrl+C corporativo

No começo, copybook parece simples.

COPY CLIENTE.

E dentro:

01 CLIENTE.
   05 CODIGO PIC 9(08).
   05 TIPO   PIC X.
   05 SALDO  PIC S9(11)V99 COMP-3.

Você pensa:

“É apenas uma estrutura compartilhada.”

Sim.

E não.

Esse layout pode ser usado por:

programa COBOL online
batch noturno
Easytrieve
SORT
MQ
arquivo VSAM
interface externa
warehouse
Java
Python
ETL

Agora alguém altera:

01 CLIENTE.
   05 CODIGO PIC 9(08).
   05 PAIS   PIC X(02).
   05 TIPO   PIC X.
   05 SALDO  PIC S9(11)V99 COMP-3.

Do ponto de vista da aplicação que recompilou:

Tudo certo.

Mas talvez exista um programa distante que não tenha copybook algum.

Ele simplesmente sabe:

byte 9 = tipo do cliente

Você inseriu dois bytes antes desse campo.

Agora:

byte 9

não significa mais a mesma coisa.

Parabéns.

Você acabou de descobrir uma armadilha do templo.


5. Nathan Drake encontra REDEFINES e quase cai num abismo

Agora chegamos numa das maravilhas do COBOL:

01 WS-REGISTRO.
   05 WS-TIPO PIC X.
   05 WS-DADOS PIC X(100).

01 WS-CLIENTE REDEFINES WS-REGISTRO.
   05 ...

01 WS-CONTA REDEFINES WS-REGISTRO.
   05 ...

O mesmo conjunto de bytes pode ser interpretado de formas diferentes.

Para um analisador estático:

layout CLIENTE existe
layout CONTA existe

Perfeito.

Mas qual deles é usado em produção?

Talvez:

CLIENTE = 99,98%
CONTA   = 0,02%

O problema é que aqueles 0,02% podem aparecer somente no encerramento anual.

Você migra o sistema em maio.

Testa maio.

Testa junho.

Testa julho.

Tudo verde.

Chega dezembro.

O velho sistema olha para você e diz:

SOC7

Feliz Natal.


6. Terceiro templo — JCL é parte da aplicação

Aqui muitos programadores iniciantes cometem um erro.

Eles estudam COBOL e enxergam JCL como:

“A coisa estranha que executa meu programa.”

Só que JCL pode mudar drasticamente o comportamento real.

Considere:

//STEP10 EXEC PGM=PAY001
//INPUT  DD DSN=PROD.PAY.INPUT

Você conclui:

PAY001 recebe PROD.PAY.INPUT

Agora descubra que o job verdadeiro chama uma PROC:

//STEP10 EXEC PROC=PAYPROC

e depois faz override:

//STEP10.RUN.INPUT DD DSN=PROD.SPECIAL.PAY.INPUT

Pronto.

A informação originalmente lida na PROC não corresponde necessariamente ao dataset utilizado naquela execução.

É exatamente como encontrar um mapa do templo mostrando uma porta.

Só que alguém construiu uma passagem lateral em 2004.

E nunca atualizou o mapa.


7. PROC — a passagem secreta atrás da estante

Cataloged procedures existem para reutilizar JCL.

Ótimo conceito.

Mas imagine décadas de alterações.

Temos:

JOB
 ↓
PROC
 ↓
PROC
 ↓
override
 ↓
symbolic parameter
 ↓
dataset

A IA precisa resolver isso tudo.

Porque:

JCL que você vê

não é necessariamente:

JCL efetivamente executado

Antes de modernizar um fluxo batch, tente produzir a versão resolvida do JCL.

Ou seja:

qual PGM?
qual PARM?
qual dataset?
qual DISP?
qual STEPLIB?
qual PROC?
qual override?

Essa é uma excelente prática de discovery.


8. Quarto templo — scheduler contém lógica de negócio

A primeira vez que alguém percebe isso geralmente fica olhando para a tela alguns segundos.

Imagine:

JOBB

executa somente se:

JOBA terminou OK
AND hoje é último dia útil
AND FILE-X chegou
AND país != feriado
AND JOBZ não está rodando

Onde está essa lógica?

Talvez não esteja no COBOL.

Talvez nem no JCL.

Está no:

Control-M
IBM Workload Scheduler
CA-7
ESP
ou outro scheduler

Portanto:

scheduler configuration

é parte da aplicação.

Se durante uma migração você copiar:

COBOL
JCL
DB2

mas não reproduzir corretamente a orquestração, você poderá ter um sistema funcional que executa na hora errada.

E em processamento financeiro, “certo na hora errada” costuma significar simplesmente:

ERRADO

9. Quinto templo — control table é código disfarçado de dado

Aqui Nathan Drake acende a tocha.

Imagine esta tabela:

OPERATION   PROGRAM
---------------------
PAYMENT     PAY001
REFUND      REF010
REVERSAL    REV777

E o COBOL:

SELECT PROGRAM
INTO WS-PROGRAM
FROM CONTROL_TABLE
WHERE OPERATION = WS-OPERATION.

CALL WS-PROGRAM.

Agora alguém executa:

UPDATE CONTROL_TABLE
SET PROGRAM = 'PAY900'
WHERE OPERATION = 'PAYMENT';

Pergunta:

O source COBOL mudou?

Não.

Houve novo compile?

Não.

Houve link-edit?

Não.

O comportamento da aplicação mudou?

SIM.

Logo:

Alguns dados são, na prática, configuração executável.

Essa é uma das razões pelas quais repositório de source não representa obrigatoriamente todo o sistema.


10. Sexto templo — compiler options também importam

Agora entramos numa área que muitos iniciantes ignoram.

Você possui:

PAY001.CBL

e imagina que o source define tudo.

Mas programas COBOL são compilados.

E opções do compilador podem alterar comportamento.

Entre elas encontramos temas relacionados a:

aritmética
truncamento
debug
otimização
chamadas
compatibilidade
representação
runtime checking

Ou seja:

mesmo source
+
configuração diferente
=
possível comportamento diferente

É por isso que discovery sério deve coletar:

source
compiler listing
compiler options
binder information
load module information

A IA não deveria simplesmente olhar um .CBL solitário e proclamar:

“Eu compreendi tudo.”

Nathan Drake olhando uma inscrição na parede não sabe automaticamente qual mecanismo ela aciona.

Ele precisa olhar o chão também.


11. Sétimo templo — Db2 Package: o mapa que lembra como chegar ao dado

Com SQL estático em COBOL, existe outra peça importante.

Você escreve:

EXEC SQL
   SELECT SALDO
     INTO :WS-SALDO
     FROM CONTA
    WHERE CONTA_ID = :WS-CONTA
END-EXEC

Mas o ecossistema de execução envolve também elementos de Db2 como:

DBRM
BIND
PACKAGE
PLAN
access path

Dependendo do ambiente e da arquitetura.

Para modernization discovery, você quer saber:

qual programa usa qual package?
qual package referencia quais objetos?
qual versão?
qual bind?

Porque a arquitetura real não termina no EXEC SQL.


12. Oitavo templo — runtime é o chão onde as pegadas aparecem

Chegamos ao conceito mais poderoso do artigo original.

Static analysis diz:

“Isso pode acontecer.”

Runtime diz:

“Isso aconteceu.”

É uma diferença brutal.

Considere:

PGMA pode chamar:
PGMB
PGMC
PGMD

Static analysis apresenta três caminhos.

Mas produção mostra:

PGMB = 9.000.000 execuções
PGMC = 37 execuções
PGMD = 0 execuções

Agora temos evidência operacional.

Podemos olhar:

SMF
logs
CICS
Db2 traces
IMS
MQ
scheduler history
dataset activity
job history
APM

Cada plataforma terá fontes diferentes.

O objetivo é confrontar:

POSSIBLE

contra:

OBSERVED

Isso é ouro para discovery.


13. Mas cuidado: “não observado” não significa “não existe”

Essa é outra armadilha.

Suponha:

PGMD = 0 execuções em 90 dias

Podemos aposentá-lo?

Talvez.

Mas pergunte:

ele roda mensalmente?
trimestralmente?
anualmente?
só em desastre?
somente em fechamento?
somente em contingência?

Um programa DR pode não executar durante cinco anos e continuar essencial.

Portanto:

NOT OBSERVED

não significa automaticamente:

DEAD CODE

Isso precisa virar hipótese.


14. A grande tabela do explorador: D, R, H e U

Uma técnica extremamente útil seria classificar cada descoberta.

Use:

[D] Deterministic
[R] Runtime observed
[H] Hypothesis
[U] Unknown

Por exemplo:

[D] PAY001 contém CALL PAY002.

[D] JOBPAY executa PAY001.

[R] PAY001 executou 8.231 vezes em 30 dias.

[R] PAY002 foi carregado 7.994 vezes.

[H] Parte das demais execuções seleciona PAY010 dinamicamente.

[U] 237 targets ainda não resolvidos.

Isso muda completamente a conversa.

Em vez de dizer:

“Mapeamos a aplicação.”

Você diz:

“Temos 91% das relações críticas confirmadas, 7% observadas apenas em runtime e quatro dependências de alto impacto ainda não resolvidas.”

Muito mais profissional.


15. Curiosidade — 100% de linhas analisadas pode significar quase nada

Imagine o relatório:

18 milhões de linhas analisadas
100% repository coverage

Executivo feliz.

PowerPoint verde.

Mas escondido numa nota:

11 dynamic CALLs unresolved
3 vendor modules sem source
2 interfaces externas desconhecidas
1 scheduler condition não documentada

Então temos:

100% CODE SCANNED

mas não:

100% SYSTEM UNDERSTOOD

Por isso o objetivo de discovery não deveria ser obsessão por “completude”.

Deveria ser redução controlada de incerteza.


16. O conceito Bellacosa de UNKNOWN WITH CONSEQUENCE

Nem todo desconhecido merece a mesma energia.

Imagine:

UnknownContextoRisco
CALL desconhecidorelatório internobaixo
arquivo desconhecidoprocesso mensalmédio
consumidor desconhecidopagamentocrítico
módulo sem sourcesettlementcrítico

Agora discovery passa a priorizar risco.

Podemos usar uma heurística:

RISCO =
PROBABILIDADE
× IMPACTO
× INCERTEZA

Não precisa ser ciência matemática perfeita.

É uma ferramenta de decisão.

Exemplo:

Dynamic CALL X

Probabilidade: 5
Impacto:       5
Incerteza:     4

Risco = 100

Compare com:

Relatório antigo

Probabilidade: 1
Impacto:       1
Incerteza:     4

Risco = 4

Você sabe onde colocar Nathan Drake primeiro.


17. Nono templo — conhecimento tribal

Agora chegamos ao inimigo final.

Pergunte:

“Por que JOBABC não pode rodar antes do JOBXYZ?”

Resposta:

“Porque dá problema.”

Pergunte:

“Onde está documentado?”

Resposta:

“Não está.”

“Scheduler?”

“Também não.”

“JCL?”

“Não.”

“Então como vocês sabem?”

Resposta:

“O Cláudio sabe.”

Cláudio está na empresa desde 1987.

Cláudio sabe que:

quando último dia útil cai numa sexta-feira
e segunda é feriado
JOBABC precisa esperar arquivo X

Onde está essa regra?

Na cabeça do Cláudio.

Isso se chama:

institutional knowledge

ou, informalmente:

conhecimento tribal.

É patrimônio operacional.

E é também um risco enorme.


18. Aqui IA pode virar Indiana Jones... quer dizer, Nathan Drake corporativo

Entrevistas com SMEs podem ser transcritas.

A IA pode extrair afirmações.

Exemplo:

Cláudio diz:

“PAY099 só roda quando há reversão manual.”

Transformamos isso em:

[H] PAY099 executa apenas em reversões manuais.

Depois verificamos:

runtime history
scheduler
transactions
JCL
Db2

Se confirmar:

[D/R] CONFIRMED

Se não:

CONTRADICTION

Isso é muito mais poderoso do que simplesmente produzir atas de reunião.

Estamos transformando memória humana em hipóteses verificáveis.


19. O grande perigo — IA verificando IA

Agora chegamos à armadilha mais moderna de todas.

Imagine:

IF STATUS = 'A'

A IA interpreta:

A = ACTIVE

Só que no sistema:

A = AWAITING SETTLEMENT

A IA gera documentação:

STATUS A means ACTIVE

Depois cria teste:

Given an active account
STATUS = A

Depois gera Java.

Depois executa seus próprios testes.

Resultado:

PASS
PASS
PASS
PASS

A diretoria comemora.

Só existe um pequeno problema.

Tudo está errado.

Mas está coerentemente errado.

Esse é um dos maiores perigos da geração automática.


20. Regra Bellacosa: quem escreve a prova não pode sozinho corrigir a própria prova

Ou, tecnicamente:

Verification must exist outside the generation loop.

Se IA:

interpreta
gera
testa
valida

tudo usando a mesma hipótese inicial, ela pode perpetuar o erro.

Precisamos de fontes externas de verdade.

Exemplos:

compiler output
runtime traces
immutable specs
regression suites
parallel run
production reconciliation
known datasets
SME validation

Ou seja:

AI OUTPUT
     ↓
INDEPENDENT EVIDENCE

e não:

AI OUTPUT
     ↓
AI CHECKS AI
     ↓
PARABÉNS

21. O décimo templo — parallel run

Uma técnica poderosíssima em modernização é executar:

sistema antigo

e:

sistema novo

em paralelo.

Mesmas entradas.

Depois comparar:

saídas
saldos
transações
contagens
erros
tempos
efeitos

Exemplo:

LEGACY:
10.000.000 transações
resultado financeiro X

NEW:
10.000.000 transações
resultado financeiro X

Excelente.

Agora imagine:

NEW divergiu em 17 transações

Essas 17 são lixo?

Ou são justamente:

clientes judiciais
contas especiais
operações antigas
casos de fechamento

A reconciliação encontra justamente as pequenas exceções que documentação gerada pode esconder.


22. O verdadeiro mapa: Evidence Graph

Se eu estivesse montando uma arquitetura de discovery moderna, criaria um grafo.

Nós:

PROGRAM
COPYBOOK
JOB
PROC
STEP
DATASET
TABLE
PACKAGE
TRANSACTION
QUEUE
API
SCHEDULER
CONTROL TABLE
LOAD MODULE

Relacionamentos:

CALLS
READS
WRITES
EXECUTES
USES
BINDS
TRIGGERS
CONSUMES
PRODUCES
DEPENDS ON

Mas não basta guardar a relação.

Precisamos guardar a evidência.

Exemplo:

PAY001
   |
   | CALLS
   |
PAY002

Metadata:

source: compiler listing
type: deterministic
confidence: 100%

Outro:

PAY001
   |
   | CALLS
   |
PAY099

Metadata:

source: runtime trace
observed: 37 times
type: runtime

Outro:

PAY001
   |
   | POSSIBLY CALLS
   |
PAY777

Metadata:

source: LLM inference
type: hypothesis
confidence: 63%

Agora sim temos algo valioso.

Não apenas:

knowledge graph.

Mas:

evidence-backed knowledge graph.


23. Passo a passo para um iniciante fazer discovery

Vamos transformar tudo isso numa sequência prática.

Passo 1 — escolha uma capacidade pequena

Não comece:

“Vamos entender o banco inteiro.”

Comece:

“Vamos entender consulta de saldo.”

Ou:

“Vamos entender pagamento.”

Passo 2 — encontre os pontos de entrada

Pode ser:

CICS transaction
JCL
API
MQ
IMS transaction
batch

Pergunte:

como essa capacidade começa?

Passo 3 — descubra os programas

Mapeie:

programas chamados
CALLs estáticos
CALLs dinâmicos
subprogramas
assembler
utilities

Passo 4 — expanda COPYBOOKs

Não analise apenas:

COPY ACCOUNT.

Resolva o conteúdo real.

Observe:

offset
length
REDEFINES
OCCURS
COMP
COMP-3

Passo 5 — resolva JCL e PROC

Descubra o job efetivo.

Inclua:

symbolics
overrides
datasets
STEPLIB
PARM
COND

Passo 6 — analise acesso a dados

Procure:

Db2
VSAM
QSAM
IMS
MQ
files

Passo 7 — busque configuração externa

Inclua:

scheduler
control tables
CICS definitions
IMS definitions
Db2 package info
MQ configuration

Passo 8 — olhe produção

Pergunte:

o que realmente executou?

Use evidência disponível.


Passo 9 — registre unknowns

Exemplo:

U-001 Dynamic CALL unresolved
U-002 Consumer of dataset unknown
U-003 Vendor module source unavailable

Passo 10 — classifique risco

Algo como:

LOW
MEDIUM
HIGH
CRITICAL

Passo 11 — use IA para correlação

Agora sim.

Entregue os fatos.

Peça:

explique
correlacione
documente
sugira testes
aponte inconsistências

A IA passa a trabalhar sobre evidência.


Passo 12 — valide fora da IA

Use:

compiler
runtime
SME
tests
parallel run

24. Easter egg — “Sic Parvis Magna”

Fãs de Uncharted reconhecerão imediatamente:

Sic Parvis Magna

“Grandeza a partir de pequenos começos.”

É praticamente uma metodologia perfeita para modernização.

Não tente modernizar:

30 milhões de linhas

de uma vez.

Comece:

1 capability
1 fluxo
1 domínio
1 slice

Descubra.

Valide.

Execute.

Aprenda.

Atualize o mapa.

Depois avance.

small slice
↓
evidence
↓
deployment
↓
observation
↓
new evidence
↓
next slice

Sic Parvis Magna, versão z/OS.


25. Discovery não deve terminar numa enciclopédia

Outro erro comum:

Passamos nove meses criando:

4.000 páginas de documentação

Todos ficam felizes.

Seis meses depois:

20% já está desatualizado.

Discovery não existe para produzir a Wikipédia definitiva do mainframe.

Existe para permitir decisão.

Exemplo:

RETAIN
EXPOSE
REPLACE
RETIRE
REIMAGINE

26. RETAIN — não mexa no templo que está funcionando

Às vezes você descobre:

COBOL
estável
rápido
barato
confiável
bem testado

Então por que reescrever?

Modernização pode significar:

novo compiler
CI/CD
APIs
testes
observabilidade
Git
DevOps

mantendo o core.


27. EXPOSE — abra uma porta moderna

Imagine:

CICS → COBOL

que funciona há vinte anos.

Talvez a necessidade moderna seja:

Mobile
   ↓
REST API
   ↓
CICS
   ↓
COBOL

Você não precisa necessariamente destruir o castelo.

Talvez baste construir uma ponte.


28. REPLACE — troque o que realmente perdeu sentido

Existem partes que podem ser substituídas.

Exemplo:

relatório antigo
utility obsoleto
interface redundante

Mas a decisão deve nascer da descoberta.

Não do preconceito:

“É COBOL, portanto precisa morrer.”


29. RETIRE — finalmente aposente o fantasma

Discovery pode encontrar programas que:

não executam
não são chamados
não têm consumidores
não possuem valor

Ótimo candidato a aposentadoria.

Mas lembre:

not observed
≠
not needed

Cheque ciclos anuais, contingência e requisitos regulatórios.


30. REIMAGINE — não traduza o passado linha por linha

Aqui mora uma das maiores confusões de modernization.

Você pega:

COBOL

e traduz para:

Java

Parabéns.

Agora você pode ter:

um sistema COBOL escrito em Java.

As mesmas:

dependências
batch windows
control tables
arquivos
acoplamentos
processos

continuam lá.

Modernizar não é necessariamente trocar linguagem.

Reimaginar significa perguntar:

“Como essa capacidade deveria existir hoje?”

Isso pode gerar uma arquitetura completamente diferente.


31. Migration e modernization são parentes, não gêmeos

Migrar:

A → B

Modernizar:

A → algo melhor

Às vezes coincidem.

Às vezes não.

Você pode migrar sem modernizar.

Pode modernizar sem migrar.

E pode realizar uma migração tão ruim que termina com um sistema mais complexo do que antes.

Nathan Drake também sabe disso.

Nem todo caminho novo leva ao tesouro.

Alguns levam ao precipício.


32. Métricas que não impressionariam Sully

Evite celebrar apenas:

20 milhões de linhas escaneadas
50 milhões de tokens
900 diagramas gerados
10 mil páginas documentadas

Essas são métricas de atividade.

Pergunte:

Quantos riscos críticos fechamos?

Quantas decisões foram tomadas?

Quantas dependências foram confirmadas?

Quantos unknowns de alto impacto restam?

Quantas mudanças chegaram com segurança à produção?

Qual KPI melhorou?

Isso é resultado.


33. A aventura completa

No final, nosso mapa fica assim:

SOURCE
   ↓
STATIC ANALYSIS
   ↓
CONFIGURATION
   ↓
RUNTIME
   ↓
EVIDENCE
   ↓
AI
   ↓
INTERPRETATION
   ↓
HYPOTHESES
   ↓
VALIDATION
   ↓
RISK
   ↓
DECISION

E finalmente:

RETAIN
EXPOSE
REPLACE
RETIRE
REIMAGINE

Essa é uma metodologia muito mais saudável do que:

COBOL
 ↓
LLM
 ↓
Java
 ↓
PRODUCTION

Se alguém propuser exatamente esse último diagrama numa reunião, recomendo verificar se Sully já está preparando o avião para fugir.


Epílogo — o tesouro nunca esteve apenas no COBOL

O programador iniciante chega ao mainframe e pensa:

“Preciso aprender COBOL.”

Correto.

Depois descobre:

JCL

Depois:

Db2

Depois:

VSAM

Depois:

CICS

Depois:

IMS

Depois:

MQ

Depois:

scheduler

Depois:

RACF

Depois vê control tables, compiler options, PROCs, SMF, load libraries, binder, copybooks e pessoas que conhecem regras de 1993.

Nesse momento ele entende:

Mainframe não é uma linguagem. É um ecossistema.

E aplicações antigas são frequentemente organismos históricos.

Foram construídas em camadas.

Uma mudança em 1988.

Outra em 1994.

Um workaround em 1999.

Euro em 2002.

Regulatório em 2008.

Novo canal em 2013.

API em 2018.

Cloud em 2024.

IA em 2026.

Cada geração deixou alguma coisa no templo.

O trabalho da Inteligência Artificial não é fingir que conhece todas as câmaras escondidas.

É ajudar você a encontrá-las.

Ela pode ler inscrições numa velocidade impossível para uma equipe humana.

Pode conectar copybooks.

Pode explicar COBOL.

Pode comparar milhares de programas.

Pode gerar hipóteses.

Pode localizar padrões.

Pode transformar documentação ruim em algo utilizável.

Pode auxiliar na geração de testes.

Pode tornar discovery dramaticamente mais rápido.

Mas ainda precisamos perguntar:

De onde veio essa afirmação?

É fato?

É runtime?

É hipótese?

É unknown?

Qual o risco se estiver errada?

Essa é a diferença entre demonstração bonita e engenharia de modernização.

Portanto, quando alguém disser:

“Nossa IA analisou 100% do COBOL.”

Sorria.

Tome um gole de café.

Olhe para o horizonte como Nathan Drake olhando para mais uma cidade perdida.

E pergunte:

“Ótimo. Agora me mostre os CALLs dinâmicos, os overrides de JCL, as tabelas de controle, o histórico do scheduler, os consumidores dos arquivos, os packages Db2, o runtime e aquilo que ainda não sabemos.”

Se a sala ficar silenciosa...

parabéns.

Você acabou de encontrar a entrada da próxima ruína.

☕

E, lá no fundo do CPD, provavelmente existe uma placa antiga dizendo:

SIC PARVIS MAGNA

Grandeza a partir de pequenos começos.

Ou, em português de mainframe:

Não tente mapear o planeta inteiro antes de descobrir quem está alterando o DDNAME do STEP030.

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