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

segunda-feira, 28 de setembro de 2026

☕ ALAN TURING ENTRA NO CPD — O MAPA DOS AGENTES DE IA EXPLICADO POR UM MAINFRAMER

 


☕ UM CAFÉ NO BELLACOSA MAINFRAME

☕ ALAN TURING ENTRA NO CPD — O MAPA DOS AGENTES DE IA EXPLICADO POR UM MAINFRAMER

De currículo invisível, PF3 e SDSF até WLM, JES2, CICS, Db2, MQ e IMS — nove conversas sobre agentes de inteligência artificial que acabaram revelando que alguns dos problemas mais modernos da computação possuem parentes muito antigos.



🎬 PRÓLOGO — EU NÃO ESTAVA ESCREVENDO UMA SÉRIE

Existe uma coisa curiosa em escrever durante muitos anos.

Às vezes você pensa que está escrevendo artigos independentes.

Um assunto aparece.

Você investiga.

Escreve.

Publica.

Toma outro café.

Algumas semanas depois aparece outra pergunta.

Outro artigo.

Outro café.

Até que um dia você olha para trás e percebe:

Espere um pouco...

Esses textos estão conversando entre si.

Foi exatamente o que aconteceu com uma sequência de artigos que comecei a construir usando Alan Turing como nosso visitante imaginário dentro de um CPD.

No começo, a pergunta parecia relativamente simples:

Como devemos preparar pessoas para trabalhar com inteligência artificial?

Depois apareceu outra:

Como será a interface de um agente que não apenas responde, mas executa ações?

E outra:

Como descobriremos o que esse agente está fazendo?

Depois:

Quem decide qual agente é mais importante?

Quem coloca o trabalho para executar?

Como controlamos uma transação?

Onde guardamos o estado?

Como agentes conversam sem depender uns dos outros?

Como organizamos memória e contexto?

Quando percebi, Alan Turing já estava andando pelo corredor do CPD acompanhado de alguns velhos conhecidos:

ISPF
SDSF
WLM
JES2
CICS
Db2
MQ
IMS

E foi aí que apareceu a hipótese que une esta série inteira:

Talvez alguns dos problemas que estamos descobrindo agora nos agentes de IA sejam novos em implementação, escala e comportamento — mas não necessariamente novos como problemas de engenharia.

O mainframe passou décadas resolvendo problemas como:

IDENTIDADE
AUTORIZAÇÃO
EXECUÇÃO
PRIORIDADE
OBSERVABILIDADE
TRANSAÇÃO
ESTADO
MENSAGERIA
RECUPERAÇÃO
AUDITORIA
CONCORRÊNCIA
DEPENDÊNCIAS

Naturalmente:

JES2 não é um framework de agentes.

SDSF não é observabilidade de LLM.

WLM não é um scheduler de prompts.

CICS não é LangGraph.

Db2 não é memória de IA.

MQ não é protocolo mágico entre agentes.

IMS não foi inventado para armazenar a infância digital de um robô.

😂

A comparação é conceitual.

E justamente por isso ela é tão interessante.

Este artigo é o mapa dessa viagem.



🧠 CAPÍTULO 1 — O CURRÍCULO INVISÍVEL DA INTELIGÊNCIA ARTIFICIAL

Antes de construir o agente, precisamos construir quem vai trabalhar com ele

👉 ALAN TURING E O CURRÍCULO INVISÍVEL DA INTELIGÊNCIA ARTIFICIAL

Nossa viagem começa antes da arquitetura.

Começa nas pessoas.

Existe uma tentação enorme diante de qualquer revolução tecnológica:

NOVA TECNOLOGIA
      ↓
NOVO CURSO
      ↓
NOVA FERRAMENTA
      ↓
CERTIFICADO
      ↓
PRONTO

Mas nunca foi tão simples.

Quem viveu várias gerações da informática sabe disso.

Aprender COBOL não significava apenas conhecer:

MOVE
PERFORM
IF
EVALUATE

O programador acabava aprendendo silenciosamente muitas outras coisas:

  • decomposição de problemas;

  • leitura de documentação;

  • disciplina operacional;

  • análise de impacto;

  • debugging;

  • responsabilidade sobre dados;

  • relacionamento com usuários;

  • conhecimento do negócio;

  • avaliação de riscos.

Existe, portanto, um currículo formal e outro quase invisível.

Com IA acontece algo semelhante.

Prompt engineering pode ser útil.

Conhecer modelos também.

Mas trabalhar seriamente com IA começa a exigir algo muito maior:

IA
│
├── pensamento crítico
├── validação
├── segurança
├── privacidade
├── conhecimento de domínio
├── avaliação de resultados
├── automação
├── ética
├── governança
└── capacidade de perguntar

Este primeiro artigo estabelece o fundamento humano da série.

Antes de perguntar:

O que o agente pode fazer?

precisamos perguntar:

Quem saberá dizer se aquilo que ele fez está correto?

Esse detalhe acompanhará todos os capítulos seguintes.



🤖 CAPÍTULO 2 — A UX DOS AGENTES

Quando PF3 voltou para salvar a inteligência artificial

👉 ALAN TURING E A UX DOS AGENTES — QUANDO PF3, MAXCC E RACF VOLTARAM PARA SALVAR A INTELIGÊNCIA ARTIFICIAL

Então demos autonomia à máquina.

E imediatamente apareceu outro problema.

Um chatbot responde.

Um agente age.

Essa diferença parece pequena até colocarmos ferramentas nas mãos dele.

Imagine:

USUÁRIO
   ↓
OBJETIVO
   ↓
AGENTE
   ├── consulta arquivos
   ├── chama API
   ├── pesquisa banco
   ├── altera documento
   ├── envia mensagem
   └── executa processo

De repente a interface precisa responder perguntas que o velho chatbot não precisava responder:

O QUE ESTÁ FAZENDO?

POR QUE ESTÁ FAZENDO?

QUAL ETAPA ESTÁ EXECUTANDO?

POSSO PARAR?

POSSO DESFAZER?

QUEM AUTORIZOU?

O QUE JÁ FOI ALTERADO?

E eis que aparece nosso velho amigo:

PF3

O PF3 torna-se uma metáfora perfeita para interruptibilidade.

O artigo também traz RACF para a conversa por meio do princípio de menor privilégio.

Se um agente precisa ler relatórios:

READ

por que entregar:

ALTER
DELETE
CONTROL

?

Não entregue uma bazuca para matar um mosquito.

E jamais resolva problemas de autorização usando a filosofia:

DÊ ACESSO A TUDO
       ↓
DEPOIS A GENTE VÊ

Quatro décadas de segurança corporativa já ensinaram como essa história termina.

O capítulo estabelece uma nova regra:

Autonomia sem controle não é sofisticação. É risco operacional.



🔭 CAPÍTULO 3 — O SDSF DOS AGENTES

Não basta o robô trabalhar. Precisamos enxergar o que está acontecendo.

👉 ALAN TURING E O SDSF DOS AGENTES — O QUE DIABOS O ROBÔ ESTÁ FAZENDO?

Agora o agente está trabalhando.

Maravilha.

Só existe uma pequena pergunta:

O que ele está fazendo?

Quem trabalhou com batch conhece uma rotina quase instintiva:

SUBMIT
  ↓
SDSF
  ↓
ST
  ↓
JOB
  ↓
OUTPUT

Não ficamos olhando para o terminal durante quinze minutos vendo:

Working...

Queremos estado.

Queremos evidência.

Queremos saber onde o processamento está.

A documentação da IBM confirma exatamente essa função histórica do SDSF: monitorar e controlar processamento, visualizar jobs e seus outputs e permitir ações como hold, release e cancel.

Transportando o princípio para agentes:

AGENTE FINANCEIRO

OBJETIVO:
Consolidar relatório mensal

STATUS:
Executando

ETAPA 1 — localizar arquivos       OK
ETAPA 2 — validar período          OK
ETAPA 3 — consultar Db2            OK
ETAPA 4 — reconciliar valores      RUNNING
ETAPA 5 — gerar relatório          WAITING
ETAPA 6 — enviar relatório         APPROVAL

Esse talvez seja um dos conceitos mais importantes da série.

Autonomia aumenta a necessidade de observabilidade.

Quanto menos diretamente o humano controla cada passo, mais importante se torna enxergar o estado da execução.



⚖️ CAPÍTULO 4 — O WLM DOS AGENTES

