| 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.
O problema da COMMAREA
Durante décadas a COMMAREA foi suficiente.
64 KB.
Poucos campos.
Poucos estados.
Poucos dados.
Era perfeito.
Mas o mundo mudou.
Hoje temos:
JSON
JWT
XML
SOAP
REST
Objetos complexos
Payloads gigantes
A chegada dos Channels
A IBM precisava resolver isso.
E resolveu.
CICS TS 3.1
Introduziu:
Channels
Containers
O que é um Channel?
Pense em um diretório.
CLIENTE
│
├── CPF
├── ENDERECO
├── LIMITE
├── HISTORICO
└── TOKEN
O Channel funciona exatamente assim.
Um agrupador.
Pode conter vários Containers.
O que é um Container?
Container é um objeto.
Armazena informações.
Pode conter:
Texto
XML
JSON
Estruturas COBOL
Blobs
Imagens
Arquivos
Comparativo
| Tecnologia | Capacidade |
|---|---|
| COMMAREA | 64 KB |
| TSQ | MB |
| Container | GB |
| DB2 | TB |
Exemplo COBOL
Criando.
EXEC CICS PUT CONTAINER
CONTAINER('CLIENTE')
CHANNEL('CADASTRO')
FROM(WS-DADOS)
FLENGTH(WS-TAM)
END-EXEC.
Recuperando.
EXEC CICS GET CONTAINER
CONTAINER('CLIENTE')
CHANNEL('CADASTRO')
INTO(WS-DADOS)
END-EXEC.
BMS continua vivo?
Muito.
Talvez mais vivo do que muita gente imagina.
Grandes bancos.
Seguradoras.
Cartões.
Previdência.
Companhias aéreas.
Utilities.
Governo.
BMS avançado
Poucos desenvolvedores usam.
SEND MAP ACCUM
Acumula telas.
Exemplo
EXEC CICS SEND MAP
ACCUM
END-EXEC
SEND PAGE
Paginação.
SEND CONTROL
Controle terminal.
ERASEAUP
Limpa apenas campos editáveis.
CURSOR
Posicionamento dinâmico.
Exemplo
Cursor no CPF.
MOVE -1 TO CPFL
EXEC CICS SEND
MAP('TELA1')
CURSOR
END-EXEC
APIs no CICS
Aqui muita gente se surpreende.
O CICS é praticamente um Application Server.
Suporta.
HTTP
HTTPS
SOAP
REST
MQ
TCP/IP
JMS
JSON
XML
Exemplo moderno
Aplicativo Android.
↓
API Gateway
↓
z/OS Connect
↓
CICS
↓
COBOL
↓
DB2
z/OS Connect
Talvez uma das melhores ideias da IBM.
Transforma.
COBOL
em
API REST.
Sem reescrever.
Sem Java.
Sem Node.
Sem Python.
Exemplo.
Cliente faz:
GET /clientes/123
Internamente.
CICS chama.
PERFORM CONSULTA-DB2
Retorna.
{
"id":123,
"nome":"Bellacosa"
}
Web Open Interface
WOI.
Pouco conhecido.
Muito poderoso.
Permite integração.
HTTP.
TCP.
Sockets.
Event Processing
Outro recurso fantástico.
CICS captura eventos.
Exemplo.
Cliente alterou endereço.
Evento.
Publica MQ.
Outro sistema consome.
Observabilidade
Década de 80.
Console.
Dump.
IPCS.
Hoje.
OpenTelemetry.
Prometheus.
Grafana.
OMEGAMON.
Instana.
Elastic.
Métricas interessantes
Task Time.
CPU.
Response.
DB2.
MQ.
VSAM.
O CICS morreu?
Pergunta clássica.
Resposta curta.
Não.
Resposta longa.
Muito pelo contrário.
Ele evoluiu.
Muito.
Anos 70
3270
Anos 80
BMS
Anos 90
MQ
2000
SOAP
2010
REST
2020
Containers
2025
OpenTelemetry
IA
APIs
Cloud híbrida
Problemas comuns
COMMAREA gigante
Erro clássico.
Não usar pseudo
Aplicação lenta.
Múltiplos SEND
Desnecessário.
Não verificar RESP
Perigoso.
MDT ligado em tudo
Tráfego excessivo.
Dicas Bellacosa Mainframe
Utilize sempre
DATAONLY.
Sempre valide
RESP.
Use CEDF
Use CECI
Use Channels
Projetos novos.
Mantenha COMMAREA pequena
Nomeie MAPSET adequadamente
Exemplo.
CLI001
CLI002
CLI003
Easter Eggs Mainframe
Programadores antigos adoravam esconder mensagens.
Exemplo.
* MAY THE COBOL BE WITH YOU
Outro clássico.
* IF IT WORKS
* DON'T TOUCH
Mais um.
* WRITTEN 1987
* STILL RUNNING
Curiosidade
Diversos sistemas escritos em 1986.
Rodam hoje.
No z16.
No z17.
Praticamente sem alterações.
Trocaram.
CPU.
Storage.
Rede.
Interface.
Mas o COBOL.
Continua.
O CICS.
Continua.
O DB2.
Continua.
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.
Até o próximo café no Bellacosa Mainframe.