| Bellacosa Mainframe apresenta o CALL em Cobol Parte VI |
☕💥 A Jornada do Padawan COBOL – Parte 6
Desvendando o Universo dos CALLs no Mainframe
CICS LINK, XCTL, COMMAREA, Channels, Containers, APIs REST, MQ, Java e os Segredos dos Arquitetos da Nova República IBM Z
Ou como descobrir que um programa COBOL escrito em 1987 pode responder uma API REST em menos tempo do que muita startup consegue carregar um framework
Por Vagner Bellacosa – Bellacosa Mainframe
O dia em que o Padawan descobre que CALL não é a única forma de chamar programas
Até agora aprendemos:
✅ CALL estático
✅ CALL dinâmico
✅ Binder
✅ RENT
✅ CEEDUMP
✅ LPA
✅ LE
Mas um dia o Padawan entra em um ambiente CICS.
Abre um programa.
E encontra isto:
EXEC CICS LINK
PROGRAM('PGM0001')
COMMAREA(WS-COMM)
END-EXEC
E pensa:
Ué...
Cadê o CALL?
O universo paralelo do CICS
Em Batch usamos:
CALL 'VALIDA'
No CICS temos:
LINK
XCTL
START
RETURN
LOAD
DELETE
LINK
É praticamente o CALL do CICS.
Exemplo
EXEC CICS LINK
PROGRAM('CPFVAL')
COMMAREA(WS-COMMAREA)
END-EXEC
Visualmente
CLIENTE01
↓
LINK
↓
CPFVAL
↓
RETORNA
↓
CLIENTE01
Programa chamador continua vivo.
Igual ao CALL.
Vantagens
Retorna controle
Compartilha contexto
Excelente modularização
Pode executar milhares de vezes
XCTL
Agora a coisa muda.
Exemplo
EXEC CICS XCTL
PROGRAM('MENU0001')
END-EXEC
Visualmente
TELA01
↓
XCTL
↓
MENU0001
TELA01 morre
Não retorna.
Nunca.
É quase um:
exit();
Quando usar?
Troca definitiva.
Menu.
Workflow.
Navegação.
LINK versus XCTL
| Característica | LINK | XCTL |
|---|---|---|
| Retorna | Sim | Não |
| Consome stack | Sim | Não |
| Performance | Boa | Excelente |
| Workflow | Médio | Ideal |
COMMAREA
A rainha do CICS.
Ela transporta dados.
Exemplo
01 WS-COMM.
05 WS-CPF PIC X(11).
05 WS-NOME PIC X(30).
05 WS-RC PIC 99.
LINK
EXEC CICS LINK
PROGRAM('CPFVAL')
COMMAREA(WS-COMM)
LENGTH(100)
END-EXEC
Subprograma
DFHCOMMAREA.
O limite
64 KB
Padawan feliz.
Arquiteto preocupado.
Channels e Containers
IBM resolveu.
Nasce o conceito:
CHANNEL
CONTAINER
Praticamente JSON.
Mas IBM.
Exemplo
EXEC CICS PUT CONTAINER
CONTAINER('CLIENTE')
CHANNEL('CANAL1')
FROM(WS-CLIENTE)
END-EXEC
Ler
EXEC CICS GET CONTAINER
CONTAINER('CLIENTE')
CHANNEL('CANAL1')
INTO(WS-CLIENTE)
END-EXEC
Vantagens
Gigabytes.
Múltiplos objetos.
Flexível.
MQ
Padawan evolui.
Conhece IBM MQ.
Exemplo
CALL 'MQPUT'
Visualmente
COBOL
↓
MQPUT
↓
QUEUE
↓
JAVA
↓
API
Assíncrono.
Bonito.
Elegante.
IBM aprova.
APIs REST
O grande sonho.
"Posso expor COBOL como API?"
Sim.
Muito.
zOS Connect
O mago moderno.
Ele converte
REST
em
COBOL
Visualmente
POST /cliente
↓
zOS Connect
↓
COBOL
↓
DB2
↓
JSON
Cliente pensa:
Microserviço.
Realidade:
COBOL 1989.
Exemplo
API
{
"id":123
}
COBOL
01 WS-ID PIC 9(9).
Java
Sim.
Java conversa.
JNI.
LE.
DLL.
Exemplo
CobolService.executar();
COBOL
CALL 'PROCESSA'
Python
Sim.
Também.
API REST.
MQ.
Kafka.
Tudo possível.
Metal C
Território avançado.
Muito usado.
IBM Z.
Baixa latência.
zIIP
Arquiteto sorri.
Financeiro também.
Pode descarregar CPU.
Exemplo
JSON parsing.
REST.
MQ.
DB2 DRDA.
SMF 110
O espião do CICS.
Captura:
Tempo
CPU
LINK
XCTL
DB2
MQ
APA
Application Performance Analyzer
Mostra:
Hotspots
CALLs
Loops
CPU
Strobe
Ferramenta lendária.
Veteranos adoram.
Exemplo real
Programa
1000 LINKs
Tempo
5 segundos
Após otimização
400 ms
Truques Bellacosa
Dica 1
LINK
Retorna.
Dica 2
XCTL
Não retorna.
Dica 3
Channels > COMMAREA
Projetos novos.
Dica 4
MQ desacopla.
Dica 5
REST não mata COBOL.
REST promove COBOL.
Easter Egg Mainframe
Muitos bancos possuem.
Programa.
APIGEN01
Dentro.
EXEC CICS LINK
PROGRAM('LEG1987')
END-EXEC
API moderna.
Swagger.
OAuth.
OpenAPI.
JWT.
Kubernetes.
No final...
Executa.
MOVE SALDO TO WS-SALDO
Escrito em 1987.
Funciona.
Processa bilhões.
Ninguém reclama.
Checklist Jedi da Integração
✅ Preferir LINK
✅ XCTL para troca definitiva
✅ Evitar COMMAREA grande
✅ Usar Channels
✅ Monitorar SMF110
✅ Medir CPU
✅ Utilizar MQ
✅ Explorar zOS Connect
✅ Aproveitar zIIP
✅ Testar latência
✅ Documentar APIs
A Filosofia Jedi do CALL – Parte 6
O Padawan iniciante acredita:
COBOL só conversa com COBOL.
O desenvolvedor intermediário pensa:
COBOL pode consumir APIs.
O Arquiteto IBM Z entende:
COBOL conversa com qualquer tecnologia capaz de trocar bytes, mensagens, estruturas, JSON, XML ou eventos.
E é exatamente por isso que alguns dos sistemas mais modernos do planeta possuem uma arquitetura semelhante a esta:
Mobile
↓
API Gateway
↓
REST
↓
zOS Connect
↓
CICS LINK
↓
COBOL
↓
DB2
↓
MQ
↓
Analytics
↓
IA
Enquanto o cliente enxerga apenas um botão escrito "Consultar Saldo", um pequeno exército de programas COBOL, escritos ao longo de quarenta anos, continua executando silenciosamente milhões de chamadas por segundo, provando mais uma vez que, no Mainframe, a Força nunca esteve na moda da tecnologia, mas na sua capacidade de durar décadas sem perder desempenho, segurança e confiabilidade.
Próxima aventura do Padawan COBOL – Parte 7
Assembler, BALR, BASSM, PC-Bit, SVC, LE Internals, SRBs, TCBs, Cross Memory Services, zIIP, HiperDispatch e os segredos obscuros dos Sysprogs Jedi do IBM Z.
Sem comentários:
Enviar um comentário