Quando descobrimos que nem todo trabalho possui a mesma importância

👉 ALAN TURING E O WLM DOS AGENTES

Agora temos outro problema.

Imagine mil agentes querendo trabalhar simultaneamente.

Um está:

resumindo newsletter

Outro:

processando fraude bancária

Outro:

gerando imagem

Outro:

atendendo cliente VIP

Outro:

fechando folha de pagamento

Todos deveriam receber os mesmos recursos?

Evidentemente não.

Bem-vindo ao velho problema de workload management.

No z/OS, WLM trabalha justamente com classes de serviço, metas de desempenho e importância relativa do trabalho. Quando todos os objetivos não podem ser satisfeitos simultaneamente, essa importância participa das decisões de gerenciamento dos recursos.

Nos agentes podemos imaginar:

AGENT WORKLOAD
│
├── CRITICAL
│   └── fraude
│
├── HIGH
│   └── atendimento
│
├── NORMAL
│   └── relatórios
│
└── DISCRETIONARY
    └── indexação histórica

E aparece outra ideia fundamental:

Agentes competirão por recursos.

Tokens custam.

GPU custa.

CPU custa.

APIs possuem limites.

Bancos possuem capacidade.

Pessoas disponíveis para aprovação humana também são um recurso limitado.

O problema deixa de ser:

O agente consegue executar?

e passa a ser:

Qual trabalho merece recursos primeiro?

Alan Turing acaba de conhecer o WLM.



🏭 CAPÍTULO 5 — O JES2 DOS AGENTES

Alguém precisa receber, organizar e despachar o trabalho

👉 ALAN TURING E O JES2 DOS AGENTES

Temos prioridades.

Temos recursos.

Temos agentes.

Agora alguém precisa organizar a bagunça.

No mundo batch, JES recebe jobs, mantém trabalhos em filas, encaminha jobs para execução e administra seus outputs. É exatamente assim que a própria documentação introdutória do z/OS descreve suas funções fundamentais.

Conceitualmente:

SUBMISSÃO
    ↓
  FILA
    ↓
CLASSIFICAÇÃO
    ↓
DESPACHO
    ↓
EXECUÇÃO
    ↓
 RESULTADO

Agora substitua JOB por TASK:

TASK-8472
OBJETIVO = analisar contratos
PRIORIDADE = HIGH
AGENTE = LEGAL-07
STATUS = WAITING

Começamos a perceber que um ecossistema corporativo de agentes precisará responder:

Quem recebeu a tarefa?

Onde ela está?

Quem executará?

Está esperando?

Está rodando?

Falhou?

Pode reiniciar?

Existe dependência?

Qual resultado produziu?

Não significa transformar JES2 em orquestrador de LLM.

Significa reconhecer que gerenciamento do ciclo de vida do trabalho é um problema antigo.


⚡ CAPÍTULO 6 — O CICS DOS AGENTES

Quando inteligência encontra transação

👉 ALAN TURING E O CICS DOS AGENTES

Até aqui nossos agentes estavam realizando trabalho.

Mas empresas não vivem apenas de trabalho.

Vivem de transações.

Comprar.

Vender.

Reservar.

Cancelar.

Transferir.

Atualizar.

Consultar.

Registrar.

CICS existe justamente no universo de processamento transacional. Uma transação dispara programas associados, pode envolver diversos programas e recursos, e muitas instâncias podem executar concorrentemente.

Agora imagine um agente recebendo:

Resolva o problema deste cliente.

Ele talvez precise:

CONSULTAR PEDIDO
      ↓
CONSULTAR PAGAMENTO
      ↓
VALIDAR ENTREGA
      ↓
CALCULAR CRÉDITO
      ↓
ATUALIZAR CADASTRO

Não estamos mais falando apenas de linguagem.

Estamos mexendo no estado real do negócio.

Aqui surge uma fronteira essencial:

PENSAR
≠
AGIR

e:

GERAR UMA RESPOSTA
≠
EXECUTAR UMA TRANSAÇÃO

Quando um agente atravessa essa fronteira, entram em cena concorrência, integridade, autorização, recuperação e consistência.

O simpático chatbot acabou de entrar em produção.

Agora a brincadeira ficou séria.


🗄️ CAPÍTULO 7 — O DB2 DOS AGENTES

Quando o agente descobriu que memória também precisa de COMMIT

👉 ALAN TURING E O DB2 DOS AGENTES

Um agente sem estado vive eternamente no presente.

Para realizar trabalhos complexos ele precisa guardar coisas.

Por exemplo:

objetivos
tarefas
resultados
aprovações
clientes
documentos
eventos
checkpoints
estado do workflow

Mas guardar informação introduz um problema:

Quando uma mudança se torna definitiva?

O velho Db2 imediatamente levanta a mão.

No Db2, uma unidade de trabalho representa uma sequência recuperável de operações; COMMIT confirma as mudanças e ROLLBACK pode desfazer alterações ainda não confirmadas.

Isso produz uma analogia poderosa para agentes.

Imagine:

LER
 ↓
ANALISAR
 ↓
PROPOR ALTERAÇÃO
 ↓
VALIDAR
 ↓
APROVAÇÃO
 ↓
COMMIT

Se algo falhar:

ROLLBACK

Mas existe uma pegadinha deliciosa.

Nem tudo no mundo possui rollback.

Se o agente:

ENVIAR EMAIL

não existe:

ROLLBACK EMAIL

que retire a mensagem da cabeça de quem leu.

😂

Portanto sistemas de agentes precisam distinguir ações reversíveis de ações irreversíveis.

O Db2 nos ensina algo maior que SQL:

Estado precisa possuir fronteiras de consistência.


📨 CAPÍTULO 8 — O MQ DOS AGENTES

Mensagem enviada não significa destinatário disponível

👉 ALAN TURING E O MQ DOS AGENTES — MENSAGEM ENVIADA NÃO SIGNIFICA CONVERSA SÍNCRONA

Então nossos agentes começaram a conversar.

E imediatamente alguém inventou:

AGENTE A
   ↓
AGENTE B
   ↓
AGENTE C

Parece maravilhoso.

Até o agente B ficar indisponível.

Ou lento.

Ou ocupado.

Ou reiniciar.

Ou o agente C morar em outro ambiente.

É exatamente aqui que décadas de mensageria corporativa começam a parecer extremamente atuais.

IBM MQ permite que aplicações se comuniquem através de mensagens e filas, inclusive executando em momentos, velocidades e locais diferentes. Produtor e consumidor podem ficar desacoplados.

Portanto:

AGENTE A
   ↓
 MENSAGEM
   ↓
  FILA
   ↓
AGENTE B

A existência da fila muda completamente a arquitetura.

O produtor não precisa necessariamente ficar parado olhando para o consumidor.

Podemos construir sistemas:

ASSÍNCRONOS
RESILIENTES
DESACOPLADOS
DISTRIBUÍDOS

Mas surgem novos problemas:

ordenação
duplicidade
correlação
persistência
retry
dead letter
idempotência
timeout

A IBM também documenta que filas mantêm mensagens até que aplicações possam recuperá-las e que consumidores e produtores podem operar desacoplados.

De repente, multiagentes deixam de parecer uma reunião de robôs conversando.

Começam a parecer...

sistemas distribuídos.

Bem-vindo ao inferno.

Tem café na entrada.


🌳 CAPÍTULO 9 — O IMS DOS AGENTES

Quando Alan Turing descobriu que encontrar um filho é fácil se você souber quem é o pai

👉 ALAN TURING E O IMS DOS AGENTES — QUANDO O MUNDO VIROU UMA ÁRVORE

Finalmente chegamos ao IMS.

E aparece uma pergunta fascinante:

Toda memória precisa ser representada como tabela?

Não.

IMS trabalha historicamente com modelo hierárquico.

Temos relações:

ROOT
 │
 ├── CHILD
 │     ├── CHILD
 │     └── CHILD
 │
 └── CHILD

Na terminologia oficial do IMS, segmentos possuem relações parent/child; um segmento pode inclusive ser filho de um segmento e pai de outro.

Isso oferece uma metáfora extraordinariamente útil para determinados tipos de contexto de agentes.

Imagine:

CLIENTE
│
├── PEDIDOS
│   ├── PEDIDO 8472
│   │   ├── ITENS
│   │   ├── PAGAMENTO
│   │   └── ENTREGA
│   └── PEDIDO 9011
│
├── CONTRATOS
│
└── ATENDIMENTOS

