| Bellacosa Mainframe e o misterio das 3 portas do cics |
☕ Um Café no Bellacosa Mainframe
O Mistério das Três Portas do CICS
Quando um Jovem Programador COBOL Descobriu que uma Escolha Entre LINK, XCTL e START Poderia Decidir o Destino de Milhões de Transações
"Naquela noite, o relógio marcava 02h17 da madrugada. O CPD estava silencioso. Apenas o som dos discos girando quebrava o silêncio. Um jovem programador COBOL observava um abend misterioso enquanto um velho analista, conhecido apenas como Bellacosa, aproximava-se lentamente com uma xícara de café fumegante. Sem dizer uma palavra, desenhou três portas em um bloco de papel. Sobre elas escreveu apenas três nomes: LINK. XCTL. START. 'Todo programador chega a este corredor um dia', disse ele. 'O problema é que muitos escolhem a porta errada...'."
O Caso das Três Portas
Se existe um tema que separa um programador COBOL iniciante de um desenvolvedor CICS experiente, é o entendimento do Program Control.
À primeira vista, LINK, XCTL e START parecem comandos semelhantes. Todos executam outro programa. Todos transferem controle. Todos podem utilizar COMMAREA.
Mas essa semelhança é apenas superficial.
Na prática, eles representam três formas completamente diferentes de pensar uma aplicação transacional.
É como três detetives investigando o mesmo crime usando métodos distintos.
Um faz perguntas e volta com respostas.
Outro assume a investigação inteira.
O terceiro abre um novo caso enquanto continua trabalhando no atual.
Entender essa diferença é compreender uma das peças centrais da arquitetura do CICS.
E essa história começa muito antes da primeira linha de COBOL.
O CICS Nunca Perde o Controle
O primeiro erro dos iniciantes é imaginar que um programa COBOL "chama" outro programa.
Na realidade...
Quem chama é o CICS.
Seu programa apenas faz um pedido.
Imagine um grande hotel cinco estrelas.
O hóspede não entra na cozinha.
Ele não abre a porta da lavanderia.
Ele não liga diretamente para o gerente.
Tudo passa pela recepção.
O CICS funciona exatamente assim.
Quando escrevemos:
EXEC CICS LINK PROGRAM('VALIDA')
END-EXEC.
não estamos dizendo ao computador:
Execute o programa VALIDA.
Estamos dizendo ao CICS:
"Por favor, transfira o controle para VALIDA seguindo todas as regras da arquitetura."
Isso muda completamente nossa forma de pensar.
O CICS controla:
Memória
Tasks
Locks
Arquivos
Transações
Recursos
Segurança
Recuperação
Nada acontece sem sua autorização.
O Verdadeiro Significado de "Program Control"
Program Control não significa apenas mudar de programa.
Significa administrar a vida inteira da transação.
Quem continua?
Quem termina?
Quem espera?
Quem retorna?
Quem libera memória?
Quem inicia outra task?
Essas perguntas são respondidas justamente por LINK, XCTL e START.
PRIMEIRA PORTA
LINK
Na velha revista noir, Bellacosa desenha um telefone.
"LINK", diz ele.
"É como ligar para um especialista."
Você faz uma pergunta.
Ele responde.
Você continua seu trabalho.
Nada mais.
Fluxo Mental
Programa A
↓
LINK
↓
Programa B
↓
RETURN
↓
Programa A continua
Perceba que o Programa A nunca desaparece.
Ele apenas espera.
Uma Analogia Policial
Sherlock Holmes precisa descobrir se uma assinatura é falsa.
Ele chama um perito grafotécnico.
O perito faz seu trabalho.
Entrega o laudo.
Sherlock continua a investigação.
Ele não entrega o caso ao perito.
Foi apenas uma consulta.
Esse é exatamente o espírito do LINK.
Por que LINK existe?
Porque duplicar código é um crime.
Imagine um banco.
Existem milhares de programas.
Todos precisam validar CPF.
Todos precisam validar agência.
Todos precisam calcular tarifas.
Sem LINK seria algo parecido com isto:
Programa A
↓
1000 linhas de validação
Programa B
↓
1000 linhas iguais
Programa C
↓
Mais 1000 linhas iguais
Resultado?
Uma manutenção impossível.
Então surgiu a ideia da modularização.
Criar um programa especializado.
Todos fazem LINK.
Todos reutilizam.
Curiosidade Histórica
Os primeiros sistemas bancários gigantes da década de 80 começaram a reduzir drasticamente o tamanho dos programas graças ao uso intensivo de LINK.
Alguns módulos chegaram a ser reutilizados por mais de 5.000 programas diferentes.
Imagine alterar uma regra tributária.
Em vez de recompilar cinco mil programas...
Recompila-se apenas um módulo.
Essa economia representa milhares de horas de trabalho.
O Stack Invisível
Existe um detalhe fascinante.
Quando fazemos LINK o CICS monta uma pilha.
Programa A
↓
Programa B
↓
Programa C
↓
Programa D
Cada programa sabe exatamente quem o chamou.
Quando termina...
Volta para quem estava esperando.
É praticamente uma pilha de execução semelhante ao que linguagens modernas como Java e C# fazem internamente.
Só que isso já existia décadas antes.
EASTER EGG Nº 1 ☕
Os programadores antigos brincavam dizendo:
"LINK é o telefone do CICS."
Você liga.
Conversa.
Desliga.
Continua a vida.
SEGUNDA PORTA
XCTL
Agora Bellacosa desenha uma flecha enorme.
Sem retorno.
"Quando atravessar essa porta..."
"...não olhe para trás."
XCTL significa substituição.
Fluxo:
Programa A
↓
XCTL
↓
Programa B
Fim.
Programa A acabou.
Nunca mais será executado.
Analogia Cinematográfica
Imagine uma corrida de revezamento.
LINK
é como emprestar uma calculadora.
Ela volta.
XCTL
é entregar o bastão.
Sua corrida terminou.
Outro atleta continua.
Quando usar?
Sempre que o programa atual terminou definitivamente.
Exemplo clássico:
LOGIN
↓
MENU
O login acabou.
Nunca mais será usado.
Então:
LOGIN
↓
XCTL MENU
Muito mais eficiente.
Economia de Recursos
Pouca gente comenta isso.
Mas XCTL ajuda o CICS a economizar memória.
Como não existe retorno...
O contexto anterior pode ser descartado.
Em um ambiente com milhares de usuários simultâneos...
Essa pequena economia torna-se gigantesca.
Uma Cidade Invisível
Imagine uma cidade.
Cada prédio representa um programa.
LINK
é visitar um prédio e voltar para casa.
XCTL
é vender sua casa.
Mudar-se definitivamente.
Nunca mais retornar.
EASTER EGG Nº 2 ☕
Existe uma frase famosa entre veteranos:
"Quem usa XCTL esperando voltar está esperando um trem que nunca passa."
TERCEIRA PORTA
START
Agora Bellacosa sorri.
"Esta porta..."
"...não leva ao próximo cômodo."
"Ela cria outro prédio."
Essa talvez seja a maior confusão dos iniciantes.
START
não chama programa.
START cria outra transação.
Parece a mesma coisa.
Mas está muito longe disso.
A Grande Diferença
LINK
continua na mesma task.
XCTL
continua na mesma task.
START
cria outra task.
Outro contexto.
Outra vida.
Outra execução.
Fluxo
Transação A
↓
START
↓
Nova Transação
Não existe espera.
Não existe retorno.
Cada uma segue seu caminho.
Imagine um Restaurante
Você pede um café.
Enquanto toma o café...
Pede também uma sobremesa para levar.
O garçom registra outro pedido.
Você continua tomando café.
Não espera a sobremesa ficar pronta.
Isso é START.
Um Banco de Verdade
Cliente faz PIX.
O sistema precisa:
✔ atualizar saldo
✔ gravar auditoria
✔ enviar SMS
✔ enviar e-mail
✔ atualizar Data Warehouse
✔ gerar estatísticas
O cliente deveria esperar tudo isso?
Claro que não.
Então:
START SMS
START EMAIL
START AUDITORIA
Enquanto isso...
A tela já responde:
Transferência concluída.
START pode ser Agendado
Poucos iniciantes sabem.
START pode acontecer:
Agora.
Daqui cinco segundos.
Daqui cinco minutos.
Daqui uma hora.
Em horário específico.
Isso permite automações extremamente sofisticadas.
Curiosidade
Muitos sistemas de cobrança utilizam START para criar processos futuros.
Por exemplo:
Hoje:
Cliente fez uma compra.
Daqui sete dias:
Enviar pesquisa de satisfação.
Tudo agendado pelo próprio CICS.
COMMAREA
A Mala de Viagem
Imagine uma mala.
Dentro dela estão documentos.
Valores.
Informações.
Essa mala é a COMMAREA.
LINK entrega a mala.
Recebe de volta.
XCTL entrega a mala.
Vai embora.
START entrega uma cópia da mala para outra viagem.
É exatamente isso.
Mas Existe Algo Melhor...
Nos sistemas modernos existem CHANNELS e CONTAINERS.
Eles resolvem várias limitações da COMMAREA:
✔ maior capacidade
✔ múltiplos objetos
✔ melhor organização
✔ integração com aplicações modernas
Em entrevistas técnicas isso costuma aparecer bastante.
O Erro Mais Comum
Iniciante:
"Vou usar START porque é mais rápido."
Veterano:
"Não."
START não acelera nada.
Ele apenas desacopla o processamento.
São conceitos completamente diferentes.
Outro Erro Clássico
Usar LINK para tudo.
Imagine:
Transferência
↓
LINK SMS
↓
LINK EMAIL
↓
LINK RELATÓRIO
↓
LINK LOG
Resultado?
O cliente espera tudo terminar.
Resposta lenta.
Sistema congestionado.
Outro Crime Arquitetural
Usar START para validação.
START VALIDA CPF
Enquanto isso...
A transferência continua.
Percebe o problema?
O dinheiro pode ser transferido antes da validação terminar.
Catástrofe.
Comparação Completa
| Característica | LINK | XCTL | START |
|---|---|---|---|
| Retorna ao programa chamador | Sim | Não | Não |
| Mesma Task | Sim | Sim | Não |
| Nova Transação | Não | Não | Sim |
| Processamento Assíncrono | Não | Não | Sim |
| Ideal para reutilização | Sim | Não | Não |
| Ideal para navegação | Não | Sim | Não |
| Ideal para background | Não | Não | Sim |
O Fluxo de um Banco Moderno
Imagine toda uma sessão bancária.
LOGIN
↓
XCTL MENU
O login desaparece.
Depois:
MENU
↓
LINK VALIDA CONTA
↓
LINK VALIDA LIMITE
↓
LINK CALCULA TARIFA
Cada módulo retorna.
Transferência concluída.
Agora:
START SMS
START EMAIL
START RELATÓRIO
START AUDITORIA
Enquanto isso:
Cliente já está iniciando outra operação.
Tudo funcionando simultaneamente.
É arquitetura.
Não mágica.
O Que Acontece Internamente?
Quando um comando é executado, o CICS atualiza diversas estruturas internas:
Task Control Area (TCA): controla a execução da tarefa atual.
Program Control Table (PCT) e Program Processing Table (PPT): ajudam a localizar e preparar programas para execução.
Storage Manager: administra a memória utilizada pelos programas e COMMAREAs.
Dispatcher: decide quando cada task pode usar a CPU.
No caso do LINK, o CICS preserva o contexto do chamador e empilha a chamada. No XCTL, substitui o programa ativo sem manter uma pilha de retorno. No START, cria uma nova entrada de task, que poderá ser despachada conforme a disponibilidade do sistema e as prioridades definidas pelo Workload Manager (WLM).
Essa infraestrutura invisível é uma das razões pelas quais um único CICS consegue atender milhares de usuários simultaneamente.
Dicas de Ouro para Iniciantes
✅ Pense primeiro no fluxo de negócio, depois escolha o comando.
✅ Pergunte sempre: "Preciso voltar para este programa?"
Sim → LINK.
Não → XCTL.
✅ Pergunte também: "Esse processamento pode acontecer depois?"
Sim → START.
✅ Evite criar programas monolíticos. Um bom sistema CICS é formado por módulos pequenos, especializados e reutilizáveis.
✅ Documente claramente quando um programa espera retorno e quando transfere definitivamente o controle. Isso facilita manutenção e reduz erros.
Curiosidades que Pouca Gente Conhece
Alguns ambientes bancários possuem módulos de validação chamados por dezenas de milhões de LINKs por dia.
Em aplicações críticas, uma única transação pode executar dezenas de comandos LINK antes de terminar.
Muitos sistemas legados utilizam cadeias de XCTL para implementar menus completos em aplicações 3270.
START é frequentemente usado para disparar integrações com filas, auditorias, notificações e processamento em segundo plano, reduzindo o tempo de resposta percebido pelo usuário.
O Conselho Final de Bellacosa
Bellacosa terminou o café, fechou o bloco de anotações e apontou novamente para as três portas.
— "O segredo nunca foi decorar a sintaxe."
O jovem programador olhou confuso.
— "Então qual é o segredo?"
O velho sorriu.
— "Entender o destino da transação."
Ele desenhou três frases finais:
LINK conversa.
XCTL substitui.
START cria um novo caminho.
Depois apagou as luzes do CPD.
Enquanto caminhavam pelo corredor iluminado apenas pelos painéis azuis do mainframe, Bellacosa deixou a última pista:
"Os grandes sistemas do mundo não permanecem funcionando há décadas porque usam comandos complicados. Permanecem funcionando porque seus arquitetos sempre souberam escolher a porta certa antes de atravessá-la."
Naquela madrugada, o jovem programador percebeu que o verdadeiro mistério nunca esteve nos comandos do CICS.
O verdadeiro mistério sempre foi compreender que cada transação conta uma história, e que LINK, XCTL e START são apenas maneiras diferentes de decidir como essa história continuará. Afinal, no universo do mainframe, uma escolha aparentemente simples pode determinar se milhões de transações seguirão seu caminho com segurança... ou se um novo caso será aberto para o próximo detetive do CPD investigar.