| Bellacosa Mainframe e o laboratorio de ibm integration bus (broker) |
☕🔥 LABORATÓRIO PRÁTICO — IBM Integration Bus (Broker) Integrando COBOL/MQ com JSON REST
Este laboratório simula um cenário REAL de mercado:
Um sistema COBOL no mainframe envia uma mensagem MQ em formato legado, e o IBM Integration Bus (IIB/ACE) transforma tudo em JSON para APIs modernas.
Você aprenderá:
✅ fluxo completo
✅ MQ Input
✅ transformação EBCDIC/Copybook → JSON
✅ ESQL
✅ Message Flow
✅ deploy
✅ testes
✅ troubleshooting
🎯 CENÁRIO DO LAB
Sistema legado (Mainframe)
Envia:
000123JOAO 0000500
Formato:
posição fixa
padrão COBOL
MQ
Broker/IIB/ACE
Recebe:
MQ Queue
Transforma:
fixed length
copybook lógico
JSON
Entrega:
API REST
ou outra fila MQ
🏗️ ARQUITETURA
COBOL Batch/CICS
↓
IBM MQ
↓
MQINPUT NODE
↓
COMPUTE NODE (ESQL)
↓
JSON OUTPUT
↓
HTTP/MQ/API
📦 PASSO 1 — PREPARAR O AMBIENTE
Você precisará:
| Componente | Função |
|---|---|
| IBM MQ | Mensageria |
| IBM ACE/IIB | Integração |
| Toolkit | Desenvolvimento |
| Queue Manager | Filas |
| MQ Explorer | Administração |
📌 FILAS DO LAB
Entrada
LAB.INPUT
Saída
LAB.OUTPUT
⚙️ PASSO 2 — CRIAR AS FILAS MQ
Script MQSC
DEFINE QLOCAL(LAB.INPUT)
DEFINE QLOCAL(LAB.OUTPUT)
▶️ EXECUTAR
Linux:
runmqsc QM1 < filas.mqsc
Windows:
runmqsc QM1
Cole os comandos.
🔥 PASSO 3 — CRIAR O PROJETO NO ACE TOOLKIT
Novo Application
File → New → Application
Nome:
LAB_MAINFRAME_JSON
🔥 PASSO 4 — CRIAR MESSAGE FLOW
Novo Message Flow
MF_MAINFRAME_JSON
🧩 PASSO 5 — ADICIONAR NODES
Arraste:
| Node | Função |
|---|---|
| MQInput | Receber MQ |
| Compute | Transformar |
| MQOutput | Enviar saída |
🔗 CONECTAR
MQInput → Compute → MQOutput
⚙️ PASSO 6 — CONFIGURAR MQINPUT
Queue Name
LAB.INPUT
Queue Manager
QM1
⚙️ PASSO 7 — CONFIGURAR MQOUTPUT
Queue
LAB.OUTPUT
🧠 PASSO 8 — CRIAR O ESQL
Compute Node
Clique:
Open ESQL
✨ CÓDIGO COMPLETO
CREATE COMPUTE MODULE MAINFRAME_TO_JSON
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
DECLARE MSG CHAR;
SET MSG = CAST(InputRoot.BLOB.BLOB AS CHAR CCSID 1208);
DECLARE CONTA CHAR;
DECLARE NOME CHAR;
DECLARE SALDO CHAR;
SET CONTA = SUBSTRING(MSG FROM 1 FOR 6);
SET NOME = TRIM(SUBSTRING(MSG FROM 7 FOR 10));
SET SALDO = SUBSTRING(MSG FROM 17 FOR 7);
CREATE FIELD OutputRoot.JSON.Data;
SET OutputRoot.JSON.Data.conta = CONTA;
SET OutputRoot.JSON.Data.nome = NOME;
SET OutputRoot.JSON.Data.saldo = CAST(SALDO AS INTEGER);
RETURN TRUE;
END;
END MODULE;
🧠 O QUE ESSE ESQL FAZ?
📌 PASSO A PASSO DA LÓGICA
1️⃣ Recebe o BLOB MQ
SET MSG = CAST(InputRoot.BLOB.BLOB AS CHAR CCSID 1208);
Converte:
bytes MQ
para texto
2️⃣ Extrai os campos
Conta
SET CONTA = SUBSTRING(MSG FROM 1 FOR 6);
Pega:
000123
Nome
SET NOME = TRIM(SUBSTRING(MSG FROM 7 FOR 10));
Pega:
JOAO
Saldo
SET SALDO = SUBSTRING(MSG FROM 17 FOR 7);
Pega:
0000500
📌 MONTA JSON
SET OutputRoot.JSON.Data.conta = CONTA;
Cria:
{
"conta": "000123"
}
🚀 RESULTADO FINAL
Mensagem saída:
{
"conta": "000123",
"nome": "JOAO",
"saldo": 500
}
🔥 PASSO 9 — DEPLOY
Clique direito
Deploy → Integration Server
📦 PASSO 10 — TESTAR
Enviar MQ Message
Use:
amqsput LAB.INPUT QM1
Digite:
000123JOAO 0000500
ENTER
ENTER novamente.
📥 VERIFICAR SAÍDA
amqsget LAB.OUTPUT QM1
🎉 RESULTADO
{
"conta":"000123",
"nome":"JOAO",
"saldo":500
}
🔥 O QUE VOCÊ APRENDEU AQUI?
Você criou:
✅ integração real
✅ transformação legado → moderno
✅ parsing de layout COBOL
✅ transformação JSON
✅ fluxo MQ
✅ ESQL
✅ Message Flow
🧠 CENÁRIOS REAIS DE MERCADO
Esse padrão é MUITO usado para:
| Legado | Moderno |
|---|---|
| COBOL | API REST |
| VSAM | JSON |
| CICS | Cloud |
| MQ | Kafka |
| DB2 | Microservices |
🚨 PROBLEMAS COMUNS
❌ CCSID errado
Erro clássico:
caracteres estranhos
Solução:
validar UTF-8
EBCDIC
CCSID MQ
❌ Campo deslocado
Exemplo:
JOAO indo para saldo
Problema:
posições incorretas
❌ JSON vazio
Problema:
OutputRoot errado
❌ MQInput não lê
Verificar:
queue manager
channel
listener
permissões
🔥 LAB AVANÇADO (PRÓXIMOS PASSOS)
Você pode evoluir para:
✅ Copybook COBOL real
✅ XMLNSC
✅ SOAP
✅ REST API
✅ Kafka
✅ integração DB2
✅ CICS Web Services
✅ SAP IDoc
✅ HTTPS OAuth2
✅ JWT
✅ transformação XML ↔ JSON
🏆 DESAFIO EXTRA
Transforme este layout:
000123JOAO 00005000000100SP
Em:
{
"conta":123,
"nome":"JOAO",
"saldo":500,
"agencia":100,
"estado":"SP"
}
☕🔥 CONCLUSÃO
Esse laboratório mostra exatamente:
como o IBM Integration Bus/ACE virou a ponte entre o mundo COBOL/mainframe e o universo APIs/cloud.
É literalmente:
✅ legado falando moderno
✅ MQ falando REST
✅ EBCDIC falando JSON
✅ mainframe conectado ao futuro 🚀