✨ Bem-vindo ao meu espaço! ✨
Este blog é o diário de um otaku apaixonado por animes, tecnologia de mainframe e viagens.
Cada entrada é uma mistura única: relatos de viagem com fotos, filmes, links, artigos e desenhos, sempre buscando enriquecer a experiência de quem lê.
Sou quase um turista profissional: adoro dormir em uma cama diferente, acordar em um lugar novo e registrar tudo com minha câmera sempre à mão.
Entre uma viagem e outra, compartilho também reflexões sobre cultura otaku/animes
Bellacosa Mainframe e commarea channels e containers no cics ts
☕🔥 COMMAREA, CHANNELS e CONTAINERS no CICS TS: O Guia Definitivo para Desenvolvedores COBOL Junior
Introdução
Todo programador COBOL que inicia no mundo CICS aprende rapidamente três palavras que aparecem em praticamente qualquer aplicação online:
COMMAREA
CHANNEL
CONTAINER
Embora pareçam apenas mecanismos para passagem de parâmetros, na realidade representam três gerações diferentes da evolução do CICS.
Compreender quando utilizar cada abordagem, suas limitações, vantagens, implicações de performance e integração com Web Services, APIs REST e IBM MQ é fundamental para qualquer desenvolvedor que deseje construir aplicações modernas no IBM Z.
A grande dúvida dos iniciantes costuma ser:
"Se a COMMAREA funciona há décadas, por que a IBM criou Channels e Containers?"
A resposta está diretamente relacionada à evolução dos sistemas corporativos.
Como o CICS Enxerga uma Transação
Quando uma transação executa:
Cliente
|
TRANSAÇÃO
|
PROGRAMA A
frequentemente o programa precisa:
chamar outro programa
enviar dados
receber retorno
transferir controle
Exemplo:
PROGRAMA A
|
LINK
|
PROGRAMA B
Nesse momento os dados precisam ser transferidos.
É aí que entram COMMAREA, CHANNEL e CONTAINER.
COMMAREA — O Clássico do CICS
COMMAREA significa:
Communication Area
Ela surgiu nos primeiros anos do CICS e se tornou durante décadas o principal mecanismo de comunicação entre programas.
Exemplo:
Programa A:
EXEC CICS LINK
PROGRAM('CLIENTE')
COMMAREA(WS-COMMAREA)
LENGTH(200)
END-EXEC
Não é necessário reconstruir um layout monolítico.
Escalabilidade
Ideal para integrações modernas.
COMMAREA vs CHANNEL
Característica
COMMAREA
CHANNEL
Tamanho
64 KB
Muito maior
Estrutura
Única
Múltiplos Containers
JSON
Limitado
Excelente
XML
Limitado
Excelente
APIs REST
Fraco
Excelente
MQ
Bom
Excelente
Evolução
Difícil
Fácil
Uso com Web Services
Quando um Web Service recebe:
<cliente>
...
</cliente>
ou
{
...
}
normalmente o runtime do CICS utiliza:
CHANNEL
CONTAINER
internamente.
Motivo:
Payloads variáveis.
Uso com z/OS Connect
Praticamente todas as implementações modernas utilizam:
JSON
↓
CHANNEL
↓
COBOL
em vez de COMMAREA.
Uso com IBM MQ
MQ pode trabalhar com ambos.
Modelo Tradicional
MQ
|
COMMAREA
|
COBOL
Modelo Moderno
MQ
|
CHANNEL
|
CONTAINERS
|
COBOL
Exemplo MQ
Mensagem recebida:
Pedido
Itens
Cliente
Pagamento
Pode ser dividida em:
PEDIDO
ITENS
CLIENTE
PAGAMENTO
Cada parte em um container.
Quando Usar COMMAREA?
Utilize quando:
✅ aplicações legadas
✅ pequenas estruturas
✅ LINK simples
✅ integração interna
Exemplo:
Consulta Cliente
Consulta Agência
Consulta Conta
Quando Usar CHANNEL?
Utilize quando:
✅ APIs REST
✅ JSON
✅ XML
✅ Web Services
✅ MQ moderno
✅ microsserviços
✅ payloads grandes
Estratégia Utilizada pelos Bancos
O que normalmente vemos hoje:
Core COBOL antigo
|
COMMAREA
e
APIs novas
|
CHANNEL
CONTAINER
Os dois convivem perfeitamente.
Erros Comuns dos Iniciantes
Não validar tamanho
LENGTH(...)
deve sempre ser controlado.
Alterar layout sem sincronizar
Clássico problema de COMMAREA.
Usar container gigante
Separar logicamente os dados é melhor.
Não documentar containers
Sempre documente:
CLIENTE
ENDERECO
PRODUTO
PAGAMENTO
Boas Práticas
COMMAREA
manter abaixo de 32 KB
usar copybooks
versionar layouts
CHANNELS
containers pequenos
nomes padronizados
separar responsabilidades
MQ
payload desacoplado
evitar estruturas gigantes
utilizar containers temáticos
Conclusão
A COMMAREA continua viva e continuará por muitos anos. Milhares de aplicações bancárias processam bilhões de transações diariamente utilizando esse mecanismo criado há décadas.
Entretanto, o mundo mudou.
JSON, APIs REST, Open Banking, PIX, Web Services, MQ distribuído e arquiteturas orientadas a serviços exigiram uma evolução do modelo tradicional.
Foi exatamente para atender esse novo cenário que surgiram os Channels e Containers.
O desenvolvedor COBOL moderno não deve enxergar COMMAREA e CHANNEL como concorrentes.
Eles são ferramentas diferentes para problemas diferentes.
A regra prática é simples:
COMMAREA para integrações simples e legadas.
CHANNEL e CONTAINER para aplicações modernas, APIs, MQ e Web Services.
Quem domina os dois mundos consegue navegar tanto nos sistemas que sustentam os bancos há décadas quanto nas novas arquiteturas digitais que conectam o IBM Z ao restante do planeta.
E essa é uma das habilidades mais valiosas para qualquer programador COBOL que deseja evoluir para desenvolvedor CICS de alto nível.
Bellacosa Mainframe e o cobol falando com a web via api
☕ Um Café no Bellacosa Mainframe
Dr. Watson Entra no CICS — O Caso do COBOL que Não Sabia que Era uma API
Ou: por que o programa que calcula a folha há trinta anos pode conversar com um aplicativo no celular sem trocar de linguagem, trocar de cérebro ou colocar bigode no JSON
“Holmes”, perguntou o Dr. Watson, olhando para o monitor onde um aplicativo de celular acabara de consultar o saldo de uma conta, “então o COBOL finalmente aprendeu Java?”
Sherlock nem levantou os olhos do log de uma transação CICS.
“Não, Watson. E esta é justamente a dedução que separa um arquiteto de alguém que instala uma biblioteca, desenha três setas num PowerPoint e chama a reunião de modernização.”
O espanto do Watson é o de muita gente, inclusive de bons desenvolvedores iniciantes. Eles ouvem “aplicação moderna”, pensam em React, Java, Python, Kubernetes, cloud, aplicativo de celular e JSON. Depois ouvem “COBOL”, imaginam uma sala empoeirada, cartões perfurados e um sistema incapaz de conversar com qualquer coisa que tenha tela sensível ao toque.
É uma imagem divertida, mas errada.
COBOL não precisa “virar Java” para participar do mundo digital. O que ele precisa é de uma porta de entrada bem desenhada, de um contrato claro para trocar dados e de uma camada que traduza a conversa entre os dois mundos. O COBOL continua realizando aquilo que sabe fazer muito bem: aplicar regras de negócio, consultar Db2, ler VSAM, conversar com IMS, validar limites, calcular valores e manter a consistência de uma operação que não pode falhar porque alguém colocou um emoji no campo de observação.
Neste café, Watson será nosso cronista. Ele vai acompanhar a investigação desde o primeiro JSON até o retorno da resposta, descobrir por que um campo aparentemente inocente pode produzir um erro enorme e perceber que modernizar não é demolir a agência bancária para instalar uma máquina de café expresso.
1. A primeira pista: ninguém “fala COBOL” pela internet
Quando um aplicativo mobile pede uma segunda via de boleto ou verifica a margem consignável de um cliente, ele normalmente envia uma requisição HTTP ou HTTPS. HTTP é o protocolo da conversa; HTTPS é essa conversa protegida por TLS. JSON é o formato textual usado para organizar os dados.
O aplicativo não está chamando diretamente um PERFORM dentro de um programa COBOL. Ele está chamando uma API, algo como:
POST /payroll/v1/employee-query
O endpoint recebe a chamada, identifica o consumidor, valida a entrada e encaminha os dados para o ativo de negócio correto no z/OS. Esse ativo pode ser um programa COBOL sob CICS, uma transação IMS, uma rotina que consulta Db2 ou até uma composição de serviços.
O ponto decisivo é este: linguagem não é protocolo. Java, .NET, Python e COBOL podem participar da mesma conversa porque todos entendem os acordos de integração: rede, segurança, formatos e contratos. O programa COBOL não precisa entender a moda do framework da semana; a camada de serviço se encarrega de apresentar uma interface estável ao exterior.
Watson anotou: “Portanto, o celular não invade o mainframe; ele toca a campainha certa.” Exatamente.
2. A cena do crime: o caminho real da chamada
O desenho simplificado “COBOL → CICS → HTTP → JSON → aplicação moderna” transmite a ideia geral, mas na vida real as responsabilidades precisam aparecer. Um fluxo comum se parece mais com isto:
Aplicativo mobile / portal / serviço cloud
|
HTTPS + JSON
|
API Gateway e camada de segurança
|
z/OS Connect, CICS Web API ou serviço CICS
|
COMMAREA, CHANNEL/CONTAINER, MQ ou chamada de programa
|
Programa COBOL
|
Db2, VSAM, IMS, MQ e regras de negócio
Nem toda empresa usa exatamente todos esses blocos. Em algumas, o CICS recebe HTTP diretamente. Em outras, o z/OS Connect expõe uma API REST sobre ativos CICS e IMS. Em outras, uma camada Java no z/OS ou numa plataforma distribuída faz parte da composição. E, quando o processo não exige resposta imediata, IBM MQ pode ser mais apropriado do que manter uma chamada HTTP esperando.
O erro de principiante é tratar todas essas opções como rivais. Elas são ferramentas para problemas diferentes.
Uma consulta de saldo tende a ser síncrona: pergunta, processa, responde.
Um pedido de recálculo de folha de milhões de pessoas pode ser assíncrono: recebe a solicitação, coloca trabalho em fila, processa com controle e devolve um protocolo.
Uma integração antiga pode continuar usando SOAP e XML; uma nova pode preferir REST e JSON.
Não existe medalha para quem força tudo a virar API síncrona. Há apenas incidentes mais elegantes.
3. CICS: o recepcionista que não deixa o visitante chegar à sala-cofre
Para quem começa em COBOL, CICS pode parecer apenas aquele ambiente onde aparecem comandos EXEC CICS. Mas, nesta história, ele é muito mais: é um gerenciador de transações, recursos, segurança e execução online.
Pense no programa COBOL como o especialista que conhece a regra da folha. Ele não deveria receber uma ligação de qualquer pessoa, a qualquer hora, com campos sem validação e a ordem “faz aí”. CICS organiza a entrada, executa a transação sob controle, protege recursos, ajuda a lidar com concorrência e fornece mecanismos para a aplicação funcionar online com previsibilidade.
Quando a integração é feita adequadamente, o serviço não expõe necessariamente o programa legado inteiro. Ele expõe uma capacidade de negócio. Em vez de criar uma API chamada:
EXECUTA-PGM-PG1234-COM-AREA-DE-327-BYTES
você cria:
GET /customers/{id}/payroll-summary
O primeiro nome descreve o porão da casa. O segundo descreve o serviço que a empresa oferece. A diferença parece estética até o dia em que muda o programa interno e cinquenta consumidores externos não deveriam nem perceber.
4. O tradutor entre JSON e COBOL
Aqui está o ponto onde Watson encontra a lupa no chão.
JSON é flexível. Um campo pode vir ou não vir. Um valor pode chegar como texto, número, lista ou objeto. O formato é legível, usa UTF-8 e costuma carregar nomes expressivos.
COBOL, em contrapartida, gosta de estruturas definidas, tamanhos conhecidos e tipos declarados. Um identificador pode ser PIC X(5); uma data pode ter oito posições; um valor monetário pode ser PIC S9(7)V99 COMP-3. Isso não é uma deficiência. É parte da previsibilidade que tornou esses sistemas valiosos.
Uma representação de trabalho para a entrada poderia ser:
Uma camada de transformação recebe o JSON, aplica regras de mapeamento e fornece ao COBOL uma estrutura coerente. Na volta, converte o resultado para JSON:
O jovem padawan, hipnotizado pelo exemplo, talvez diga: “Então basta copiar os campos”. Watson, que já viu Holmes derrubar uma tese inteira por causa de uma cinza de charuto, deve desconfiar. Copiar campos é a parte fácil. Definir a semântica correta é o trabalho de verdade.
5. As cinco armadilhas escondidas no JSON
Identificador não é quantidade
O valor "00025" pode ser um código, não o número vinte e cinco. Se o aplicativo moderno o transforma em 25, os zeros à esquerda desaparecem. Para o COBOL e para a regra de negócio, isso pode apontar para outro registro ou simplesmente não encontrar nenhum.
Quando o dado representa identidade — conta, agência, matrícula, CPF formatado, código de produto — trate-o como texto, mesmo que visualmente só tenha dígitos.
Dinheiro não gosta de improviso
No Brasil, um usuário pode escrever 4500,00; JSON numérico usa ponto: 4500.00. Um valor monetário também não deve passar por conversões descuidadas de ponto flutuante. O desenho precisa definir precisão, arredondamento, moeda e comportamento para valores ausentes.
O campo COBOL S9(7)V99 COMP-3 é eficiente internamente, mas não deve “vazar” para o contrato. Externamente, o consumidor precisa de um número JSON ou, em situações que exijam controle absoluto de precisão, de uma convenção bem documentada.
Ausente, nulo, branco e zero são quatro pessoas diferentes
No JSON, um campo pode estar ausente, pode ser null, pode ser string vazia ou pode ser zero. No COBOL, dependendo do mapeamento, tudo isso pode acabar como espaços ou zeros. Se a API não define o comportamento, alguém poderá sem querer alterar um limite para zero ou apagar uma informação válida.
Datas são pequenas bombas-relógio
Defina um padrão externo, normalmente YYYY-MM-DD ou data-hora ISO 8601 com fuso. Nunca deixe cada consumidor decidir se 03/04/2026 significa 3 de abril ou 4 de março. O COBOL pode trabalhar internamente com outro layout, desde que a conversão seja centralizada e testada.
UTF-8, EBCDIC e o acento que virou evidência
O mundo web normalmente trafega UTF-8. O z/OS historicamente trabalha com EBCDIC em muitas áreas. Ferramentas e camadas modernas realizam conversões, mas o time precisa testar nomes com acentos, cedilha, caracteres especiais e limites de tamanho. “João D’Ávila” é um teste melhor do que “JOHN”.
Easter egg do caso: o primeiro incidente muitas vezes não aparece com um número errado. Ele aparece quando “AÇÃO PROMOCIONAL” se transforma em um texto esquisito no extrato e alguém descobre que o ambiente de teste só possuía clientes chamados ANA e JOSE.
6. REST, SOAP, MQ e o falso campeonato de tecnologias
REST com JSON é muito popular porque é simples de consumir por apps web e mobile. SOAP com XML ainda existe em muitas empresas e pode ser adequado em integrações formais já consolidadas. IBM MQ é excelente quando confiabilidade, desacoplamento e processamento assíncrono são mais importantes do que uma resposta imediata.
Veja a escolha pela pergunta de negócio, não pela propaganda:
Caso
Opção frequentemente adequada
Consultar saldo ou status
API REST síncrona
Integrar serviço corporativo antigo
SOAP/XML, se o contrato já existe
Enviar lote, evento ou comando crítico
IBM MQ
Publicar função CICS/IMS para apps digitais
z/OS Connect ou recurso CICS
Fazer o COBOL consumir serviço externo
Cliente HTTP, integração CICS ou camada intermediária
Watson perguntou se REST “substitui” MQ. Holmes respondeu que uma chave inglesa não substitui um extintor. As duas coisas são importantes; apenas não devem ser usadas no mesmo parafuso.
7. A regra de ouro: exponha capacidade, não a anatomia do legado
Um erro comum de modernização é publicar uma API que reproduz o layout interno da COMMAREA, inclusive nomes históricos, campos reservados e indicadores sem significado para o consumidor.
Isso permite modernizar por camadas. Por trás da API, você pode reorganizar programas, substituir um acesso, adicionar validações ou migrar uma parte do fluxo. Se o contrato público continuar compatível, o aplicativo consumidor não precisa saber da cirurgia interna.
É o princípio do strangler pattern: em vez de demolir um sistema inteiro num fim de semana heroico — geralmente seguido de uma segunda-feira traumática — a empresa cerca, substitui ou reorganiza partes aos poucos, mantendo o negócio funcionando.
8. Segurança: a porta moderna precisa ser mais forte, não mais aberta
Expor um serviço de mainframe não significa colocar uma transação CICS diretamente na internet e confiar no bom coração dos robôs. Uma arquitetura séria inclui autenticação, autorização, TLS, rate limiting, auditoria e mascaramento de dados.
Uma resposta para um app não deve devolver ASRA, S0C7, SQLCODE -805 ou o nome da tabela interna. Essas informações são valiosas para diagnóstico, mas péssimas como interface externa e potencialmente úteis para um atacante.
Em vez disso:
{
"status": "ERROR",
"code": "EMPLOYEE_NOT_FOUND",
"message": "Employee was not found."
}
Do lado interno, a equipe mantém o detalhe: correlation ID, usuário técnico, horário, URI, transação CICS, programa chamado, SQLCODE e logs de segurança. Um bom correlation ID é a etiqueta de bagagem da transação: ele permite seguir a mesma solicitação do celular até o programa COBOL, passando pelo gateway e pelo CICS.
Também vale a dica de Watson para qualquer iniciante: não coloque segredo no código. Senhas, tokens, certificados e chaves de API precisam de gestão apropriada, rotação e controle de acesso. Um segredo em fonte COBOL é apenas um incidente aguardando o próximo upload ou print de tela.
9. Passo a passo: como transformar uma regra COBOL em serviço
Vamos supor que a empresa quer publicar a consulta resumida de folha de um funcionário.
Descubra a capacidade de negócio. Não comece pelo programa. Comece pela pergunta: “o que o canal digital precisa saber?”. Aqui: consultar o resumo de folha de um funcionário autorizado.
Mapeie a regra existente. Qual programa COBOL calcula ou consulta o dado? Ele recebe COMMAREA? Usa CHANNEL/CONTAINER? Chama outros módulos? Consulta Db2, VSAM ou IMS? Possui efeitos colaterais?
Defina o contrato da API. Nome, URI, método HTTP, campos obrigatórios, tipos, respostas, erros, versão e exemplos. Um contrato bem escrito é uma peça de engenharia, não burocracia.
Crie uma camada adaptadora se necessário. O programa antigo não precisa ser mutilado para ficar bonito para a API. Um programa ou serviço adaptador pode receber a estrutura externa, validar, chamar a regra existente e montar a resposta.
Implemente o mapeamento. Decida como cada campo JSON vira uma variável COBOL e como cada resultado vira JSON. Documente regras de nulo, espaços, zeros, datas, arredondamento e caracteres.
Proteja a entrada. Autentique o cliente, autorize a operação, valide tamanhos e conteúdo. Não deixe um campo de 40 caracteres cair numa área de 10 porque “em homologação funcionou”.
Teste o caminho feliz e o caminho humano. O caminho feliz é funcionário existente, valor válido e infraestrutura saudável. O caminho humano inclui ID inexistente, requisição duplicada, JSON malformado, campo ausente, timeout, Db2 indisponível, acesso não autorizado e caracteres especiais.
Observe a operação. Inclua logs, métricas, traces e correlation ID. Uma API que funciona só quando alguém está olhando o console não está pronta para produção.
Publique sem quebrar consumidores. Se a versão 1 está em uso, não renomeie um campo de uma hora para outra. Versione, mantenha compatibilidade durante a transição e avise quem consome.
Meça o resultado. Tempo de resposta, volume, erros por tipo, picos, dependências e impacto no CICS/Db2. Modernização sem observabilidade é apenas uma aposta com interface bonita.
10. O que o COBOL iniciante deve aprender primeiro
Você não precisa dominar todos os produtos antes de entender a arquitetura. Comece construindo o mapa mental:
um programa COBOL recebe dados e devolve dados;
CICS coordena muitos programas online e protege a transação;
COMMAREA e CHANNEL/CONTAINER são formas de passar dados entre componentes CICS;
Db2, VSAM e IMS são fontes comuns de dados e regras;
HTTP/HTTPS levam a chamada;
JSON é o envelope legível pelo aplicativo moderno;
uma API estabelece contrato, segurança e governança.
Depois, pratique separação de responsabilidades. Faça um programa COBOL que receba uma estrutura simples, valide um identificador, consulte um dado fictício ou Db2 de laboratório e devolva códigos de retorno claros. Em seguida, imagine como ele seria chamado por uma API. O salto mental mais importante não é decorar cada comando: é aprender a distinguir interface externa, regra de negócio e acesso a dados.
Epílogo — A conclusão de Watson
No fim do caso, o Dr. Watson fechou o caderno.
“Então o COBOL não está sobrevivendo apesar do mundo moderno. Ele pode participar dele porque sua regra continua útil — desde que alguém construa a ponte corretamente.”
Holmes assentiu.
“Precisamente. A tecnologia nova não apaga a necessidade de uma regra correta. Apenas aumenta a velocidade com que uma regra errada consegue chegar ao celular de milhões de pessoas.”
Essa é a grande lição. Modernizar COBOL não significa transformar todo programa em moda tecnológica nem tratar o mainframe como peça de museu. Significa criar integrações bem projetadas, seguras, observáveis e com contratos claros, preservando o que já funciona e mudando aquilo que precisa mudar.
O celular pode ter uma tela brilhante. O gateway pode estar na cloud. A resposta pode vir em JSON. Mas, no coração do processo, pode continuar existindo um programa COBOL que conhece a regra, protege o dado e não se impressiona com o último framework lançado numa sexta-feira.
E, quando a transação precisa fechar corretamente, Watson, é melhor que ele não se impressione mesmo.
Bellacosa Mainframe como java conversa com o mainframe
☕ Um Café no Bellacosa Mainframe
Java no IBM Z: Como Java Conversa com COBOL, DB2, CICS e o Mundo Mainframe na Prática
"O Java não chegou para substituir o COBOL. Ele chegou para conversar com ele."
Existe uma lenda que circula há muitos anos entre profissionais de TI.
Ela diz que existem dois mundos completamente diferentes.
De um lado está o mundo Mainframe.
Do outro está o mundo Java.
Na realidade... isso nunca foi verdade.
Hoje, milhares de bancos, seguradoras, governos e bolsas de valores executam aplicações onde Java, COBOL, CICS, DB2, MQ, z/OS Connect e APIs REST trabalham juntos no mesmo IBM Z.
A pergunta deixou de ser:
"Java ou COBOL?"
e passou a ser:
"Como fazer ambos trabalharem juntos?"
Pegue seu café porque hoje vamos abrir a tampa do motor do IBM Z.
A chegada do Java ao Mainframe
Quando Java apareceu em 1995, muitos profissionais de Mainframe olharam com desconfiança.
"Uma linguagem interpretada?"
"Rodando em máquina virtual?"
"Orientada a objetos?"
Parecia impossível competir com COBOL compilado.
Mas havia um detalhe importante.
Java tinha uma vantagem gigantesca.
Escrever uma vez, executar em qualquer lugar
A JVM (Java Virtual Machine) permitia que o mesmo programa funcionasse em:
Windows
Linux
Unix
AIX
IBM Z
A IBM rapidamente percebeu que clientes desejariam executar Java perto dos dados.
E onde estavam os dados?
No DB2.
No VSAM.
No IMS.
No CICS.
No MQ.
Ou seja...
Java precisava ir até o Mainframe.
Não fazia sentido mover bilhões de registros para outro servidor.
Muito mais eficiente era mover o processamento.
O nascimento do Java no z/OS
A IBM portou a JVM para o z/OS.
Depois vieram:
IBM SDK for Java
JZOS
JDBC para DB2
CICS Java
Liberty
WebSphere
OpenJ9 JVM
Hoje Java é cidadão de primeira classe dentro do IBM Z.
A arquitetura moderna
Imagine um banco.
Cliente Web
│
REST API
│
Liberty
│
Java
│
JDBC
│
DB2
Agora imagine outro fluxo.
Cliente
↓
CICS
↓
Programa Java
↓
Programa COBOL
↓
DB2
Ou ainda
Java
↓
MQ
↓
COBOL
↓
IMS
Ou
Java
↓
z/OS Connect
↓
CICS
↓
COBOL
↓
VSAM
Perceba.
O Java raramente trabalha sozinho.
Ele normalmente atua como a camada de integração.
JDBC
JDBC significa:
Java Database Connectivity
É a API padrão do Java para conversar com bancos de dados.
No Mainframe ela conversa principalmente com o DB2.
A regra de negócio continua praticamente a mesma. O que muda é a forma de organizá-la.
O futuro
Nos últimos anos surgiram novas tecnologias como:
Jakarta EE
Spring Boot
Quarkus
Open Liberty
z/OS Connect EE
APIs REST
GraphQL
Kafka
OpenShift
Red Hat Ansible Automation Platform
IA Generativa integrada ao IBM Z
Mesmo assim, o núcleo dos sistemas bancários continua sendo, em muitos casos, o mesmo:
COBOL processando regras críticas.
CICS coordenando milhões de transações.
DB2 armazenando dados.
Java expondo serviços modernos.
LinuxONE executando aplicações cloud-native próximas ao ambiente z/OS.
Conclusão
Durante muitos anos, criou-se a falsa ideia de que Java substituiria o COBOL. A história mostrou o contrário. O IBM Z evoluiu para unir o melhor dos dois mundos.
O COBOL permanece imbatível na execução de regras de negócio críticas e estáveis. O Java tornou-se a ponte para APIs REST, aplicações web, microsserviços, integração com nuvem, processamento orientado a objetos e experiências digitais modernas.
Hoje, quando um cliente consulta o saldo pelo aplicativo do banco, dificilmente percebe a sofisticada cadeia tecnológica envolvida. Um JSON percorre uma API REST hospedada em Open Liberty, passa por classes Java, utiliza JDBC para acessar o DB2 ou aciona um programa COBOL via CICS. Em segundos, o resultado retorna ao celular com segurança, integridade transacional e disponibilidade próxima de 100%.
Esse é o verdadeiro espírito do IBM Z moderno: não substituir o legado, mas ampliá-lo. Java, COBOL, CICS, DB2, JCL, LinuxONE, APIs e containers deixaram de ser tecnologias concorrentes e passaram a formar um único ecossistema. É justamente essa capacidade de integrar décadas de investimento com inovação contínua que mantém o Mainframe como a espinha dorsal de alguns dos maiores sistemas financeiros, governamentais e corporativos do planeta. E, para o profissional de Mainframe que aprende Java, abre-se uma nova fronteira: compreender não apenas como cada tecnologia funciona isoladamente, mas como elas conversam para sustentar o mundo digital moderno.
Bellacosa Mainframe e uma visão do servidor LinuxOne no Mainframe
☕💣 O DIA EM QUE O MAINFRAME GANHOU UM "SERVIDOR DE APLICAÇÕES GIGANTE": COMO WEB SERVICES CONECTAM z/OS E LINUXONE AO MUNDO MODERNO
Introdução
Durante décadas, o Mainframe foi visto como uma fortaleza isolada. Enquanto servidores Unix, Windows e Linux dominavam o mundo da internet, o z/OS continuava processando milhões de transações bancárias, governamentais e corporativas sem precisar aparecer para o usuário final.
O cliente acredita estar falando com uma aplicação moderna.
Mas no fundo uma rotina COBOL criada décadas atrás continua executando a lógica principal do negócio.
O Futuro
Hoje vemos LinuxONE executando:
Docker
Kubernetes
OpenShift
Python
Java
Node.js
IA Generativa
APIs REST
Microsserviços
Enquanto o z/OS continua executando:
COBOL
CICS
IMS
DB2
Batch
Os dois mundos coexistem.
Não existe substituição.
Existe integração.
Conclusão
O LinuxONE transformou a forma como o Mainframe conversa com o mundo moderno. Em vez de expor diretamente aplicações COBOL, as organizações passaram a utilizar APIs REST, servidores web, microsserviços e containers executando lado a lado com o z/OS no mesmo hardware IBM Z.
Na prática, o LinuxONE atua como uma camada de apresentação e integração, enquanto o z/OS continua sendo o coração do processamento transacional. O resultado é uma arquitetura capaz de unir décadas de investimento em aplicações COBOL com tecnologias modernas como Spring Boot, Kubernetes, OpenShift, APIs REST, JSON e autenticação OAuth.
É por isso que muitos especialistas afirmam que o futuro do Mainframe não está em substituir sistemas legados, mas em conectá-los ao ecossistema digital. E nessa missão, LinuxONE e z/OS formam uma das parcerias mais poderosas já criadas dentro da computação corporativa.
Bellacosa Mainframe e a conversação em cics parte III
☕ Um Café no Bellacosa Mainframe
CICS Conversacional e Pseudo-Conversacional
Parte 3 — Channels, Containers, BMS Avançado, APIs, Observabilidade e o Futuro do CICS
"Salve novamente, jovem Padawan Mainframe! Já entendemos por que a pseudo-conversação venceu, como a COMMAREA funciona e como o CICS se integrou ao mundo REST. Agora vamos explorar o lado mais moderno do CICS, descobrir como ele conversa com aplicações em nuvem, conhecer boas práticas utilizadas em bancos e seguradoras e entender por que muitos engenheiros consideram o CICS uma das obras-primas da engenharia de software."
Pegue seu terceiro café, deixe o CEDF ligado, abra uma aba do OMEGAMON, outra do SDSF e vamos continuar.
E milhões de transações continuam acontecendo diariamente.
Considerações finais
Aprender CICS conversacional e pseudo-conversacional é muito mais do que aprender comandos.
É entender como a IBM resolveu problemas de escalabilidade décadas antes da popularização da computação em nuvem.
É descobrir que conceitos como:
Stateless
Session Management
API Gateway
Observabilidade
Microserviços
Persistência de contexto
Já estavam presentes, de certa forma, em arquiteturas concebidas nos anos 70.
Talvez seja por isso que o CICS continue sendo uma das tecnologias mais fascinantes do IBM Z.
Porque ele não apenas sobreviveu ao tempo.
Ele evoluiu com ele.
E provavelmente continuará executando aplicações críticas quando muitos frameworks modernos já forem apenas uma nota de rodapé na história da computação.
No IBM Z, cada transação conta uma história. Cada COMMAREA guarda uma memória. E cada RETURN é apenas uma promessa de que a próxima task continuará exatamente de onde paramos.
Bellacosa Mainframe e a conversação em cics parte II
☕ Um Café no Bellacosa Mainframe
CICS Conversacional e Pseudo-Conversacional
Parte 2 — Escalabilidade, COMMAREA, Channels, Web Services e Boas Práticas
"Na primeira parte aprendemos que programas conversacionais gostam de ficar esperando o usuário pensar, enquanto programas pseudo-conversacionais executam como ninjas do IBM Z: aparecem, trabalham, desaparecem e retornam apenas quando necessários. Agora vamos entender por que a IBM praticamente transformou a pseudo-conversação em padrão de mercado."
Pegue mais um café, abra o CEDF, deixe o CEMT pronto e vamos continuar nossa jornada.
Os problemas do modelo Conversacional
O modelo conversacional é elegante.
É simples.
É intuitivo.
Mas infelizmente é extremamente caro.
Vamos imaginar um banco.
Cenário
50.000 usuários.
Cada usuário demora:
20 segundos
para preencher uma tela.
Aplicação Conversacional
Programa fica ativo.
Task permanece viva.
TCB permanece associado.
TCA permanece ocupada.
Storage continua reservado.
EIB continua residente.
Tudo isso...
Durante vinte segundos.
Resultado
Pouca escalabilidade.
Maior uso de CPU.
Maior consumo de memória.
Possibilidade de gargalos.
O fenômeno Think Time
Um dos maiores inimigos do CICS.
Think Time.
Tempo em que o usuário está apenas pensando.
Exemplos:
Lendo uma tela.
Pegando um documento.
Atendendo telefone.
Procurando CPF.
Conversando com cliente.
Conversacional
Think Time = recursos desperdiçados
Pseudo
Think Time = recursos liberados
A IBM fez uma escolha inteligente
Ao invés de esperar.
Finaliza a task.
Salva contexto.
Cria nova task depois.
Visualmente:
Task 1
Mostra tela
RETURN
=================
Usuário pensa
=================
Task 2
Recebe dados
Processa
RETURN
Múltiplas telas
Poucos desenvolvedores COBOL iniciantes percebem.
Uma pseudo-conversação pode navegar por dezenas de telas.
Exemplo:
Menu
Consulta
Inclusão
Alteração
Confirmação
Resumo
Help
Paginação
Exemplo
MENU
↓
PF5
↓
CONSULTA
↓
ENTER
↓
DETALHE
↓
PF3
↓
MENU
Tudo utilizando.
COMMAREA.
COMMAREA
Provavelmente um dos conceitos mais importantes do CICS.
☕💣 APIs RESTful: O Dia em Que os Sistemas Descobriram Como Conversar Sem Trocar JCL
Imagine a seguinte situação.
Você está em um banco em 1985. Um programa COBOL executando em um IBM Mainframe processa milhões de transações diariamente. Tudo funciona perfeitamente.
Agora avance para 2026.
O mesmo banco continua utilizando COBOL, CICS, DB2 e z/OS para movimentar bilhões de dólares todos os dias. Porém, existe um detalhe importante: os clientes não acessam mais o sistema através de terminais 3270.
Eles utilizam aplicativos móveis, internet banking, chatbots, APIs, inteligência artificial e até relógios inteligentes.
A pergunta é:
Como um aplicativo moderno conversa com um sistema desenvolvido há décadas?
A resposta, em grande parte dos casos, está em uma tecnologia chamada API RESTful.
Hoje vamos conhecer sua história, origem, criador, funcionamento, curiosidades e entender por que ela se tornou uma das tecnologias mais importantes da computação moderna.
O Que é uma API?
API significa:
Application Programming Interface
ou
Interface de Programação de Aplicações.
Uma API é um conjunto de regras que permite que dois sistemas conversem entre si.
Pense nela como um atendente de restaurante.
Você não entra na cozinha para preparar sua comida.
Você faz um pedido ao garçom.
O garçom leva o pedido.
A cozinha processa.
O garçom retorna o resultado.
A API faz exatamente isso.
Ela recebe solicitações.
Encaminha para o sistema responsável.
Obtém uma resposta.
Entrega o resultado ao solicitante.
O Que Significa REST?
REST significa:
Representational State Transfer
O termo surgiu oficialmente em:
Ano: 2000
Criado por:
Roy Thomas Fielding
Durante sua tese de doutorado na Universidade da Califórnia (UC Irvine).
O trabalho recebeu o nome:
Architectural Styles and the Design of Network-based Software Architectures
Nele, Fielding descreveu um conjunto de princípios para criar sistemas distribuídos mais simples, escaláveis e independentes.
Curiosamente, REST não é uma tecnologia.
Não é um produto.
Não é um software.
Não é um protocolo.
É um estilo arquitetural.
Quem é Roy Fielding?
Roy Fielding é uma das figuras mais importantes da história da Internet.
Além de criar o conceito REST, ele também participou da especificação de tecnologias fundamentais da Web.
Entre elas:
HTTP 1.0
HTTP 1.1
URI
Apache HTTP Server
Sim.
O mesmo protocolo HTTP que usamos diariamente para acessar sites recebeu contribuições diretas do criador do REST.
Poucas pessoas sabem disso.
Data de Criação
O conceito REST foi publicado oficialmente em:
2000
Portanto, em 2026, o REST possui:
26 anos de existência
Mesmo assim continua sendo a arquitetura dominante para integração de sistemas.
Algo raro em tecnologia.
Existe uma Versão do REST?
Não.
Esse é um detalhe interessante.
REST não possui:
Release 1
Release 2
Versão 10
REST é apenas um conjunto de princípios arquiteturais.
O que evolui são as tecnologias utilizadas ao seu redor:
HTTP
JSON
XML
OpenAPI
Swagger
OAuth
JWT
Por isso não existe algo como:
"REST versão 3.0"
Como Funciona uma API RESTful?
Uma API RESTful utiliza recursos identificados por URLs.
Exemplos:
/clientes
/contas
/cartoes
/emprestimos
Cada URL representa um recurso.
O cliente realiza operações utilizando métodos HTTP.
Os Principais Métodos HTTP
GET
Utilizado para consultar informações.
Exemplo:
GET /clientes/1001
Resposta:
{
"codigo":1001,
"nome":"João Silva"
}
POST
Utilizado para criar registros.
Exemplo:
POST /clientes
PUT
Atualiza um recurso existente.
Exemplo:
PUT /clientes/1001
DELETE
Remove um recurso.
Exemplo:
DELETE /clientes/1001
Uma Analogia Mainframe
Imagine um sistema CICS.
No passado, um terminal 3270 enviava uma transação.
Hoje um aplicativo celular faz uma chamada REST.
Fluxo:
App Mobile
|
v
API REST
|
v
CICS
|
v
COBOL
|
v
DB2
Para o programa COBOL, pouco muda.
Ele continua processando regras de negócio.
A diferença está na forma de acesso.
Por Que REST Ficou Tão Popular?
Antes do REST, muitas integrações utilizavam:
RPC
CORBA
DCOM
SOAP
Essas tecnologias eram poderosas, porém complexas.
REST trouxe:
Simplicidade
Escalabilidade
Facilidade de implementação
Menor consumo de recursos
O resultado foi uma adoção massiva.
O Papel do JSON
Embora REST não exija JSON, ambos praticamente cresceram juntos.
JSON é menor, mais simples e mais rápido de processar.
Por isso tornou-se o padrão de mercado.
Características Obrigatórias do REST
Roy Fielding definiu restrições importantes.
Cliente-Servidor
Cliente e servidor são independentes.
O aplicativo não precisa conhecer detalhes internos do sistema.
Stateless
Cada requisição deve conter todas as informações necessárias.
O servidor não depende de estados anteriores.
Essa característica facilita escalabilidade.
Cache
Respostas podem ser armazenadas temporariamente.
Isso reduz processamento e tráfego.
Interface Uniforme
Todas as APIs seguem padrões semelhantes.
Isso facilita aprendizado e manutenção.
Sistema em Camadas
O cliente não sabe quantos componentes existem entre ele e o servidor.
Pode haver:
Firewalls
Gateways
Balanceadores
Proxies
Tudo permanece transparente.
REST e o Mundo Mainframe
Muitos profissionais acreditam que REST e Mainframe são mundos diferentes.
Nada poderia estar mais distante da realidade.
Hoje encontramos APIs REST acessando:
COBOL
PL/I
Natural
CICS
IMS
DB2
VSAM
Praticamente todos os grandes bancos utilizam essa arquitetura.
Exemplo Real
Imagine um aplicativo bancário.
Quando o cliente consulta saldo:
GET /contas/123456/saldo
A API recebe a solicitação.
Ela chama um serviço no CICS.
O CICS executa um programa COBOL.
O COBOL consulta DB2.
O resultado retorna em JSON.
O cliente vê o saldo instantaneamente.
Tudo em poucos milissegundos.
REST no z/OS
Atualmente existem diversas tecnologias IBM para expor aplicações como APIs.
Entre elas:
z/OS Connect
CICS Web Services
CICS REST APIs
IBM API Connect
IMS Connect
MQ REST Gateway
Essas ferramentas transformam aplicações legadas em serviços modernos.
Curiosidade Histórica
Muitos dos sistemas considerados "modernos" dependem diretamente de aplicações desenvolvidas há décadas.
Quando você:
Faz um PIX
Passa cartão
Compra passagem aérea
Faz saque bancário
Existe uma grande chance de um programa COBOL estar envolvido.
E frequentemente o acesso ocorre através de APIs REST.
REST vs SOAP
Uma comparação clássica.
REST
SOAP
Simples
Complexo
Leve
Pesado
JSON
XML
Fácil adoção
Configuração extensa
Mais popular atualmente
Muito usado em legado corporativo
Apesar disso, SOAP continua presente em diversos ambientes bancários.
Segurança em APIs REST
Uma API aberta seria extremamente perigosa.
Por isso existem mecanismos de proteção.
Os principais:
HTTPS
OAuth 2.0
JWT
API Keys
OpenID Connect
Eles garantem:
Autenticação
Autorização
Criptografia
Auditoria
REST e a Era da Inteligência Artificial
A explosão da IA aumentou ainda mais a importância das APIs.
Quando um chatbot consulta informações de um sistema corporativo, normalmente utiliza APIs.
Quando um assistente virtual consulta saldo bancário, utiliza APIs.
Quando aplicações integram modelos de IA com sistemas empresariais, utilizam APIs.
REST tornou-se o idioma universal da integração digital.
O Futuro do REST
Novas tecnologias surgiram.
Entre elas:
GraphQL
gRPC
AsyncAPI
Mesmo assim, REST continua dominante.
O motivo é simples.
Bilhões de aplicações já utilizam esse modelo.
Sua simplicidade continua sendo sua maior vantagem.
Conclusão
APIs RESTful representam uma das maiores revoluções silenciosas da computação moderna.
Criadas por Roy Fielding em 2000, elas permitiram que sistemas de diferentes gerações passassem a conversar de maneira simples, eficiente e padronizada.
Graças ao REST, aplicativos móveis conseguem acessar programas COBOL.
Plataformas de IA conseguem consultar sistemas bancários.
Empresas integram milhares de aplicações diariamente.
E o mais curioso:
Enquanto muita gente acredita que o Mainframe ficou preso ao passado, ele continua movimentando a economia mundial utilizando tecnologias modernas de integração.
Afinal, por trás de muitos aplicativos considerados revolucionários existe algo extremamente familiar para nós, mainframeiros:
um programa COBOL processando regras de negócio com a mesma confiabilidade de décadas atrás.
A diferença é que agora ele conversa com o mundo através de APIs RESTful.
☕💣 Moral da história: REST não substituiu o Mainframe. Pelo contrário. Tornou-se uma das principais pontes que conectam a robustez do COBOL, CICS e DB2 ao universo de aplicativos, nuvem, microsserviços e inteligência artificial.
Bellacosa Mainframe apresenta API na Stack Mainframe
O que são APIs e seu Uso no Mainframe?
As APIs (Application Programming Interfaces) revolucionaram a forma como sistemas trocam informações. Hoje, elas são a principal ponte entre aplicações modernas, dispositivos móveis, plataformas Cloud e os sistemas Mainframe que processam as operações mais críticas do mundo.
Quando você consulta saldo pelo celular, faz um PIX, compra com cartão ou utiliza um aplicativo bancário, existe uma grande chance de uma API estar conversando com um programa COBOL executando em um Mainframe IBM Z.
O que é uma API?
API significa:
Application Programming Interface
Ou seja:
Interface de Programação de Aplicações
É um conjunto de regras que permite que um sistema solicite serviços ou informações de outro sistema.
Analogia Simples
Imagine um restaurante:
Cliente
↓
Garçom
↓
Cozinha
↓
Resposta
Nesse cenário:
Cliente = Aplicação
Garçom = API
Cozinha = Sistema Mainframe
A API recebe o pedido, encaminha para o sistema correto e devolve a resposta.
Exemplo do Dia a Dia
Aplicativo bancário:
App Mobile
↓
API
↓
COBOL
↓
DB2
↓
Resposta
O cliente vê apenas a tela do aplicativo.
Nos bastidores, uma API conversa com o Mainframe.
Por que APIs são importantes?
Antes das APIs, a integração era feita através de:
Arquivos
FTP
MQ
Batch
Troca de datasets
Essas soluções funcionavam, mas eram mais lentas e complexas.
Consultas podem ser disponibilizadas através de APIs.
Exemplo:
SELECT SALDO
FROM CLIENTES
↓
{
"saldo":5000
}
Open Banking e APIs
Grande parte do Open Finance utiliza:
REST
JSON
OAuth
TLS
integrados ao Mainframe.
Segurança das APIs
Aspecto fundamental.
Normalmente utilizam:
HTTPS
TLS
OAuth 2.0
JWT
Certificados Digitais
RACF
Exemplo de Fluxo Seguro
App
↓
OAuth
↓
API
↓
RACF
↓
COBOL
Benefícios para o Mainframe
✅ Modernização sem reescrever COBOL
✅ Integração com Cloud
✅ Integração Mobile
✅ Exposição de serviços legados
✅ Reutilização de regras de negócio
✅ Menor custo de transformação digital
Desafios
❌ Segurança
❌ Governança
❌ Controle de versões
❌ Performance
❌ Monitoramento
Tecnologias Comuns
Tecnologia
Função
REST
APIs modernas
JSON
Formato de dados
SOAP
Web Services XML
z/OS Connect
Expor COBOL como API
CICS
Processamento transacional
IMS Connect
APIs para IMS
DB2
Banco de dados
RACF
Segurança
Curiosidade
Muitos bancos processam milhões de chamadas de APIs por dia que, nos bastidores, executam programas COBOL escritos há décadas. O aplicativo parece moderno, mas a regra de negócio continua protegida e executada no Mainframe.
As APIs são interfaces que permitem a comunicação entre sistemas. No Mainframe, elas desempenham um papel essencial na modernização das aplicações COBOL, conectando sistemas IBM Z a aplicativos móveis, plataformas Cloud, microsserviços e ecossistemas digitais modernos. Tecnologias como REST, JSON, CICS Web Services, IMS Connect e z/OS Connect tornaram possível integrar décadas de investimento em Mainframe ao mundo das APIs de forma segura, escalável e eficiente.
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