Contexto frequentemente possui relações naturais.

A própria IBM explica uma diferença fundamental: numa base hierárquica IMS, segmentos ao longo de um caminho hierárquico já possuem relações implícitas com pais e filhos, enquanto no modelo relacional relacionamentos normalmente são construídos explicitamente por joins.

Isso não significa:

Vamos substituir vector databases por IMS!

Calma.

😂

A lição é mais interessante:

A forma como representamos conhecimento influencia profundamente a maneira como conseguimos navegar por ele.

E assim chegamos da execução à memória.


🗺️ CAPÍTULO 10 — AGORA OLHE PARA O MAPA INTEIRO

Depois dos nove artigos, podemos finalmente enxergar a arquitetura escondida.

┌───────────────────────────────────────┐
│       CURRÍCULO INVISÍVEL             │
│ Quem está preparado para trabalhar?   │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│          UX / PF3 / RACF              │
│ Como controlar autonomia?             │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│               SDSF                    │
│ O que está acontecendo?               │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│                WLM                    │
│ Qual trabalho é mais importante?      │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│               JES2                    │
│ Quem recebe e despacha o trabalho?    │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│               CICS                    │
│ Como executar ações de negócio?       │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│               Db2                     │
│ Como manter estado consistente?       │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│                MQ                     │
│ Como componentes conversam?           │
└──────────────────┬────────────────────┘
                   ↓
┌───────────────────────────────────────┐
│               IMS                     │
│ Como organizar e navegar contexto?    │
└───────────────────────────────────────┘

Agora a série revela algo que talvez não estivesse completamente evidente quando escrevemos o primeiro artigo.

Não estamos mais discutindo simplesmente:

INTELIGÊNCIA ARTIFICIAL

Estamos discutindo:

SISTEMAS DE INTELIGÊNCIA ARTIFICIAL

Essa diferença é gigantesca.


🧩 CAPÍTULO 11 — O AGENTE DEIXOU DE SER O CENTRO

Durante algum tempo olhamos para IA assim:

PROMPT
  ↓
LLM
  ↓
RESPOSTA

Só que um sistema corporativo real começa a parecer muito mais com:

                    USUÁRIO
                       │
                       ↓
                   OBJETIVO
                       │
                       ↓
                 ORQUESTRADOR
                       │
        ┌──────────────┼──────────────┐
        ↓              ↓              ↓
     AGENTE A       AGENTE B       AGENTE C
        │              │              │
        └──────────────┼──────────────┘
                       ↓
                    TOOLS
        ┌──────────────┼──────────────┐
        ↓              ↓              ↓
       DB             MQ             API
        │
        ↓
      ESTADO

E ao redor disso precisamos:

IDENTIDADE
AUTORIZAÇÃO
OBSERVABILIDADE
AUDITORIA
PRIORIZAÇÃO
RECUPERAÇÃO
LIMITES
CHECKPOINTS
APROVAÇÕES
MENSAGERIA
TRANSAÇÕES

O LLM continua importante.

Mas ele passa a ser um componente da arquitetura.

Essa talvez seja a evolução mais importante de toda a série.


🧙 CAPÍTULO 12 — TURING FAZ A PERGUNTA ERRADA

Alan Turing olha para nosso jovem programador COBOL.

E pergunta:

— Então finalmente construímos uma máquina que pensa?

O programador olha para o CPD.

Olha para:

SDSF
WLM
JES2
CICS
DB2
MQ
IMS

Depois olha para o pequeno agente trabalhando no terminal.

E responde:

— Não sei.

Turing fica surpreso.

— Depois de tudo isso?

— Talvez a pergunta tenha mudado.

— Como assim?

O programador pega uma caneta.

E escreve no quadro:

CAN MACHINES THINK?

Risca.

Embaixo escreve:

CAN MACHINES WORK
SAFELY,
RELIABLY,
OBSERVABLY
AND
RESPONSIBLY?

Turing olha.

Sorri.


🦖 CAPÍTULO 13 — O MAINFRAME NÃO PREVIU A IA

E precisamos deixar uma coisa muito clara.

O mainframe não previu os LLMs.

JES2 não é ancestral tecnológico direto de agentes.

WLM não administra pensamentos.

CICS não executa raciocínio.

Db2 não possui consciência.

MQ não faz robôs fofinhos conversarem.

IMS não é cérebro artificial.

O valor da comparação está em outro lugar.

Durante décadas sistemas corporativos precisaram responder:

Quem pode executar?

O que pode executar?

Quando executará?

Com qual prioridade?

Sobre quais recursos?

Como sabemos que terminou?

O que acontece quando falha?

Como desfazemos mudanças?

Como componentes se comunicam?

Como reconstruímos o que aconteceu?

Essas perguntas reaparecem quando agentes deixam o laboratório e começam a operar sistemas reais.

Não copiamos a solução.

Reaproveitamos o conhecimento de engenharia.


🥚 EASTER EGG — O PROGRAMA QUE JÁ ESTAVA RODANDO

Turing caminha até o último terminal do CPD.

Na tela existe apenas:

READY

Ele digita:

WHO

A máquina responde:

TURING

Ele pergunta:

STATUS

Resposta:

ACTIVE

Turing sorri.

— Interessante.

O programador COBOL pergunta:

— O quê?

— Passamos nove capítulos tentando descobrir como controlar agentes inteligentes.

— Sim.

Turing aponta para o CPD.

— E vocês passaram cinquenta anos construindo sistemas para controlar humanos, programas, jobs, transações e mensagens.

Silêncio.

O operador do outro lado da sala grita:

— JOB ABENDOU!

Turing pergunta:

— S0C7?

— S0C7!

Turing pega seu café.

— Algumas coisas realmente nunca mudam.

😂


☕ EPÍLOGO — TALVEZ O FUTURO TENHA CHEIRO DE CPD

Existe uma tendência natural na tecnologia de acreditar que tudo começou ontem.

Cada nova geração cria novas palavras.

Novos frameworks.

Novos diagramas.

Novas abstrações.

E muitas delas realmente representam avanços extraordinários.

Mas engenharia também possui memória.

Quando vejo agentes de IA discutindo:

orchestration
observability
workload
state
messaging
transactions
authorization
checkpoints
recovery

é impossível para quem viveu mainframe não sentir um estranho déjà-vu.

Não porque sejam as mesmas tecnologias.

Não são.

Mas porque computadores continuam enfrentando alguns problemas fundamentais:

TRABALHO PRECISA SER ORGANIZADO.

RECURSOS SÃO FINITOS.

ESTADO PRECISA SER PROTEGIDO.

FALHAS ACONTECEM.

MENSAGENS SE PERDEM.

SISTEMAS FICAM INDISPONÍVEIS.

USUÁRIOS COMETEM ERROS.

PROGRAMAS COMETEM ERROS.

AUTOMAÇÃO AMPLIFICA ERROS.

E agora acrescentamos uma criatura nova:

AGENTES PODEM ESCOLHER A PRÓXIMA AÇÃO.

Isso muda muita coisa.

Mas não apaga setenta anos de engenharia de sistemas.

Talvez faça justamente o contrário.

Torne esse conhecimento ainda mais valioso.

Por isso esta série não é apenas sobre Alan Turing.

Não é apenas sobre mainframe.

E nem sequer é apenas sobre inteligência artificial.

É sobre algo muito mais antigo:

COMO CONSTRUÍMOS SISTEMAS NOS QUAIS PODEMOS CONFIAR?

Começamos ensinando pessoas.

Depois demos autonomia à máquina.

Criamos formas de observá-la.

Priorizamos seu trabalho.

Organizamos suas filas.

Controlamos suas transações.

Protegemos seu estado.

Permitimos que conversasse com outros sistemas.

Finalmente começamos a organizar sua memória.

E talvez este seja apenas o começo.

Porque no fundo do CPD existe uma porta.

Turing acabou de encontrá-la.

Na porta existe uma pequena placa:

AGENTS
AUTHORIZED PERSONNEL ONLY

Ele olha para nós.

— Vamos?

O programador COBOL suspira.

Salva tudo.

Confere o spool.

E responde:

— Só depois do café.

☕

Bellacosa Mainframe

☕ UM CAFÉ NO BELLACOSA MAINFRAME

🤖 Alan Turing entra no CPD

