Translate

Mostrar mensagens com a etiqueta START. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta START. Mostrar todas as mensagens

domingo, 13 de janeiro de 2019

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

 

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ísticaLINKXCTLSTART
Retorna ao programa chamadorSimNãoNão
Mesma TaskSimSimNão
Nova TransaçãoNãoNãoSim
Processamento AssíncronoNãoNãoSim
Ideal para reutilizaçãoSimNãoNão
Ideal para navegaçãoNãoSimNão
Ideal para backgroundNãoNãoSim

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.

Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

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