| Bellacosa Mainframe apresenta cics mq bridge |
☕ Um Café no Bellacosa Mainframe
CICS MQ Bridge sem Mistérios para Programadores COBOL
Quando um Programador Descobre que um MQPUT Pode Executar um Programa COBOL sem Abrir um Único Terminal 3270... e Percebe que Existe um Tradutor Universal Trabalhando nos Bastidores do Mainframe
"No universo, existem três tipos de pessoas: as que acham que o MQ conversa diretamente com o COBOL, as que sabem que existe um CICS no meio do caminho... e aquelas que descobriram o MQ Bridge e nunca mais olharam uma fila da mesma forma."
Introdução — O Dia em que o COBOL Conheceu a Nuvem
Imagine que você é um programador COBOL iniciante.
Você acabou de aprender:
JCL
VSAM
CICS
COMMAREA
EXEC CICS LINK
RETURN
SEND MAP
RECEIVE MAP
Tudo faz sentido.
O usuário abre um terminal 3270.
Digita dados.
O CICS recebe.
Seu programa COBOL executa.
Retorna outra tela.
Fim.
Então alguém aparece na reunião e diz:
"Precisamos que esse programa seja chamado por um microsserviço rodando Kubernetes."
Você responde:
"Mas... onde fica o terminal?"
Silêncio.
Ninguém responde.
Porque...
não existe terminal.
É aqui que começa uma das arquiteturas mais inteligentes já criadas dentro do ecossistema IBM Z:
CICS MQ Bridge.
Hoje vamos fazer uma viagem ao estilo Guia do Mochileiro das Galáxias, descobrindo como um simples MQPUT consegue acordar um programa COBOL escrito há trinta anos sem modificar praticamente uma linha de código.
Pegue seu café.
Ajuste seu terminal 3270.
E não esqueça sua toalha.
Capítulo 1 — Antes do MQ Bridge Existia Apenas o Terminal
Durante décadas o fluxo era extremamente simples.
Usuário
↓
Terminal 3270
↓
CICS
↓
Programa COBOL
↓
Banco de Dados
O terminal era praticamente parte do programa.
Quando alguém digitava ENTER...
o CICS criava uma Task.
Montava o ambiente.
Criava o EIB.
Criava a COMMAREA.
Chamava a Transaction.
O COBOL trabalhava.
Era um mundo perfeito.
Até aparecerem...
Java
Linux
Windows
Web Services
REST
Smartphones
APIs
Kubernetes
OpenShift
Microsserviços
Todos eles queriam conversar com o COBOL.
Nenhum deles sabia falar 3270.
O Grande Problema
Imagine tentar conversar com um japonês usando apenas latim medieval.
Não importa o quanto ambos sejam inteligentes.
Sem tradutor...
não existe comunicação.
O mesmo acontecia aqui.
Java
X
COBOL CICS
Java entende objetos.
REST entende JSON.
MQ entende mensagens.
O COBOL espera uma COMMAREA.
Quem faz essa tradução?
O MQ Bridge.
O MQ Não Executa Programas
Esse é um dos maiores equívocos dos iniciantes.
Muita gente imagina:
MQ
↓
Programa COBOL
Isso nunca acontece.
O MQ apenas transporta mensagens.
Ele não conhece:
EXEC CICS
COMMAREA
EIB
TCTUA
TIOA
MAPSET
BMS
Ele é apenas um excelente carteiro.
O inteligente da história é o CICS.
Pense no MQ Como os Correios
Você escreve uma carta.
Os Correios não sabem o conteúdo.
Eles apenas entregam.
Da mesma forma:
Aplicação
↓
MQPUT
↓
Fila
↓
MQGET
O MQ não interpreta.
Não executa.
Não calcula.
Não valida.
Ele apenas entrega.
Essa simplicidade é justamente sua maior força.
O Surgimento do Bridge
Alguém na IBM fez uma pergunta brilhante.
"E se criarmos um intérprete?"
Um componente capaz de dizer:
"Recebi uma mensagem MQ.
Vou fingir que ela veio de um terminal."
Nascia o Bridge Facility.
A Arquitetura Completa
Vamos ampliar o diagrama.
Cliente
↓
MQPUT
↓
Request Queue
↓
Trigger
↓
CKTI
↓
ATTACH
↓
CKBR
↓
Bridge Facility
↓
EXEC CICS
↓
Programa COBOL
↓
COMMAREA
↓
MQPUT
↓
Reply Queue
↓
Cliente
Parece longo.
Mas acontece em poucos milissegundos.
Capítulo 2 — O Primeiro Passo: MQPUT
Tudo começa com um simples comando.
MQPUT
Esse comando grava uma mensagem.
Mas a mensagem não contém apenas dados.
Ela possui uma identidade.
É como um envelope.
Dentro dele existem várias informações.
O Envelope Inteligente
Imagine enviar uma encomenda.
No envelope existe:
Destinatário
Remetente
Prioridade
Resposta
Conteúdo
No MQ ocorre exatamente o mesmo.
Quem guarda essas informações?
MQMD.
MQMD — O RG da Mensagem
MQMD significa:
Message Descriptor
Ele possui dezenas de campos.
Entre eles:
Message ID
Correlation ID
Persistence
Priority
Expiry
ReplyToQ
ReplyToQMgr
O campo mais importante para o Bridge costuma ser:
ReplyToQ
É ele que informa:
"Quando terminar o processamento,
responda nesta fila."
Nenhuma aplicação precisa conhecer outra.
Tudo acontece por mensagens.
Easter Egg nº 1 ☕
ReplyToQ funciona exatamente como a etiqueta de uma mala no aeroporto.
Você não precisa conhecer quem vai buscá-la.
Basta colocar a etiqueta correta.
Ela chegará ao destino.
MQCIH — O DNA da Chamada CICS
Agora entra o verdadeiro protagonista.
O MQCIH.
Seu nome completo:
MQ CICS Information Header
Esse cabeçalho diz ao Bridge:
qual transação executar;
se haverá sincronização (syncpoint);
qual formato de dados será usado;
como tratar erros;
como montar o ambiente CICS;
quais parâmetros deverão ser passados.
Sem o MQCIH...
o Bridge seria como um carteiro tentando entregar uma carta sem endereço.
O Payload
Depois do MQCIH vem a carga útil.
Ela pode conter:
COMMAREA
3270 Data Stream
Containers
Business Data
É exatamente isso que o programa COBOL irá processar.
Capítulo 3 — O Trigger
Agora imagine um carteiro esperando cartas.
Existem duas formas.
Modelo Antigo
Tem carta?
Não.
Tem carta?
Não.
Tem carta?
Não.
Isso se chama Polling.
CPU desperdiçada.
Modelo Inteligente
Chegou carta.
Toc!
Levante.
Existe trabalho.
Isso é Trigger.
Muito mais elegante.
TRIGGER=YES
Na definição da fila existe um atributo.
TRIGGER=YES
Quando uma mensagem chega...
o Queue Manager cria automaticamente outra mensagem.
Mas atenção.
Essa nova mensagem não contém os dados.
Ela apenas diz:
Existe trabalho.
CKTI — O Porteiro do CICS
CKTI significa:
CICS Trigger Monitor
Ele permanece praticamente dormindo.
Quando chega um Trigger...
acorda.
É como um porteiro de prédio.
Não abre todos os apartamentos.
Ele apenas avisa:
"Existe um visitante."
EXEC CICS ATTACH
O CKTI então executa:
EXEC CICS ATTACH
Esse comando cria uma nova Task CICS.
É semelhante a contratar um funcionário temporário para executar apenas aquele serviço.
Capítulo 4 — CKBR
Agora entra o cérebro da operação.
CKBR.
Se o MQ fosse um correio...
o CKBR seria o tradutor oficial da ONU.
Ele entende:
MQ
CICS
COMMAREA
Terminal
Programas
Transações
Sua missão é unir dois mundos completamente diferentes.
O Grande Truque
O programa COBOL acredita que existe um terminal.
Mas...
não existe.
O Bridge cria um terminal virtual.
É praticamente uma Matrix.
Programa COBOL
↓
"Estou falando com um terminal."
Resposta:
"Claro..."
(na verdade é o Bridge)
Easter Egg nº 2 ☕
Assim como Neo não sabia que vivia na Matrix...
o programa COBOL normalmente não sabe que está sendo chamado por uma aplicação Java.
Ele continua vivendo feliz dentro do CICS.
Bridge Facility
Esse componente cria praticamente todo o ambiente necessário.
Ele pode preparar:
EIB
COMMAREA
Ambiente EXEC CICS
Contexto da Task
Sessão simulada
Recursos temporários
Tudo isso acontece antes do programa iniciar.
Capítulo 5 — A Invocação
Depois de interpretar o MQCIH...
o Bridge finalmente executa a transação.
EXEC CICS LINK
ou
START
ou
ATTACH
Dependendo da configuração.
O programa COBOL recebe exatamente a mesma COMMAREA de sempre.
O COBOL Continua Igual
Veja como isso é poderoso.
Seu código pode continuar assim:
LINKAGE SECTION.
01 DFHCOMMAREA.
05 CONTA.
05 VALOR.
PROCEDURE DIVISION.
MOVE ...
EXEC CICS RETURN.
Nenhuma linha foi alterada.
Décadas de investimento permanecem válidas.
Easter Egg nº 3 ☕
É como trocar o motor de um avião em pleno voo sem que os passageiros percebam.
Os passageiros são o programa COBOL.
Quem trocou o motor foi o MQ Bridge.
Capítulo 6 — A Resposta
Quando o programa termina...
o Bridge captura:
COMMAREA
ou
3270 Buffer
ou
Containers
Depois monta outra mensagem MQ.
Acrescenta um novo MQCIH.
Atualiza o MQMD.
E executa:
MQPUT
Agora na Reply Queue.
O Cliente Executa MQGET
Finalmente.
O cliente recebe:
MQGET
E obtém:
saldo;
mensagens;
códigos;
erros;
dados processados.
O ciclo termina.
Fluxo Completo
MQ Client
↓
MQPUT
↓
Request Queue
↓
Trigger
↓
CKTI
↓
ATTACH
↓
CKBR
↓
Bridge Facility
↓
Programa COBOL
↓
COMMAREA
↓
MQPUT
↓
Reply Queue
↓
MQGET
Esse fluxo acontece milhares de vezes por segundo em grandes bancos.
Por Que Essa Arquitetura É Tão Boa?
Porque ela resolve diversos problemas ao mesmo tempo.
Desacoplamento
O cliente não conhece o COBOL.
O COBOL não conhece o cliente.
Persistência
Mesmo que o CICS pare.
A mensagem continua na fila.
Nada é perdido.
Escalabilidade
Podemos criar várias regiões CICS consumindo a mesma fila.
Balanceamento
O MQ distribui naturalmente o trabalho.
Confiabilidade
IBM MQ é famoso justamente por garantir entrega confiável.
Não é coincidência que seja amplamente utilizado em bancos e bolsas de valores.
Dicas Para Quem Está Aprendendo
✔ Aprenda primeiro CICS tradicional.
✔ Entenda bem COMMAREA.
✔ Estude MQMD.
✔ Depois aprenda MQCIH.
✔ Só então mergulhe no Bridge.
A sequência faz toda diferença.
Erros Comuns
❌ Pensar que MQ executa COBOL.
❌ Esquecer ReplyToQ.
❌ Ignorar CorrelationId.
❌ Confundir Trigger Message com Business Message.
❌ Achar que CKTI processa aplicações.
Na realidade:
CKTI apenas inicia o CKBR.
Quem faz o trabalho pesado é o Bridge.
Curiosidades
O MQ Bridge foi criado para reaproveitar aplicações CICS sem exigir reescrita do código.
Muitas aplicações modernas em Java, .NET e APIs REST acessam programas COBOL indiretamente por meio dessa arquitetura.
O uso do MQCIH permite controlar detalhes da execução da transação sem alterar o programa de negócio.
Em muitos ambientes corporativos, uma única fila pode alimentar diversas regiões CICS, aumentando disponibilidade e capacidade de processamento.
O conceito de terminal virtual permite que aplicações originalmente escritas para 3270 continuem funcionando mesmo quando chamadas por serviços modernos.
Bellacosa Insight ☕
Existe uma frase famosa na engenharia de software:
"Os bons sistemas sobrevivem porque escondem sua complexidade."
O MQ Bridge é um exemplo quase perfeito dessa ideia.
Para quem está do lado de fora, parece que um simples MQPUT chama um programa COBOL.
Mas, nos bastidores, existe uma verdadeira orquestra trabalhando em perfeita sincronia:
o MQ transporta a mensagem;
o Trigger detecta trabalho novo;
o CKTI desperta a infraestrutura CICS;
o CKBR interpreta o cabeçalho MQCIH;
a Bridge Facility cria um terminal virtual e prepara o ambiente;
o CICS executa a transação;
o COBOL processa a lógica de negócio;
o MQ devolve a resposta para a fila indicada.
É como observar apenas um botão "Comprar" em um site de comércio eletrônico, sem perceber que, por trás dele, existem dezenas de sistemas coordenando estoque, pagamento, logística e faturamento.
No universo do IBM Z, o CICS MQ Bridge cumpre exatamente esse papel: ele transforma tecnologias modernas em uma linguagem que aplicações COBOL escritas há décadas conseguem entender, preservando um dos maiores patrimônios da computação corporativa. Como diria o Guia do Mochileiro das Galáxias: não entre em pânico. Mesmo que a arquitetura pareça complexa à primeira vista, ela é composta por pequenos componentes especializados, cada um fazendo muito bem uma única tarefa. Quando você entende o papel de cada um, o diagrama deixa de ser um emaranhado de caixas e setas e passa a contar uma história fascinante sobre integração, compatibilidade e a incrível longevidade do ecossistema IBM Z.