O mapa dos agentes de IA explicado por um mainframer

Esta série acompanha a evolução de uma ideia: compreender os problemas modernos dos agentes de inteligência artificial usando conceitos conhecidos por quem trabalha com mainframe, IBM Z e sistemas corporativos.

A viagem começa pelas pessoas e pela experiência de uso, passa por observabilidade, priorização e execução, chega às transações, estado e mensageria e termina na organização hierárquica do contexto.

01
FEV / 2023

🧠 O currículo invisível da inteligência artificial

Antes de construir agentes inteligentes precisamos preparar as pessoas que trabalharão com eles. Técnica, pensamento crítico, conhecimento de negócio, segurança, ética e responsabilidade formam o currículo que nem sempre aparece no certificado.

02
MAR / 2023

🤖 A UX dos agentes

Quando uma IA deixa de apenas responder e começa a executar ações, sua interface precisa mostrar objetivos, progresso, permissões e resultados. PF3, MAXCC e RACF tornam-se excelentes analogias para controle, retorno e privilégio mínimo.

04
MAI / 2023

⚖️ O WLM dos agentes

CPU, GPU, tokens, APIs e bancos de dados são recursos finitos. O Workload Manager inspira uma discussão sobre prioridades, objetivos de serviço, importância do trabalho e distribuição dinâmica de recursos entre agentes.

06
JUL / 2023

⚡ O CICS dos agentes

Uma coisa é uma IA produzir texto. Outra é permitir que ela execute operações reais de negócio. CICS introduz a conversa sobre processamento transacional, concorrência, segurança e integridade.

07
AGO / 2023

🗄️ O Db2 dos agentes

Agentes precisam manter estado, checkpoints, decisões e resultados. O Db2 fornece o ponto de partida para discutir unidade de trabalho, consistência, COMMIT, ROLLBACK e recuperação.

10
SET / 2026

☕ Alan Turing entra no CPD — O mapa completo

O artigo-âncora reúne toda a evolução da ideia: pessoas, UX, observabilidade, prioridade, orquestração, transações, estado, mensageria e contexto transformam artigos independentes em uma arquitetura conceitual para agentes de IA.

🖥️ Leitor da série

Selecione qualquer capítulo acima para abri-lo normalmente. O painel abaixo é apenas um recurso adicional de navegação.

quinta-feira, 16 de julho de 2026

🚀 Quer Começar uma Carreira em IBM Mainframe? Estes Cursos Gratuitos São o Melhor Ponto de Partida

 

Bellacosa Mainframe inicie sua carreira em ibm mainframe tudo gratuito

☕ Um Café no Bellacosa Mainframe

🚀 Quer Começar uma Carreira em IBM Mainframe? Estes Cursos Gratuitos São o Melhor Ponto de Partida

Durante muitos anos, aprender Mainframe significava ter acesso a um IBM Z físico ou trabalhar em uma grande empresa. Hoje esse cenário mudou completamente. A IBM e sua comunidade disponibilizam uma excelente coleção de cursos gratuitos, laboratórios práticos e trilhas de aprendizado que permitem a qualquer pessoa iniciar uma carreira em uma das áreas mais estáveis e valorizadas da Tecnologia da Informação.

Se você é um Programador COBOL Padawan, considere esta lista como sua Academia da Frota Estelar. Antes de assumir o controle da USS Enterprise (ou de um IBM Z), é preciso dominar os fundamentos.


🖖 1. IBM Z Mainframe Skills Depot (A Academia Oficial da IBM)

O melhor ponto de partida para quem deseja aprender Mainframe.

A plataforma reúne centenas de horas de treinamento organizadas por trilhas de carreira, incluindo:

  • COBOL

  • JCL

  • Db2

  • CICS

  • IMS

  • VSAM

  • RACF

  • z/OS

  • DevOps

  • Segurança

  • Modernização

  • Linux on IBM Z

👉 IBM Z Mainframe Skills Depot


🎮 2. IBM Z Xplore

Aprender jogando.

O IBM Z Xplore transforma o aprendizado em desafios práticos. Você resolve missões reais, ganha badges digitais e aprende utilizando um ambiente IBM Z.

Ideal para quem nunca teve contato com Mainframe.

Você encontrará desafios envolvendo:

  • COBOL

  • JCL

  • TSO/ISPF

  • USS

  • Python

  • Db2

  • VS Code

  • Linux on Z

👉 IBM Z Xplore

Neste poste conheça mais detalhes 

https://eljefemidnightlunch.blogspot.com/2026/04/zxplore-o-tso-gamificado-da-nova.html


💻 3. Learning COBOL Programming with VS Code

Um dos melhores cursos gratuitos para iniciantes.

Ao invés de começar diretamente na tradicional tela verde, você aprende COBOL utilizando o Visual Studio Code e ferramentas modernas.

Conteúdo:

  • Introdução ao COBOL

  • Variáveis

  • IF

  • PERFORM

  • Arquivos

  • Estruturas de dados

  • Desenvolvimento moderno

👉 Learning COBOL Programming with VS Code


🎓 4. IBM Training

O portal oficial de treinamento da IBM reúne centenas de cursos gratuitos e pagos sobre IBM Z, LinuxONE, automação, segurança, IA e diversas tecnologias corporativas.

👉 IBM Training


🌎 5. IBM SkillsBuild

Excelente plataforma para desenvolver competências em tecnologia.

Além de Mainframe, oferece cursos de:

  • Computação em Nuvem

  • Inteligência Artificial

  • Segurança

  • Programação

  • Dados

  • Soft Skills

Tudo isso ajuda a formar um profissional completo.

👉 IBM SkillsBuild


⚙️ 6. IBM Developer

Portal com artigos, tutoriais, exemplos de código, projetos e conteúdos produzidos por especialistas da IBM.

Ideal para aprofundar os estudos depois dos cursos básicos.

👉 IBM Developer


📚 7. Open Mainframe Project

Uma excelente fonte para conhecer o ecossistema open source voltado ao IBM Z.

Você encontrará projetos como:

  • Zowe

  • Feilong

  • COBOL Programming Course

  • Modernização

  • DevOps

👉 Open Mainframe Project


🧑‍💻 8. IBM Redbooks

Os famosos "livros vermelhos" da IBM.

São referências técnicas escritas por especialistas e cobrem praticamente todos os assuntos relacionados ao IBM Z.

👉 IBM Redbooks


🚀 Roteiro recomendado para iniciar

Não tente aprender tudo de uma vez. Uma sequência eficiente é:

  1. Conceitos de Mainframe e z/OS

  2. COBOL

  3. JCL

  4. VSAM e QSAM

  5. SQL e Db2

  6. CICS

  7. IMS

  8. TSO/ISPF

  9. REXX

  10. RACF

  11. Git e DevOps para IBM Z

  12. APIs e Modernização (z/OS Connect, REST)

  13. Ansible, Zowe e automação

  14. IA aplicada ao IBM Z


💡 Dicas para o Programador COBOL Padawan

  • Não estude apenas COBOL: o ecossistema Mainframe é composto por diversas tecnologias que trabalham em conjunto.

  • Faça os laboratórios sempre que possível; a prática acelera o aprendizado.

  • Conquiste badges e certificados para enriquecer seu currículo e perfil no LinkedIn.

  • Participe de comunidades, eventos e programas como IBM Z Day e IBM TechXchange.

  • Compartilhe seus projetos e aprendizados. Ensinar também é uma excelente forma de consolidar conhecimento.


🖖 Mensagem Final

Na USS Enterprise, o conhecimento era a ferramenta mais valiosa da tripulação. No universo IBM Z, a lógica, a disciplina e o aprendizado contínuo desempenham o mesmo papel. Com tantos recursos gratuitos disponíveis hoje, nunca foi tão acessível iniciar uma carreira em Mainframe. O importante é começar, evoluir um passo de cada vez e transformar curiosidade em experiência prática.

Como diria o Sr. Spock:

"A lógica é o começo da sabedoria, não o fim."

Que sua jornada no universo IBM Mainframe seja longa, próspera e repleta de novos conhecimentos. 🖖

sábado, 4 de julho de 2026

Projeto IBM - MSA 2025/2026

 ,

Bellacosa Mainframe conclui o programa IBM MSA 2025

Hoje encerro um ciclo muito especial da minha carreira como instrutor do MSA 2025/2026 (Mainframe Skills Academy).

Durante essa jornada, tive a honra de conduzir mais de 30 encontros, totalizando aproximadamente 50 horas de treinamento, além da produção de vídeos, laboratórios e materiais de apoio voltados à formação de profissionais em IBM Mainframe, com foco em System Programmers (SysProg) e System Administrators (SysAdmin).

Mais do que transmitir conhecimento, foi uma oportunidade de compartilhar experiências construídas ao longo de anos trabalhando com o ecossistema IBM Z e, ao mesmo tempo, aprender com o entusiasmo, a dedicação e as perguntas de cada participante.

Meus parabéns a todos os alunos que concluíram essa jornada. A evolução demonstrada ao longo do programa confirma que o Mainframe continua formando profissionais altamente qualificados para sustentar os sistemas mais críticos do mundo.

Também deixo meu reconhecimento aos organizadores, coordenadores, empresas parceiras e a todos os profissionais que trabalharam nos bastidores para tornar este projeto uma realidade. O sucesso do programa é resultado do esforço coletivo de muitas pessoas comprometidas com a formação de novos talentos.

Um agradecimento especial à IBM pela confiança, pelo convite para atuar como instrutor e pela oportunidade de contribuir com uma iniciativa que fortalece o ecossistema IBM Z e investe no crescimento profissional da comunidade técnica.

Foi uma grande satisfação fazer parte deste projeto.

Que esta seja apenas mais uma etapa de uma longa jornada de aprendizado, inovação e colaboração.

Parabéns a todos os envolvidos!

#IBM #IBMZ #IBMMainframe #Mainframe #SystemProgrammer #SysProg #SysAdmin #zOS #z17 #CICS #DB2 #IMS #JCL #COBOL #RACF #JES2 #TSO #ISPF #Automation #MainframeModernization #Infrastructure #EnterpriseComputing #BellacosaMainframe #MSA

Novo artigo no LinkedIn

Conclusão da formação MSA 2025/2026 em IBM Mainframe. Uma jornada dedicada à formação de SysProgs e SysAdmins.

quinta-feira, 2 de julho de 2026

Dos Cartões Perfurados ao Enterprise COBOL: A Evolução do STOP RUN e do GOBACK

 

Bellacosa Mainframe e as diferencas entre o goback e o stop run


Dos Cartões Perfurados ao Enterprise COBOL: A Evolução do STOP RUN e do GOBACK

Essa é uma excelente pergunta, e a resposta curta é:

Hoje, em projetos modernos de Enterprise COBOL para z/OS, a IBM e a maioria das empresas recomendam usar GOBACK em vez de STOP RUN. Não é apenas modismo; existem razões técnicas, arquiteturais e de reutilização do ambiente de execução (Language Environment). (IBM)

Vamos analisar como um arquiteto de Mainframe faria.


A origem do STOP RUN

Quando COBOL surgiu na década de 1960, praticamente todos os programas eram executados diretamente pelo sistema operacional.

O fluxo era simples:

JCL
 │
 ▼
Programa COBOL
 │
STOP RUN
 │
 ▼
MVS

Naquela época:

  • não existiam APIs REST;

  • não existiam aplicações reutilizáveis;

  • praticamente não existiam subprogramas complexos;

  • o programa começava e terminava.

O STOP RUN fazia exatamente isso:

"Acabei. Pode encerrar tudo."


O surgimento do GOBACK

Com o crescimento dos sistemas apareceram:

  • subprogramas

  • bibliotecas

  • módulos reutilizáveis

  • CICS

  • IMS

  • DB2

  • Language Environment (LE)

Agora um programa não era mais necessariamente o "programa principal".

Exemplo:

JCL

  MAIN01

     │

 CALL CLIENTE

     │

 CALL CALCJURO

     │

 CALL VALIDA

Imagine se CALCJURO executasse:

STOP RUN

O que aconteceria?

Toda a aplicação terminaria imediatamente.

Não apenas o módulo.

Todo o Run Unit.

É exatamente isso que a IBM documenta. STOP RUN termina toda a Run Unit; já GOBACK retorna ao chamador quando usado em um programa chamado. (IBM)


A grande diferença

STOP RUN

Programa

↓

encerra TODA a Run Unit

↓

retorna ao sistema operacional

GOBACK

Programa

↓

retorna para quem chamou

↓

continua a execução

Se o programa for o principal:

GOBACK

↓

faz praticamente o mesmo trabalho do STOP RUN

A IBM afirma isso explicitamente:

Em um programa principal, GOBACK funciona como STOP RUN. Em um subprograma, GOBACK funciona como EXIT PROGRAM. (IBM)


Exemplo prático

Programa principal

MAIN
CALL "A"

DISPLAY "FIM"

STOP RUN

Programa A

DISPLAY "A"

STOP RUN

Resultado

A

O DISPLAY "FIM"

nunca acontece.


Agora usando GOBACK

Programa A

DISPLAY "A"

GOBACK

Resultado

A

FIM

Porque voltou para o MAIN.


Então por que muitas empresas proíbem STOP RUN?

Não porque ele esteja errado.

Mas porque ele cria risco.

Imagine um programa hoje.

Batch

↓

Framework

↓

Biblioteca

↓

Serviço

↓

Seu Programa

Você nem sempre sabe quem chamou seu módulo.

Se usar

STOP RUN

você encerra toda a aplicação.

Se usar

GOBACK

o programa simplesmente devolve o controle.

Muito mais seguro.


O princípio da reutilização

Hoje escrevemos programas para serem reutilizados.

Um módulo pode ser chamado por:

  • Batch

  • CICS

  • IMS

  • API REST

  • MQ

  • Java

  • z/OS Connect

  • outro COBOL

O módulo não deve assumir que é o "dono" da aplicação.

Ele apenas faz seu trabalho.

Depois devolve o controle.

Isso é exatamente o comportamento do GOBACK.


O impacto no Language Environment (LE)

Aqui está uma das razões mais importantes.

O Enterprise COBOL roda sobre o Language Environment (LE).

O LE controla:

  • memória

  • pilha

  • heap

  • tratamento de exceções

  • inicialização

  • reutilização do runtime

Quando ocorre

STOP RUN

o LE encerra o Run Unit.

Quando ocorre

GOBACK

ele apenas retorna ao chamador.

Isso permite reutilizar o ambiente de execução em muitos cenários. (IBM)


O caso do RTEREUS

Pouca gente conhece essa opção.

Existe um parâmetro do LE chamado

RTEREUS

(Runtime Reuse)

Ele permite reutilizar o ambiente de execução COBOL.

A IBM afirma claramente:

Para obter os benefícios do RTEREUS, substitua STOP RUN por GOBACK. STOP RUN encerra o ambiente reutilizável. (IBM)

Ou seja:

STOP RUN

↓

destrói o ambiente

↓

novo ambiente precisa ser criado

Enquanto

GOBACK

↓

reutiliza o ambiente

↓

menos overhead

Performance

O ganho normalmente não é enorme em um programa isolado.

Mas imagine milhares de execuções por minuto.

1000 programas

↓

cada um recria o Runtime

↓

mais CPU

Com reutilização:

Runtime permanece ativo

↓

menos inicialização

↓

menos CPU

É exatamente por isso que grandes bancos adotam GOBACK como padrão.


E no CICS?

No CICS normalmente termina-se com

EXEC CICS RETURN

e não com

STOP RUN

porque quem controla a aplicação é o CICS.

O mesmo raciocínio vale para IMS.

O programa devolve o controle ao ambiente.

Não encerra a Run Unit.


Um exemplo interessante: DFSORT

A IBM é ainda mais direta na documentação de user exits do DFSORT:

User exits escritos em COBOL não devem usar STOP RUN. Para retornar ao DFSORT, use GOBACK. (IBM)

Ou seja,

STOP RUN

↓

encerra tudo

↓

ERRADO
GOBACK

↓

retorna ao DFSORT

↓

CORRETO

Existe recomendação oficial da IBM?

Sim.

A documentação oficial afirma que:

  • em programas principais, GOBACK tem o mesmo efeito de STOP RUN;

  • em subprogramas, GOBACK retorna ao chamador, enquanto STOP RUN termina toda a Run Unit. (IBM)

Além disso, para ambientes reutilizáveis (RTEREUS), a IBM recomenda trocar STOP RUN por GOBACK. (IBM)

Documentação oficial da IBM:

Minha recomendação para um COBOL Padawan

Se você está desenvolvendo em Enterprise COBOL moderno, adote esta regra simples:

SituaçãoRecomendação
Programa Batch principalGOBACK
Subprograma (CALL)GOBACK
Biblioteca reutilizávelGOBACK
Módulo chamado por Java, CICS, IMS ou APIsGOBACK
Novo desenvolvimentoGOBACK como padrão

Na prática, GOBACK é um superconjunto de STOP RUN: ele faz o papel de STOP RUN quando está no programa principal e o de EXIT PROGRAM quando está em um programa chamado. Isso reduz riscos, melhora a reutilização do runtime e torna o código mais flexível para arquiteturas modernas. Por esse conjunto de vantagens, a preferência atual por GOBACK é muito mais uma decisão de engenharia do que um simples modismo.

Design Patterns no COBOL Mainframe Os Padrões que os Grandes Programadores Sempre Usaram (Mesmo Antes de Eles Receberem um Nome)

 

Bellacosa Mainframe e os design pattern em cobol mainframe

☕ Um Café no Bellacosa Mainframe

Design Patterns no COBOL Mainframe

Os Padrões que os Grandes Programadores Sempre Usaram (Mesmo Antes de Eles Receberem um Nome)

"Todo programador COBOL iniciante acredita que um bom sistema nasce de um bom código. O programador experiente sabe que um bom sistema nasce de boas decisões de arquitetura."

Existe uma curiosidade fascinante na história da computação.

Quando ouvimos falar em Design Patterns, quase todo mundo lembra imediatamente do famoso livro Design Patterns: Elements of Reusable Object-Oriented Software, publicado em 1994 pelo famoso Gang of Four (GoF).

Muitos acreditam que os padrões nasceram ali.

Mas isso não é verdade.

Na realidade, os profissionais de Mainframe utilizavam padrões muito antes de eles receberem nomes elegantes.

Os sistemas bancários dos anos 70, 80 e 90 já possuíam separação de responsabilidades, reutilização de código, módulos especializados, camadas de acesso a banco, mecanismos de validação, tratamento centralizado de erros, componentes compartilhados e arquiteturas extremamente organizadas.

Eles simplesmente não chamavam isso de Pattern.

Chamavam de:

"Boa programação."

E existe um motivo simples.

Quando um sistema precisa sobreviver por 40 anos, processar bilhões de transações e nunca parar, improvisação não funciona.

É por isso que aprender Patterns em COBOL significa aprender como os grandes sistemas do mundo realmente funcionam.

Hoje vamos explorar essa jornada.

Pegue seu café.

Vamos entrar na mente dos arquitetos que construíram os sistemas que movimentam praticamente todo o dinheiro do planeta.


O que é um Pattern?

Pattern significa literalmente:

Padrão de solução.

Não é código.

Não é framework.

Não é biblioteca.

É uma maneira comprovada de resolver um problema recorrente.

Sempre que um problema aparece repetidamente, alguém encontra uma solução elegante.

Depois de milhares de aplicações, essa solução vira um padrão.


A origem dos Patterns

Antes mesmo da computação, um arquiteto chamado Christopher Alexander estudava cidades e construções.

Ele percebeu algo interessante.

As melhores cidades do mundo utilizavam soluções semelhantes para problemas semelhantes.

Uma praça.

Uma rua.

Uma entrada.

Uma janela.

Tudo seguia padrões.

Em 1977 ele publicou:

A Pattern Language.

Décadas depois, programadores perceberam:

"Software também possui problemas repetitivos."

Assim nasceram os Design Patterns modernos.


Mas... e o Mainframe?

Enquanto isso...

Em grandes bancos...

Seguradoras...

Governos...

Empresas aéreas...

Os analistas já utilizavam exatamente a mesma filosofia.

Um exemplo clássico.

Em vez de cada programa acessar DB2 diretamente...

Criava-se um módulo responsável apenas por isso.

Hoje chamaríamos isso de:

DAO Pattern.

Na época era apenas:

"O módulo que conversa com o banco."


Por que Patterns são importantes?

Imagine um hospital.

Você não quer que cada médico invente sua própria forma de operar.

Existe um procedimento.

Uma sequência.

Uma organização.

Software crítico funciona da mesma forma.

Patterns tornam sistemas:

  • previsíveis

  • fáceis de manter

  • fáceis de evoluir

  • seguros

  • reutilizáveis


Pattern 1 — Modularização

O primeiro pattern da história do Mainframe.

Um programa enorme faz tudo.

Depois de alguns anos...

Ninguém entende mais nada.

A solução?

Separar responsabilidades.

Exemplo:

Programa Principal

↓

Validação

↓

Regras de Negócio

↓

DB2

↓

Relatórios

↓

Logs

Cada módulo possui apenas uma função.

Hoje isso parece óbvio.

Na década de 70 era revolucionário.


Como aplicar

Nunca escreva um programa de 5.000 linhas.

Pergunte:

Esta rotina pode virar um subprograma?

Se a resposta for sim...

Faça isso.


Pattern 2 — COPYBOOK Pattern

Uma das maiores invenções do COBOL.

Em vez de repetir estruturas...

Criamos COPYBOOKS.

Exemplo:

Cliente

Conta

Saldo

Endereço

CPF

Esses campos aparecem em centenas de programas.

Sem COPYBOOK...

Bastaria alterar um campo para criar centenas de inconsistências.

Com COPYBOOK...

Uma alteração.

Todos utilizam.


Boas práticas

Nunca copie estruturas manualmente.

Sempre centralize.


Pattern 3 — Validation Layer

Nunca misture validação com regra de negócio.

Errado:

Recebe CPF

Consulta DB2

Calcula juros

Valida CPF

Atualiza saldo

Tudo misturado.

Certo:

Entrada

↓

Validação

↓

Negócio

↓

Persistência


Benefícios

Código mais limpo.

Testes mais simples.

Menos bugs.


Pattern 4 — Error Handler Centralizado

Um clássico absoluto.

Em vez de cada programa escrever mensagens diferentes...

Existe um módulo especializado.

Exemplo:

DISPLAY

ABEND

LOG

RETURN-CODE

Tudo passa por um componente comum.


Vantagens

Padronização.

Auditoria.

Facilidade de suporte.


Pattern 5 — File Access Layer

Em vez de cada programa abrir arquivos VSAM...

Criamos uma camada.

Programa

↓

Arquivo Layer

↓

VSAM

Se amanhã o arquivo virar DB2...

O programa quase não muda.


Isso é desacoplamento

A lógica de negócio não conhece detalhes físicos.

Esse conceito ficou famoso décadas depois.

No Mainframe já era realidade.


Pattern 6 — Database Access Layer

Muito comum em DB2.

Programa

↓

Subprograma SQL

↓

DB2

O programa não conhece SQL.

Conhece apenas serviços.

Exemplo:

Consultar Cliente

Atualizar Saldo

Inserir Conta

Excluir Registro

Muito semelhante aos Repository Patterns modernos.


Pattern 7 — Service Programs

Grandes empresas possuem centenas de programas.

Algumas regras aparecem em todos.

Cálculo de CPF.

Validação de agência.

Máscara.

Data.

Moeda.

Essas regras viram serviços.


Exemplo

CALL "CALCJURO"

CALL "VALIDCPF"

CALL "FORMATA"

CALL "DATAUTIL"

Isso reduz milhares de linhas duplicadas.


Pattern 8 — Dispatcher

Muito usado em CICS.

Um programa recebe uma operação.

Dependendo da função...

Chama outro programa.

Entrada

↓

Dispatcher

↓

Consulta

↓

Inclusão

↓

Alteração

↓

Exclusão

Hoje chamamos isso de Command Dispatcher.


Pattern 9 — Table Driven Programming

Em vez de dezenas de IF...

Utilize tabelas.

Errado:

IF UF = SP

IF UF = RJ

IF UF = MG

...

Melhor:

Tabela de estados.

Pesquisa.

Resultado.

Menos código.

Mais manutenção.


Pattern 10 — Configuration Pattern

Nunca coloque constantes espalhadas.

Crie parâmetros.

Copybooks.

Arquivos.

Tabelas.

Isso evita recompilar programas para pequenas mudanças.


Pattern 11 — Batch Pipeline

Muito usado em processamento noturno.

Leitura

↓

Validação

↓

Transformação

↓

Classificação

↓

Carga

Cada etapa faz apenas uma coisa.

Se uma falhar...

A anterior permanece íntegra.


Pattern 12 — Restart Pattern

Um dos mais importantes.

Imagine um Batch de 8 horas.

Na hora 7 ocorre falha.

Sem Restart...

Tudo começa novamente.

Com Restart...

Continua do último checkpoint.

Essa ideia economiza milhões de dólares todos os anos.


Pattern 13 — Checkpoint Pattern

Muito usado com IMS.

A cada quantidade de registros...

Grava-se um ponto seguro.

Em caso de falha...

Retorna dali.


Pattern 14 — Logging Pattern

Nunca dependa apenas do DISPLAY.

Registre:

Programa

Data

Hora

Usuário

Arquivo

SQLCODE

Chave

Operação

Isso salva equipes inteiras durante incidentes.


Pattern 15 — Retry Pattern

DB2 indisponível?

Arquivo bloqueado?

MQ ocupado?

Em vez de falhar imediatamente...

Tente novamente algumas vezes.

Mas cuidado.

Retry infinito vira desastre.


Pattern 16 — Circuit Breaker (Modernização)

Muito usado via APIs.

Se um serviço externo está indisponível...

Pare de chamá-lo temporariamente.

Evita sobrecarga.


Pattern 17 — Adapter

Muito utilizado na modernização.

Sistema antigo

↓

Adapter

↓

API REST

O COBOL permanece praticamente igual.


Pattern 18 — Facade

Imagine vinte programas acessando vinte módulos.

Complicado.

Criamos uma fachada.

Programa

↓

Facade

↓

Serviços internos

Tudo fica mais simples.


Pattern 19 — Strategy

O cálculo muda conforme o produto.

Em vez de centenas de IF...

Criamos estratégias.

Produto A

↓

Regra A

Produto B

↓

Regra B

Produto C

↓

Regra C


Pattern 20 — Template Process

Muito comum em Batch.

Todos os programas fazem:

Inicialização

Leitura

Processamento

Gravação

Fechamento

Apenas a lógica muda.

A estrutura permanece.


Como identificar quando usar um Pattern

Faça cinco perguntas:

  1. Estou repetindo código?

  2. Esse módulo possui mais de uma responsabilidade?

  3. Se mudar amanhã, quantos programas serão alterados?

  4. Consigo testar isoladamente?

  5. Outra equipe entenderia isso facilmente?

Se várias respostas forem "não"...

Provavelmente existe um Pattern melhor.


Os erros mais comuns dos iniciantes

O famoso "programa monolítico".

Tudo dentro da PROCEDURE DIVISION.

Milhares de linhas.

GO TO para todos os lados.

Variáveis globais.

DISPLAY espalhados.

SQL misturado.

Validação misturada.

Regras misturadas.

Esse tipo de programa funciona...

Até o primeiro incidente em produção.


Como evoluir como Programador COBOL

Existe uma evolução natural.

Nível 1

Aprende sintaxe.

MOVE.

IF.

PERFORM.

READ.

WRITE.


Nível 2

Aprende organização.

Seções.

Parágrafos.

COPYBOOKS.

Subprogramas.


Nível 3

Aprende Patterns.

Reutilização.

Arquitetura.

Modularização.


Nível 4

Aprende integração.

DB2.

CICS.

IMS.

MQ.

REST.

JSON.


Nível 5

Pensa como arquiteto.

Nesse ponto, você não escreve apenas programas.

Você desenha soluções.


Curiosidades

  • Muitos sistemas bancários escritos há mais de 35 anos continuam ativos porque seguiram padrões consistentes.

  • Diversos conceitos popularizados em Java, C# e outras linguagens já eram praticados em ambientes COBOL, ainda que com nomes diferentes.

  • O uso disciplinado de COPYBOOKS foi um dos fatores que permitiu manter aplicações enormes sincronizadas por décadas.

  • Grandes equipes de Mainframe costumam definir padrões internos de nomenclatura, tratamento de erros, chamadas de subprogramas e acesso a dados para reduzir riscos operacionais.


Melhores práticas para o dia a dia

  • Dê a cada programa uma responsabilidade clara.

  • Evite duplicação de lógica.

  • Centralize estruturas em COPYBOOKS.

  • Padronize mensagens de erro.

  • Isole acesso a arquivos e bancos de dados.

  • Documente interfaces de subprogramas.

  • Use nomes consistentes para programas, parágrafos e variáveis.

  • Escreva código pensando em quem fará a manutenção daqui a dez anos.

  • Prefira simplicidade à esperteza.

  • Revise continuamente seu código procurando oportunidades de extrair novos módulos reutilizáveis.


O futuro dos Patterns no Mainframe

O Mainframe moderno conversa com APIs REST, mensageria, microsserviços, Kubernetes, aplicações Java, Python e serviços em nuvem. Nesse cenário, os Patterns clássicos continuam mais relevantes do que nunca. Adapter, Facade, Retry, Circuit Breaker, Service Layer e Repository ajudam a integrar aplicações COBOL com tecnologias modernas sem sacrificar estabilidade.

O profissional que domina esses conceitos deixa de ser apenas um desenvolvedor de programas e passa a ser um engenheiro de soluções. Ele entende quando reutilizar, quando desacoplar, quando encapsular e quando simplificar. Esse conhecimento vale muito mais do que decorar comandos da linguagem.


Conclusão

Existe uma frase muito conhecida entre arquitetos de software:

"Código ruim pode funcionar. Arquitetura ruim cobra juros."

No universo IBM Z, essa cobrança aparece em horas extras, incidentes de produção, dificuldades de manutenção e projetos de modernização cada vez mais caros.

Os Patterns existem justamente para evitar esse cenário. Eles representam décadas de experiência acumulada por milhares de profissionais que enfrentaram os mesmos problemas e encontraram soluções elegantes, reutilizáveis e seguras.

Se você é um Programador COBOL Padawan, não tente memorizar todos os Patterns de uma vez. Comece pelos mais importantes: modularização, COPYBOOKS, validação, tratamento centralizado de erros, acesso a dados desacoplado e reutilização de serviços. À medida que sua experiência crescer, você perceberá que esses padrões aparecem naturalmente em praticamente todos os grandes sistemas corporativos.

Lembre-se: escrever código é uma habilidade. Escrever código que continuará funcionando e sendo compreendido daqui a vinte anos é uma arte. E essa arte é construída com disciplina, boas práticas e padrões sólidos.

No Bellacosa Mainframe, costumamos dizer que o verdadeiro poder de um Programador COBOL não está na quantidade de comandos que ele conhece, mas na qualidade das decisões que toma antes mesmo de começar a digitar a primeira linha de código.

Esse é o caminho que transforma um Padawan em um verdadeiro Mestre do Mainframe.

Se desejar, posso criar a Parte 2 com mais de 3.000 palavras, abordando 40+ Design Patterns específicos para COBOL, CICS, DB2, IMS, Batch, APIs REST, MQ e modernização no IBM Z, com exemplos completos de código COBOL para cada padrão.


quinta-feira, 25 de junho de 2026

Technical Debt, Chaos Engineering e Resiliência no Mundo COBOL

 

Bellacosa Mainframe e divida tecnica, engenharia do caos e resiliencia no mundo mainframe

☕ Um Café no Bellacosa Mainframe

Technical Debt, Chaos Engineering e Resiliência no Mundo COBOL

Uma viagem dos cartões perfurados à engenharia de confiabilidade moderna

Existe uma curiosidade interessante sobre o universo Mainframe.

Boa parte dos desenvolvedores mais jovens acredita que sistemas COBOL foram escritos uma única vez, colocados em produção em algum momento dos anos 80 e simplesmente ficaram funcionando até hoje, imutáveis, como fósseis tecnológicos preservados em um museu digital.

A realidade é completamente diferente.

Poucas plataformas de tecnologia evoluíram tanto quanto o ecossistema IBM Z.

O hardware mudou.

O sistema operacional mudou.

Os compiladores mudaram.

As técnicas de desenvolvimento mudaram.

A forma de entregar software mudou.

As exigências regulatórias mudaram.

E os desenvolvedores também precisaram mudar.

Hoje falamos sobre APIs REST, Git, DevOps, Inteligência Artificial, Observabilidade, Chaos Engineering e Cloud Native. Entretanto, curiosamente, os sistemas que movimentam bilhões de dólares por dia continuam sendo executados por programas COBOL escritos há décadas.

Seria isso uma contradição?

Na verdade, não.

Talvez seja justamente uma demonstração de sucesso.

O primeiro legado não foi um erro

Em 1959 nasceu o COBOL.

Naquela época não existiam metodologias ágeis.

Não existia internet.

Não existiam smartphones.

Muitos programas eram escritos em cartões perfurados.

Armazenamento era caro.

Memória era limitada.

CPU era um recurso precioso.

As equipes construíam software pensando em algo muito importante:

Confiabilidade.

A aplicação precisava funcionar.

Sempre.

Mesmo que demorasse algumas horas para processar milhares de contas bancárias durante a madrugada.

Foi nesse ambiente que nasceu uma cultura extremamente disciplinada.

Documentação.

Padrões.

Controle de mudanças.

Testes.

Auditorias.

Processos.

Talvez os desenvolvedores daquela época não soubessem, mas estavam criando alguns dos primeiros conceitos de Engenharia de Confiabilidade.

Technical Debt: a dívida que todos nós fazemos

Em 1992, Ward Cunningham criou uma analogia brilhante.

Ele comparou decisões de desenvolvimento com empréstimos bancários.

Imagine que você precise entregar um sistema até sexta-feira.

Você poderia construir uma solução perfeita.

Ou poderia desenvolver algo funcional, mais simples, entregando rapidamente.

Você ganha velocidade.

Mas assume uma dívida.

E como toda dívida, ela possui juros.

Esses juros aparecem de várias formas.

Mais bugs.

Mais incidentes.

Mais retrabalho.

Maior consumo de CPU.

Maior dificuldade de manutenção.

Menor velocidade de inovação.

No Mainframe isso acontece frequentemente.

Talvez exista um programa COBOL com 25 mil linhas.

Talvez exista um COPYBOOK criado em 1987.

Talvez apenas um profissional conheça determinada aplicação.

Tudo isso representa dívida técnica.

O problema não é possuir dívida.

O problema é não saber que ela existe.

Nem toda dívida é ruim

Muitos desenvolvedores iniciantes acreditam que Technical Debt sempre significa erro.

Não é verdade.

Às vezes ela é estratégica.

Um banco pode precisar adequar sistemas rapidamente para atender uma nova regulamentação do BACEN.

Uma seguradora pode precisar disponibilizar um novo produto imediatamente.

Uma fintech pode lançar um MVP para validar mercado.

Nesses casos, assumir dívida técnica pode ser perfeitamente aceitável.

Desde que exista um plano para pagá-la posteriormente.

E aqui encontramos uma das primeiras lições importantes para um desenvolvedor COBOL júnior:

Escreva código pensando que alguém precisará entendê-lo daqui a dez anos.

Esse alguém pode ser você mesmo.

O mito da reescrita completa

Existe uma frase bastante comum em empresas:

"Precisamos jogar tudo fora."

Geralmente essa frase surge quando o ambiente está muito complexo.

Mas a IBM apresenta uma visão diferente.

Você não precisa substituir quarenta anos de sistemas.

Você pode modernizar gradualmente.

Esse conceito ficou conhecido como Strangler Pattern.

Imagine um sistema COBOL que processa contas correntes.

Ele continua funcionando.

Mas uma nova camada é criada.

z/OS Connect.

APIs REST.

Microserviços.

Containers.

Aplicações Java.

Python.

Inteligência Artificial.

O COBOL permanece processando transações críticas.

As aplicações modernas apenas consomem seus serviços.

A dívida começa a diminuir sem que seja necessário desligar o coração operacional da empresa.

Testes automatizados são seus melhores amigos

Durante muitos anos, testar em Mainframe significava reservar uma janela de homologação.

Executar jobs.

Analisar relatórios.

Esperar dias.

Hoje isso mudou.

Ferramentas como zUnit permitem criar testes automatizados.

Jenkins integra pipelines.

GitHub Actions executa validações.

DBB facilita builds.

Zowe aproxima o mundo Mainframe das práticas DevOps modernas.

Se você está começando em COBOL, desenvolva o hábito de pensar:

"O que acontece se o CPF estiver inválido?"

"E se a data vier vazia?"

"E se houver overflow?"

Programadores experientes não escrevem apenas funcionalidades.

Eles escrevem confiança.

Code Review: aprendendo com outros desenvolvedores

Uma das melhores maneiras de evoluir tecnicamente é revisar código.

Olhar programas COBOL antigos.

Analisar SQL.

Entender JCLs.

Perguntar.

Questionar.

Aprender.

Muitos problemas são identificados antes mesmo de chegar à produção.

Um cursor esquecido.

Um COMMIT ausente.

Um SORT desnecessário.

Uma consulta DB2 sem índice adequado.

Dois pares de olhos normalmente enxergam mais do que um.

Refatoração não significa reescrever

Refatorar é melhorar.

Não é destruir.

Não é começar do zero.

Pequenas melhorias acumuladas ao longo do tempo fazem enorme diferença.

Renomear variáveis.

Extrair rotinas.

Separar módulos.

Eliminar GOTO.

Criar serviços reutilizáveis.

Transformar programas gigantes em componentes menores.

Refatoração contínua é uma das formas mais eficientes de pagar Technical Debt.

Observabilidade: enxergando o que realmente acontece

Existe uma frase bastante conhecida:

Se você não consegue medir, não consegue melhorar.

No mundo IBM Z temos ferramentas extraordinárias.

SMF.

RMF.

OMEGAMON.

Instana.

Grafana.

Elas permitem compreender:

CPU.

I/O.

Latência.

Filas.

Conexões.

Transações.

Antes de corrigir qualquer problema, precisamos enxergá-lo.

Observabilidade é a base da engenharia moderna.

Chaos Engineering: quebrando para aprender

Talvez o conceito mais surpreendente para desenvolvedores COBOL seja Chaos Engineering.

A ideia surgiu popularmente na Netflix.

Mas a IBM mostra que ela pode ser aplicada em praticamente qualquer ambiente.

O princípio é simples.

Não espere uma falha em produção.

Provoque pequenas falhas.

Aprenda.

Corrija.

Teste novamente.

Por exemplo:

O que acontece se o IMS Connect ficar indisponível?

Se a fila MQ atingir 95% de ocupação?

Se um membro do Sysplex parar?

Se o DB2 responder lentamente?

Chaos Engineering não significa desligar servidores aleatoriamente.

É ciência.

Você cria uma hipótese.

Executa um experimento controlado.

Observa.

Aprende.

Melhora.

Repete.

Resiliência é um investimento

A IBM utiliza uma analogia muito interessante.

Imagine um ciclista.

Ele pode sair apenas com a bicicleta.

Ou levar uma bomba de ar.

Kit de reparo.

Câmara reserva.

Pneu reserva.

Carro de apoio.

Mecânico.

Quanto maior a disponibilidade desejada, maior será o custo.

Em tecnologia ocorre exatamente o mesmo.

Alta disponibilidade.

Disaster Recovery.

Cyber Recovery.

Backups.

Replicação.

GDPS.

Sysplex.

Active-Active.

Tudo possui custo.

O objetivo não é atingir disponibilidade infinita.

O objetivo é encontrar equilíbrio entre risco, orçamento e necessidade do negócio.

O desenvolvedor COBOL de 2026

O profissional COBOL moderno não é apenas alguém que conhece MOVE, PERFORM e READ.

Ele entende Git.

Conhece APIs.

Aprende DevOps.

Sabe interpretar métricas.

Participa de revisões.

Automatiza testes.

Compreende observabilidade.

Conhece conceitos de segurança.

Entende resiliência.

Estuda Inteligência Artificial.

E principalmente, continua cultivando algo que sempre esteve presente no universo Mainframe:

Disciplina técnica.

Os sistemas que movimentam bilhões de transações diariamente não permanecem relevantes por acaso.

Eles permanecem relevantes porque existem profissionais dispostos a compreender o passado, melhorar continuamente o presente e testar constantemente o futuro.

E talvez seja exatamente essa a maior lição do Mainframe.

Tecnologia muda.

Ferramentas mudam.

Buzzwords mudam.

Mas excelência em engenharia continua sendo atemporal.

E isso, felizmente, nunca sai de moda.

Até o próximo café.

☕ Bellacosa Mainframe


Bellacosa Mainframe Network

Siga nossas newsletters e comunidades no LinkedIn

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