Translate

Mostrar mensagens com a etiqueta Arquitetura CICS. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Arquitetura CICS. Mostrar todas as mensagens

domingo, 21 de janeiro de 2024

☕🔥 COMMAREA, CHANNELS e CONTAINERS no CICS TS: O Guia Definitivo para Desenvolvedores COBOL Junior

 

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

Programa B:

01 DFHCOMMAREA.
   05 CLI-CODIGO PIC 9(08).
   05 CLI-NOME   PIC X(40).

O CICS copia os dados de um programa para outro.


Como Funciona Internamente

Imagine:

PROGRAMA A
   |
   | 200 bytes
   |
PROGRAMA B

O CICS realiza uma cópia física do conteúdo.

Por isso o tamanho importa.


Limite da COMMAREA

O limite máximo teórico é:

64 KB

Na prática:

65.535 bytes

Porém a maioria dos sistemas utiliza:

32 KB

como limite operacional seguro.

Por quê?

Porque historicamente muitos aplicativos e interfaces foram construídos considerando esse valor.


Exemplo de Layout COMMAREA

01 WS-COMMAREA.
   05 WS-HEADER.
      10 WS-OPERACAO PIC X(08).
      10 WS-USUARIO  PIC X(20).

   05 WS-CLIENTE.
      10 WS-CONTA    PIC 9(10).
      10 WS-NOME     PIC X(40).
      10 WS-SALDO    PIC S9(9)V99 COMP-3.

Total:

82 bytes

Vantagens da COMMAREA

Simplicidade

Extremamente fácil.

EXEC CICS LINK

e pronto.


Compatibilidade

Praticamente todos os sistemas CICS do mundo utilizam COMMAREA.


Performance

Para pequenos volumes:

100 bytes
500 bytes
1 KB
2 KB

é extremamente eficiente.


Desvantagens da COMMAREA

Estrutura rígida

Quem envia e quem recebe devem conhecer exatamente o mesmo layout.

Mudou um campo?

Pode quebrar tudo.


Acoplamento forte

Programa A depende diretamente do layout do Programa B.


Limite de tamanho

Web Services modernos frequentemente ultrapassam:

32 KB
50 KB
100 KB
500 KB

A COMMAREA não foi projetada para isso.


O Problema das APIs Modernas

Imagine um JSON:

{
  "cliente": {
     "nome":"João",
     "enderecos":[...],
     "cartoes":[...],
     "seguros":[...]
  }
}

Facilmente pode ultrapassar:

40 KB
80 KB
150 KB

A COMMAREA começa a sofrer.


Surge o CHANNEL

Para resolver isso a IBM criou:

CHANNEL

Pense nele como um envelope.


O que é um CHANNEL?

Um CHANNEL não contém dados.

Ele contém:

CONTAINERS

Imagine:

CHANNEL CLIENTE

   |
   +-- HEADER
   +-- DADOS
   +-- ENDERECOS
   +-- CARTOES
   +-- SEGUROS

O que é um CONTAINER?

Container é onde os dados ficam armazenados.

Cada container possui:

  • nome

  • conteúdo

  • tamanho


Analogia Simples

COMMAREA:

1 caixa gigante

CHANNEL:

1 armário

CONTAINER:

gavetas do armário

Exemplo de Criação

Criando container:

EXEC CICS PUT CONTAINER
     CONTAINER('CLIENTE')
     CHANNEL('CANAL01')
     FROM(WS-DADOS)
     FLENGTH(500)
END-EXEC

Recuperando Dados

EXEC CICS GET CONTAINER
     CONTAINER('CLIENTE')
     CHANNEL('CANAL01')
     INTO(WS-DADOS)
END-EXEC

Limites dos Containers

Ao contrário da COMMAREA:

64 KB máximo

Containers podem armazenar:

Megabytes

de informação.

Na prática:

  • JSON grandes

  • XML grandes

  • payloads extensos

funcionam muito melhor.


Estrutura Recomendada

Exemplo:

CHANNEL CLIENTE

HEADER
CLIENTE
ENDERECOS
TELEFONES
PRODUTOS
LOGS

Cada informação isolada.


Benefícios dos Channels

Menor acoplamento

Cada container pode evoluir independentemente.


Melhor manutenção

Não é necessário reconstruir um layout monolítico.


Escalabilidade

Ideal para integrações modernas.


COMMAREA vs CHANNEL

CaracterísticaCOMMAREACHANNEL
Tamanho64 KBMuito maior
EstruturaÚnicaMúltiplos Containers
JSONLimitadoExcelente
XMLLimitadoExcelente
APIs RESTFracoExcelente
MQBomExcelente
EvoluçãoDifícilFá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.

sábado, 8 de junho de 2019

O Mistério da Porta que Nunca se Abriu Novamente : Descobriu que uma Escolha entre LINK e XCTL Poderia Decidir o Destino de Milhões de Transações Bancárias

 

Bellacosa Mainframe e o misterio da porta que nunsa se abriu novamente

☕ Um Café no Bellacosa Mainframe

O Mistério da Porta que Nunca se Abriu Novamente

Quando um Jovem Programador COBOL Descobriu que uma Escolha entre LINK e XCTL Poderia Decidir o Destino de Milhões de Transações Bancárias

"Existem portas que foram feitas para serem atravessadas duas vezes. Outras... apenas uma."

Era assim que começava um antigo manual não oficial que circulava entre programadores de CICS na década de 1980. Diziam que o autor nunca assinou seu nome. Apenas deixava um pequeno desenho de uma xícara de café ao lado das páginas.

Os veteranos chamavam aquele manuscrito de O Livro das Portas.

Hoje vamos descobrir por quê.

Pegue seu café.

Apague as luzes do escritório.

O letreiro verde do terminal 3270 acaba de acender.

O caso vai começar.


Capítulo 1 — O prédio onde programas conversam

Quem vem do COBOL Batch imagina que um programa vive sozinho.

Ele começa.

Processa.

Termina.

No CICS isso não existe.

Um sistema bancário raramente possui um programa gigante.

Na verdade ele parece uma pequena cidade.

Existe o programa do Login.

O Menu Principal.

Consulta de Saldo.

PIX.

Transferência.

Extrato.

Cartão.

Empréstimos.

Investimentos.

Cada um conhece apenas seu trabalho.

É exatamente como uma delegacia de polícia.

O investigador não faz exame pericial.

O perito não conduz interrogatórios.

O escrivão não prende criminosos.

Cada especialista executa apenas sua função.

No CICS acontece exatamente isso.

Cada programa é especialista em um assunto.

A pergunta é:

Como eles conversam?

A resposta possui apenas quatro letras.

LINK.

Ou...

XCTL.

E é aqui que começa nosso mistério.


Capítulo 2 — O telefone vermelho da IBM

Imagine um antigo escritório bancário dos anos 1950.

Sobre uma mesa existe um telefone vermelho.

Quando o gerente precisa de alguma informação ele liga para outro departamento.

— Preciso do saldo da conta.

O funcionário responde.

— Um instante.

Alguns segundos depois.

— Aqui está.

O gerente continua seu trabalho.

Isso é LINK.

O programa chama outro programa.

Espera.

Recebe a resposta.

Continua exatamente de onde havia parado.

Observe o fluxo.

Programa LOGIN

↓

LINK

↓

Programa CONSULTA

↓

RETURN

↓

LOGIN continua

Nada de mágico aconteceu.

Apenas uma conversa organizada.


A verdadeira mágica

O que ninguém vê é que o CICS precisa guardar tudo.

Enquanto o programa chamado trabalha, o programa chamador fica "congelado".

O CICS preserva:

✔ Registradores

✔ Contexto

✔ Área de memória

✔ Ponto de retorno

✔ COMMAREA

É quase como colocar um marcador dentro de um livro.

Você fecha.

Empresta para alguém.

Quando devolvem...

Você abre exatamente na mesma página.

Essa é a essência do LINK.


Capítulo 3 — A porta sem maçaneta

Agora imagine outra situação.

Você entrega a chave da empresa ao próximo gerente.

Vai embora.

Nunca mais volta.

Esse é o XCTL.

Programa LOGIN

↓

XCTL

↓

MENU

↓

Fim

O LOGIN morreu.

Sua missão terminou.

Ele não existe mais dentro daquela execução.

É uma transferência definitiva.

Os antigos programadores diziam:

"LINK conversa.

XCTL abdica."

Essa frase aparecia escrita em algumas apostilas da IBM nos anos 80.


A analogia da corrida

Imagine uma prova de revezamento.

No LINK...

Você entrega o bastão.

Espera.

Recebe de volta.

Continua correndo.

No XCTL...

Você entrega.

Sai da pista.

Vai tomar café.

Nunca mais participa daquela corrida.


O erro que denuncia um iniciante

Todo entrevistador gosta desta pergunta.

Veja:

EXEC CICS XCTL
     PROGRAM('MENU')
END-EXEC.

DISPLAY "CHEGUEI AQUI".

Pergunta:

Esse DISPLAY será executado?

Resposta:

Jamais.

Nunca.

Nem hoje.

Nem amanhã.

Nem daqui vinte anos.

Depois do XCTL o programa desapareceu.

Essa pequena pegadinha já eliminou centenas de candidatos em entrevistas.


Capítulo 4 — O elevador do edifício CICS

Imagine um prédio com cinquenta andares.

Cada andar possui um programa.

LINK funciona como um elevador.

Você sobe.

Resolve um assunto.

Desce.

Continua trabalhando.

XCTL funciona como mudança definitiva de escritório.

Você pega suas caixas.

Entrega sua sala.

Muda para outro andar.

Nunca mais volta.

Essa imagem ajuda muitos iniciantes.


O segredo escondido dentro do CICS

Muitos acreditam que LINK simplesmente chama outro programa.

Não.

Existe muito trabalho invisível.

Quando executamos:

EXEC CICS LINK

o CICS precisa:

Localizar o programa.

Carregar caso não esteja residente.

Criar ambiente.

Salvar contexto.

Preparar COMMAREA.

Transferir controle.

Esperar RETURN.

Restaurar contexto.

Continuar execução.

Existe um pequeno custo.

Pequeno.

Mas existe.


Já o XCTL...

Observe.

LOGIN

↓

MENU

Pronto.

Não existe necessidade de preservar retorno.

Não existe restauração.

O fluxo ficou linear.

Por isso muitos livros dizem que XCTL possui menor overhead.

Mas cuidado.

Não escolha XCTL apenas porque "é mais rápido".

Escolha porque faz sentido arquiteturalmente.

Essa diferença é importante.


Capítulo 5 — O caso do caixa eletrônico

Vamos imaginar um ATM.

Cliente digita cartão.

Senha.

Programa LOGIN.

Após validar usuário.

O sistema faz

XCTL MENU

Por quê?

Porque ninguém deseja voltar para a tela de login.

O LOGIN cumpriu sua missão.

Agora imagine outra opção.

O cliente escolhe:

Consultar saldo.

O MENU faz:

LINK SALDO

Programa SALDO consulta DB2.

Retorna.

O MENU continua vivo.

Cliente escolhe:

Extrato.

Outro LINK.

Cliente escolhe:

PIX.

Mais um LINK.

Perceba.

O MENU é o maestro.

As funções são músicos.

Cada músico toca.

Depois devolve o palco.


Curiosidade histórica

Nos primeiros grandes bancos brasileiros era comum encontrar verdadeiras árvores de LINK.

Algo semelhante a:

MENU

↓

LINK

CLIENTE

↓

LINK

ENDERECO

↓

LINK

CEP

↓

RETURN

↓

RETURN

↓

RETURN

Era perfeitamente normal encontrar cinco ou seis níveis de chamadas.

Hoje isso ainda existe, mas arquiteturas modernas procuram evitar profundidades excessivas para facilitar manutenção e depuração.


Capítulo 6 — A COMMAREA: o envelope secreto

Imagine um envelope lacrado.

Dentro existem informações importantes.

Cliente.

Conta.

Saldo.

Tipo de operação.

Senha criptografada.

Tudo isso viaja pela COMMAREA.

Ela é o "correio interno" entre programas CICS.

Exemplo:

Programa A

↓

COMMAREA

↓

Programa B

Nada vai para disco.

Nada vai para banco.

Tudo permanece na memória durante a transação.

É extremamente rápido.


Easter Egg Bellacosa ☕

Os veteranos costumavam brincar:

"Se a COMMAREA fosse um carteiro, ela seria o único funcionário dos Correios que nunca perde uma encomenda... desde que você informe o LENGTH corretamente."

E aí está uma das maiores armadilhas dos iniciantes.


O LENGTH que derruba sistemas

Veja:

EXEC CICS LINK
    PROGRAM('CLIENTE')
    COMMAREA(WS-COMMAREA)
    LENGTH(LENGTH OF WS-COMMAREA)
END-EXEC.

Por que informar LENGTH?

Porque o CICS precisa saber exatamente quantos bytes transportar.

Se enviar menos...

Dados truncados.

Se enviar mais...

Lixo de memória.

Em alguns casos...

ABEND.

Simples assim.


Capítulo 7 — LINK parece CALL?

Essa dúvida aparece todos os meses.

Resposta curta:

Não.

CALL pertence ao COBOL.

LINK pertence ao CICS.

CALL apenas transfere execução.

LINK conversa com toda a infraestrutura CICS.

Ele conhece:

Recuperação.

Transação.

Segurança.

Recursos.

Comunicação.

Monitoramento.

É muito mais sofisticado.


Comparando os três irmãos

ComandoRetornaAmbiente
CALLSimCOBOL
LINKSimCICS
XCTLNãoCICS

Capítulo 8 — A arquitetura elegante

Um projeto bem desenhado normalmente parece isto:

LOGIN

↓

XCTL

↓

MENU

↓

LINK

SALDO

↓

RETURN

↓

MENU

↓

LINK

PIX

↓

RETURN

↓

MENU

↓

LINK

EXTRATO

↓

RETURN

Observe como tudo faz sentido.

LOGIN nunca retorna.

MENU permanece vivo.

As funcionalidades entram.

Executam.

Saem.

Essa organização facilita testes, manutenção e reutilização.


Dicas de ouro para iniciantes

✔ Regra número um

Se precisa voltar...

Use LINK.


✔ Regra número dois

Se acabou seu trabalho...

Use XCTL.


✔ Regra número três

Nunca coloque código após XCTL esperando execução.


✔ Regra número quatro

Sempre valide o tamanho da COMMAREA.


✔ Regra número cinco

Evite criar "espaguete de LINK", onde programas chamam programas que chamam outros programas sem um desenho arquitetural claro. Quanto mais profunda a cadeia, mais difícil será depurar um problema às três da manhã.


Curiosidade que pouca gente conhece

Em algumas instalações antigas da IBM existia uma recomendação informal:

"Se um programa não precisa voltar, não o obrigue a voltar."

Essa filosofia influenciou muitos padrões de desenvolvimento CICS e explica por que tantos fluxos de navegação utilizam XCTL entre telas principais e LINK apenas para serviços reutilizáveis.


O Mistério do Detetive Bellacosa

Imagine um investigador chamado Arthur Bellacosa.

Ele recebe um caso.

Vai até o Arquivo Central.

Precisa consultar documentos.

Ele diz ao arquivista:

— Procure a ficha do cliente 458923.

O arquivista vai até o depósito.

Volta.

Entrega os documentos.

Arthur continua investigando.

Isso foi um LINK.

Agora imagine outro cenário.

Arthur resolve entregar todo o caso ao Departamento de Crimes Financeiros.

Entrega as pastas.

Entrega as chaves.

Entrega seu distintivo temporário.

Vai embora.

Nunca mais participa da investigação.

Isso foi um XCTL.

O caso continua.

Mas sem ele.


Perguntas clássicas de entrevista

Qual retorna ao programa chamador?

LINK.


Qual termina definitivamente o programa atual?

XCTL.


Qual é mais indicado para módulos reutilizáveis?

LINK.


Qual costuma ser usado após Login para Menu Principal?

XCTL.


Posso executar código após um XCTL?

Não.


LINK é igual a CALL?

Não. O conceito de retorno é semelhante, mas LINK opera dentro do ambiente gerenciado pelo CICS, com controle de transação, contexto e recursos.


O Cofre dos Programadores (Easter Egg)

Há uma velha lenda entre programadores de mainframe que diz existir uma região CICS esquecida em algum laboratório da IBM, apelidada de REGION-X.

Nela existiria um programa chamado FOREVER, que executou um XCTL em 1987 e nunca mais retornou.

Toda vez que um jovem programador pergunta:

— "Será que esse programa volta?"

Um veterano apenas sorri e responde:

— "Pergunte ao FOREVER..."

Claro, é apenas uma brincadeira de corredor. Mas ela resume perfeitamente o conceito: algumas transferências foram feitas para nunca olhar para trás.


Conclusão — A Porta Certa no Momento Certo

LINK e XCTL possuem a mesma missão: transferir o controle entre programas. No entanto, representam filosofias completamente diferentes de construção de aplicações.

LINK é colaboração. Um programa pede ajuda, recebe o resultado e continua sua jornada. Ele favorece reutilização, modularidade e organização.

XCTL é sucessão. O programa conclui sua missão, entrega o bastão e permite que outro assuma o restante da transação. O fluxo fica mais limpo e evita preservar um contexto que nunca mais será utilizado.

Em sistemas bancários, seguradoras, companhias aéreas e grandes ambientes corporativos, essa decisão acontece milhares — às vezes milhões — de vezes por dia. Um simples comando define se o programa permanece como protagonista da história ou se entrega definitivamente o palco ao próximo ator.

Da próxima vez que você vir um EXEC CICS LINK ou um EXEC CICS XCTL, lembre-se do velho edifício iluminado por terminais verdes. Algumas portas foram feitas para serem abertas, entrar, resolver um assunto e voltar. Outras se fecham atrás de você para sempre.

E, no silencioso universo do CICS, escolher a porta correta é uma das marcas que separam um programador iniciante de um verdadeiro arquiteto de aplicações mainframe.

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.

quarta-feira, 21 de novembro de 2018

CICS TOR sem Mistérios para Programadores COBOL

 

Bellacosa Mainframe apresenta cics tor 

☕ Um Café no Bellacosa Mainframe

CICS TOR sem Mistérios para Programadores COBOL

Quando um Programador Descobre que Nem Todo Programa COBOL Conversa Diretamente com o Usuário... Existe uma Recepção Inteligente que Organiza Todo o Data Center Antes Mesmo do Primeiro EXEC CICS

"Não entre em pânico." — O Guia do Mochileiro das Galáxias

Se Douglas Adams tivesse trabalhado na IBM durante os anos 80, provavelmente escreveria um capítulo chamado "A Vida, o Universo e as Regiões CICS". Afinal, poucas arquiteturas conseguem parecer tão misteriosas à primeira vista e, ao mesmo tempo, tão elegantemente organizadas quanto um CICSplex.

Para quem está iniciando em COBOL Mainframe, é muito comum imaginar que o usuário digita uma transação, o programa COBOL é executado, consulta o DB2 e devolve a resposta.

Na prática...

...isso raramente acontece dessa forma.

Existe uma verdadeira cidade funcionando por trás das cortinas.

E um dos personagens mais importantes dessa cidade chama-se TOR (Terminal-Owning Region).

Hoje vamos abrir a porta do Data Center, colocar uma toalha no ombro (você entendeu a referência...) e descobrir como funciona esse universo.


Antes de tudo: o que é uma Região CICS?

Imagine que o CICS seja um enorme shopping center.

Dentro dele existem dezenas de lojas.

Cada loja possui funcionários, estoque, computadores e clientes.

No Mainframe acontece algo parecido.

Cada CICS Region é um ambiente independente executando dentro do z/OS.

Ela possui memória própria.

Recursos próprios.

Filas.

Programas.

Transações.

Arquivos.

Conexões.

E tudo isso funciona de maneira totalmente isolada das demais regiões.

Uma região pode executar centenas de milhares de transações diariamente.

Grandes bancos chegam facilmente à casa dos milhões.


O primeiro erro de todo iniciante

Quase todo programador COBOL pensa assim:

Usuário

↓

Programa COBOL

↓

DB2

↓

Resposta

É simples.

Faz sentido.

Mas...

...não é assim que um ambiente corporativo funciona.

Na realidade existe uma arquitetura muito mais sofisticada.

Usuário

↓

TOR

↓

AOR

↓

FOR

↓

DB2

↓

FOR

↓

AOR

↓

TOR

↓

Usuário

De repente apareceu um monte de siglas.

Vamos decifrá-las.


Por que dividir tudo?

Imagine um restaurante.

Você chega.

A primeira pessoa que encontra é a recepcionista.

Ela pergunta:

— Quantas pessoas?

— Mesa para fumantes?

— Possui reserva?

Ela não cozinha.

Não prepara sobremesa.

Não faz pizza.

Ela apenas organiza o fluxo.

Agora imagine se o chef precisasse abandonar o fogão toda vez que alguém chegasse à porta.

O restaurante entraria em colapso.

O mesmo acontece no CICS.


Bem-vindo ao TOR

TOR significa

Terminal-Owning Region

O nome parece complicado.

Na prática significa:

a região dona dos terminais.

Ela controla toda a comunicação com o mundo externo.

É ela quem recebe:

  • terminais 3270

  • sessões TCP/IP

  • conexões IPIC

  • usuários

  • requisições

  • logons

  • transações

Ela é literalmente a recepção do Data Center.


A analogia do aeroporto

Imagine um aeroporto.

Você entra.

Vai ao check-in.

Despacha bagagem.

Recebe seu cartão de embarque.

Somente depois segue para o portão correto.

O check-in nunca pilota o avião.

Da mesma forma...

O TOR nunca executa a lógica do programa COBOL.

Ele apenas encaminha.


O verdadeiro trabalho do TOR

Quando um usuário digita:

BANK

Ou

CUST

Ou

MENU

O TOR faz várias coisas quase instantaneamente.

Ele verifica:

  • quem é o usuário

  • de qual terminal veio

  • qual transação foi digitada

  • qual AOR está disponível

  • qual AOR possui menos carga

  • qual política de roteamento deve ser utilizada

Somente depois encaminha a requisição.

Tudo isso acontece em poucos milissegundos.


O grande maestro invisível

Imagine uma orquestra.

O maestro não toca violino.

Não toca trompete.

Não toca piano.

Mesmo assim...

Sem ele...

...a música vira caos.

O TOR é exatamente isso.

Ele coordena.

Distribui.

Organiza.

Sincroniza.


Então quem executa o COBOL?

Entra em cena outro personagem.

O famoso:

AOR

Application-Owning Region.

Agora sim.

Aqui vivem:

  • programas COBOL

  • programas PL/I

  • programas C

  • Java

  • BMS

  • MAPSETs

  • lógica de negócio

O AOR é onde realmente acontece o processamento.

Quando você escreve:

EXEC SQL

ou

EXEC CICS LINK

provavelmente será um AOR quem executará esse código.


O FOR entra na história

Existe ainda outra região.

FOR.

File-Owning Region.

Ela concentra:

VSAM

BDAM

arquivos compartilhados

alguns recursos de acesso

Embora muitas arquiteturas modernas permitam que o AOR acesse diretamente o DB2, em ambientes clássicos era comum utilizar FOR para centralizar determinados recursos físicos.

É uma forma elegante de separar responsabilidades.


O caminho completo de uma transação

Vamos acompanhar uma consulta de saldo.

Imagine João acessando o Internet Banking.

Ele solicita:

SALDO

O que acontece?

Primeiro:

João

↓

TOR

O TOR identifica a transação.

Depois:

↓

AOR-03

O programa COBOL inicia.

EXEC SQL

SELECT SALDO

FROM CONTAS

O DB2 responde.

O COBOL monta a tela.

A resposta retorna.

DB2

↓

AOR

↓

TOR

↓

João

João acredita que falou diretamente com o banco.

Na verdade...

Conversou apenas com o TOR.


O TOR conhece todos os usuários

Ele administra:

  • sessões

  • conexões

  • terminais

  • usuários ativos

  • estado das conexões

Pense nele como um gigantesco porteiro.

Ele sabe exatamente quem entrou no prédio.


O TOR conhece os programas?

Não.

Quem conhece programas é o AOR.

O TOR conhece caminhos.

Não conhece regras de negócio.


A mágica do balanceamento

Agora imagine:

100 mil pessoas consultando saldo.

Sem TOR:

Usuários

↓

AOR

Resultado?

Sobrecarga.

Com TOR:

Usuários

↓

TOR

↓

AOR1

AOR2

AOR3

AOR4

AOR5

Agora a carga fica distribuída.

Esse conceito hoje é chamado de:

Load Balancing.

Mas o CICS fazia isso quando a internet ainda engatinhava.


O CICS inventou a Cloud antes da Cloud?

Curiosamente...

Em vários aspectos...

Sim.

Observe.

Cloud moderna:

Gateway

Load Balancer

Microservices

Database

CICS:

TOR

AOR

FOR

DB2

A semelhança impressiona.

Muitas ideias que hoje parecem revolucionárias já existiam nos grandes mainframes há décadas.


O papel do CICSPlex

Até agora vimos várias regiões.

Mas quem coordena tudo?

Entra em cena o:

CICSPlex SM.

Ele funciona como um cérebro.

Conhece todas as regiões.

Monitora carga.

Falhas.

Disponibilidade.

Prioridades.

Com essas informações o TOR consegue decidir:

"AOR-2 está sobrecarregado."

"Envie para AOR-4."

Tudo automaticamente.


Quando um AOR morre

Imagine que o AOR-3 sofreu um ABEND.

O que acontece?

Sem TOR:

Todos os usuários falham.

Com TOR:

As novas transações passam automaticamente para outro AOR disponível.

Na maioria das vezes o usuário nem percebe.

Esse é um dos grandes segredos da disponibilidade do IBM Z.


O problema chamado Affinity

Nem toda transação pode mudar livremente de AOR.

Imagine um programa antigo.

Ele grava informações temporárias na memória.

Na próxima tela...

Ele espera encontrar aquelas informações.

Se o usuário cair em outro AOR...

Elas desapareceram.

Isso chama-se:

Transaction Affinity.

É um dos grandes desafios na modernização de aplicações CICS.


O que os arquitetos modernos fazem?

Evitam afinidade.

Preferem guardar contexto em:

  • TSQ compartilhada

  • Temporary Storage compartilhada

  • Channels e Containers

  • DB2

  • MQ

  • recursos compartilhados

Assim qualquer AOR pode continuar o processamento.


Curiosidade histórica

Nos anos 70 e 80 era comum existir apenas uma região CICS.

Tudo ficava nela.

Com o crescimento dos bancos isso tornou-se inviável.

Foi então que a IBM começou a incentivar arquiteturas distribuídas dentro do próprio Mainframe.

Nascia a divisão entre:

TOR

AOR

FOR

Mais tarde veio o CICSPlex.

Hoje essa arquitetura é praticamente padrão em ambientes corporativos.


Onde entram os terminais 3270?

Eles normalmente se conectam ao TOR.

Nunca diretamente ao AOR.

Isso simplifica administração.

Caso um AOR precise ser reiniciado...

Os terminais continuam conectados ao TOR.


O que acontece durante uma manutenção?

Imagine que o AOR-2 será atualizado.

O administrador simplesmente retira aquele AOR do roteamento.

O TOR passa a enviar novas transações para:

AOR-1

AOR-3

AOR-4

Quando o AOR-2 retorna...

Ele volta automaticamente ao balanceamento.

Nenhum usuário percebe.

Isso é engenharia de disponibilidade.


O TOR é um Firewall?

Não.

Mas ele funciona como um ponto central de entrada.

Por isso muitas políticas de segurança começam justamente nele.

É muito mais fácil controlar milhares de conexões em poucos TORs do que em dezenas de AORs espalhados.


Como isso aparece para o programador COBOL?

Na maioria das vezes...

Não aparece.

Você escreve:

EXEC CICS RECEIVE MAP('TELA1')
END-EXEC.

EXEC SQL
SELECT NOME
INTO :WS-NOME
FROM CLIENTE
END-EXEC.

EXEC CICS SEND MAP('TELA2')
END-EXEC.

Você nem imagina que por trás disso existe uma infraestrutura inteira tomando decisões sobre roteamento, disponibilidade e balanceamento.

Esse é justamente o objetivo da arquitetura: esconder a complexidade da infraestrutura para que o desenvolvedor possa focar na regra de negócio.


Dicas para quem quer trabalhar com CICS

Se você está começando agora, aprenda nesta ordem:

  1. Conceitos básicos do CICS.

  2. Estrutura de uma Region.

  3. PCT, PPT, FCT e TCT.

  4. BMS e Mapsets.

  5. COMMAREA.

  6. Channels e Containers.

  7. Temporary Storage (TSQ) e Transient Data (TDQ).

  8. Syncpoint e recuperação.

  9. TOR, AOR, FOR e CICSPlex SM.

  10. CICS Explorer e ferramentas modernas de administração.

Com essa base, você entenderá não apenas como escrever programas, mas como eles realmente funcionam dentro de um ambiente corporativo.


Easter Egg Bellacosa Mainframe ☕

Imagine que o Data Center seja a Estrela da Morte.

O usuário pilota uma pequena nave e solicita permissão para atracar.

O TOR é o controlador de tráfego do hangar. Ele verifica a identidade da nave, consulta quais docas estão livres e direciona o piloto para o setor correto.

Os AORs são os departamentos especializados: engenharia, armamentos, navegação, inteligência e manutenção dos TIE Fighters.

O FOR é o gigantesco arquivo imperial, onde ficam armazenados todos os planos secretos, documentos e registros.

O DB2 é o Holocron de dados do Império, contendo milhões de informações críticas.

Enquanto isso, o CICSPlex SM é o Grande Almirante Thrawn observando toda a frota em um enorme mapa holográfico, redistribuindo recursos e garantindo que nenhuma região fique sobrecarregada.

O piloto acredita que falou apenas com uma porta automática. Na realidade, dezenas de sistemas trabalharam em perfeita sincronia antes que o hangar sequer abrisse.


Conclusão: a genialidade invisível do CICS

O Terminal-Owning Region (TOR) é uma das peças mais elegantes da arquitetura CICS. Embora raramente execute uma única linha de código COBOL, ele é responsável por tornar possível o funcionamento de ambientes que atendem milhões de usuários diariamente.

Ao separar a recepção das conexões (TOR) do processamento da lógica (AOR) e, quando necessário, da administração dos recursos de dados (FOR), o CICS alcança um nível de escalabilidade, disponibilidade e organização que continua impressionando mesmo quando comparado às arquiteturas modernas de microsserviços.

Para o programador COBOL iniciante, entender essa divisão muda completamente a forma de enxergar o Mainframe. Você deixa de ver apenas um programa executando comandos EXEC CICS e passa a compreender que existe uma verdadeira metrópole digital funcionando nos bastidores, onde cada região tem uma missão específica e todas cooperam para entregar respostas em frações de segundo.

No fim das contas, o TOR é como a recepção de um hotel cinco estrelas: ninguém vai ao hotel para conversar com a recepcionista, mas sem ela a experiência inteira deixaria de funcionar. E essa é uma das maiores lições da arquitetura IBM Z: os sistemas mais robustos não dependem de um componente fazer tudo, mas de muitos componentes fazendo exatamente aquilo em que são especialistas.


segunda-feira, 15 de outubro de 2018

O Mistério do Coração Invisível : Quando um Detetive Descobre que Milhões de Transações Bancárias Dependem de uma Sala que Quase Ninguém Conhece

 

Bellacosa Mainframe e o misterio do coração invisivel

☕ Um Café no Bellacosa Mainframe

O Mistério do Coração Invisível

Quando um Detetive Descobre que Milhões de Transações Bancárias Dependem de uma Sala que Quase Ninguém Conhece

"Naquela noite, o relógio marcava 02h17 quando o telefone tocou. Do outro lado da linha, apenas uma frase: 'A aplicação desapareceu... mas a transação continua viva.' Peguei meu chapéu, meu bloco de notas e caminhei até o CPD. Mais um caso aguardava o Detetive Bellacosa..."


Capítulo 1 — O Prédio que Nunca Dorme

Existem lugares onde o tempo parece diferente.

Enquanto a cidade dorme, cafés fecham as portas e as ruas ficam silenciosas, milhares de computadores continuam trabalhando.

Entre eles existe um grupo muito especial.

São os IBM Mainframes.

Eles movimentam bancos.

Controlam companhias aéreas.

Administram cartões de crédito.

Pagam aposentadorias.

Liberam PIX.

Autorizam compras.

Processam seguros.

Movimentam bolsas de valores.

E tudo isso acontece em questão de milissegundos.

Mas existe um segredo.

Quando alguém fala em CICS, quase todo iniciante imagina um único programa gigante respondendo às solicitações dos usuários.

A verdade é muito mais elegante.

É como investigar um enorme prédio cheio de departamentos secretos.

Cada andar possui uma missão.

Cada sala possui uma função.

E existe uma sala onde realmente acontece a mágica.

Essa sala atende por um nome curioso:

AOR — Application-Owning Region.

É ali que mora o verdadeiro coração do CICS.


Capítulo 2 — Conhecendo os Suspeitos

Nenhum bom detetive começa uma investigação sem montar um mural.

Peguei algumas fotos e prendi tudo na parede.

                Usuário
                    │
                    ▼
               Terminal 3270
                    │
                    ▼
                 TOR
                    │
                    ▼
            Routing Region
                    │
                    ▼
             CICSPlex SM
          ┌──────┼──────┐
          ▼      ▼      ▼
        AOR1   AOR2   AOR3
          │
          ▼
     DB2 • VSAM • MQ

Cada personagem possui uma personalidade.

O TOR é o porteiro.

O Routing Region é o despachante.

O CICSPlex é o estrategista.

Mas...

Quem realmente resolve o problema?

O AOR.


Capítulo 3 — O Crime Perfeito

Imagine um banco.

Um milhão de clientes.

Todos acessando simultaneamente.

Agora imagine que exista apenas uma única região CICS.

Ela teria que:

  • receber conexões;

  • autenticar usuários;

  • executar COBOL;

  • acessar Db2;

  • acessar VSAM;

  • controlar MQ;

  • conversar com APIs;

  • responder ao usuário.

Seria um caos.

A IBM percebeu isso décadas atrás.

E fez algo brilhante.

Separou responsabilidades.

Foi como dividir uma delegacia.

Existe quem atende o telefone.

Existe quem dirige a viatura.

Existe quem faz perícia.

Existe quem investiga.

No CICS acontece exatamente isso.


Capítulo 4 — O Verdadeiro Papel da AOR

Muitos livros dizem:

"A AOR executa programas."

Correto.

Mas extremamente incompleto.

Ela executa muito mais.

Dentro dela vivem:

  • programas COBOL;

  • programas PL/I;

  • aplicações C;

  • Java;

  • APIs REST;

  • SOAP;

  • CICS Web Services;

  • lógica bancária;

  • cálculos financeiros;

  • regras tributárias;

  • validações;

  • autenticação.

Ou seja...

Tudo aquilo que gera dinheiro para a empresa.


Capítulo 5 — A Sala das Máquinas

Imagine abrir uma porta metálica.

Dentro dela existem centenas de programas.

BANK001

BANK002

PIX010

LOAN050

CARD901

INSU300

Todos esperando alguém chamá-los.

Quando uma transação chega...

o CICS procura o programa.

Se ele ainda não estiver carregado...

faz o LOAD.

Depois disso...

ele permanece disponível.

Esse detalhe parece pequeno.

Mas muda completamente o desempenho.


Curiosidade Noir nº 1

Os primeiros acessos a um programa costumam ser ligeiramente mais lentos porque o módulo ainda precisa ser localizado e carregado na memória. Nas execuções seguintes, ele normalmente já está residente, reduzindo o tempo de resposta. Em ambientes de alta demanda, esse comportamento faz diferença em milhões de execuções ao longo do dia.


Capítulo 6 — O Caminho de uma Consulta de Saldo

Vamos seguir uma transação.

O cliente digita:

SALD

No terminal.

A sequência parece simples.

Mas observe o que acontece.

Cliente

↓

TOR

↓

Routing Region

↓

CICSPlex SM

↓

AOR

↓

COBOL

↓

EXEC SQL

↓

DB2

↓

Resposta

↓

Usuário

A resposta aparece em menos de um segundo.

Mas dezenas de componentes cooperaram.

É como um relógio suíço.


Easter Egg nº 1

Os nomes TOR, AOR e FOR lembram personagens de um romance policial. Curiosamente, muitos profissionais iniciantes demoram meses para perceber que essas siglas representam regiões especializadas trabalhando em conjunto, e não apenas configurações do CICS.


Capítulo 7 — Quem Escolhe a AOR?

Aqui entra um personagem extremamente inteligente.

O CICSPlex SM.

Ele observa tudo.

CPU.

Memória.

Número de tarefas.

Tempo médio.

Regiões indisponíveis.

Carga de trabalho.

Depois toma uma decisão.

AOR1

CPU 92%

↓

Ignorar

AOR2

CPU 31%

↓

Escolher

AOR3

CPU 81%

↓

Ignorar

Tudo acontece automaticamente.

Nenhum operador precisa decidir.


Curiosidade nº 2

Essa lógica lembra um controlador de tráfego aéreo. Assim como aviões são distribuídos entre pistas disponíveis, o CICSPlex SM distribui transações entre AORs para evitar congestionamentos e aproveitar melhor os recursos do sistema.


Capítulo 8 — O Grande Equívoco dos Iniciantes

Quase todo programador COBOL iniciante imagina isto:

COBOL

↓

DB2

Na prática...

é muito mais complexo.

Um único programa pode conversar com:

DB2

VSAM

MQ

IMS

REST

SOAP

TCP/IP

Sockets

Temporary Storage

Transient Data

O AOR funciona como uma grande central de integração.


Capítulo 9 — O Mistério da Escalabilidade

Imagine uma promoção nacional.

Normalmente o banco processa:

100 mil transações por minuto.

Hoje...

700 mil.

Comprar outro computador?

Nem sempre.

Pode ser mais simples criar novas AORs.

Antes:

TOR

↓

AOR1

Depois:

TOR

├──►AOR1

├──►AOR2

├──►AOR3

├──►AOR4

└──►AOR5

Essa é a essência da escalabilidade horizontal.


Capítulo 10 — Quando uma AOR Cai

Imagine.

AOR2 sofre um ABEND.

O que acontece?

O cliente percebe?

Na maioria das arquiteturas modernas...

não.

O CICSPlex remove a região da lista.

As próximas transações seguem para:

AOR1

AOR3

AOR4

Enquanto isso...

a equipe resolve o problema.

É por isso que bancos conseguem operar 24 horas.


Curiosidade nº 3

Em muitas instituições financeiras existem diversas AORs executando exatamente os mesmos programas. Isso permite retirar uma região para manutenção enquanto as demais continuam atendendo os clientes, reduzindo janelas de indisponibilidade.


Capítulo 11 — O AOR e o COBOL

É aqui que você, programador COBOL, entra na história.

Seu programa normalmente será executado dentro de uma AOR.

Quando você escreve:

EXEC SQL
   SELECT SALDO
     INTO :WS-SALDO
     FROM CONTAS
END-EXEC.

Quem faz tudo funcionar?

AOR.

Quando escreve:

EXEC CICS READ

Quem executa?

AOR.

Quando chama:

EXEC CICS LINK

Quem processa?

AOR.

Ela é o palco onde o seu código ganha vida.


Dicas de Ouro para o Iniciante

✔ Aprenda primeiro o fluxo completo da transação antes de decorar comandos.

✔ Entenda a diferença entre TOR, AOR, FOR e Routing Region.

✔ Estude EXEC CICS LINK, XCTL e RETURN para compreender como programas cooperam entre si.

✔ Familiarize-se com COMMAREA, Channels e Containers, pois são fundamentais para a troca de dados entre programas.

✔ Pratique o uso de EXEC SQL e operações em VSAM, já que a lógica de negócio normalmente envolve esses recursos.

✔ Leia mapas de monitoramento (como SMF e CICS Monitoring) para entender onde está o tempo gasto por uma transação.


Easter Egg nº 2

Existe um velho ditado entre profissionais de CICS:

"Se o TOR espirra, todo mundo percebe. Se a AOR trabalha bem, ninguém lembra que ela existe."

É exatamente esse o objetivo: manter a engrenagem funcionando de forma silenciosa.


O Dossiê do Detetive

Depois de horas analisando logs, diagramas e relatórios, a conclusão era inevitável.

O mistério nunca foi descobrir onde a transação entrava.

Nem onde ela terminava.

O verdadeiro mistério sempre foi entender quem fazia o trabalho pesado.

A resposta estava escondida em uma pequena sigla de apenas três letras.

AOR.

Ela recebe programas.

Executa regras de negócio.

Consulta Db2.

Lê VSAM.

Publica mensagens em MQ.

Conversa com APIs.

Responde ao usuário.

E faz tudo isso milhares — ou até milhões — de vezes por dia.

É por isso que dizemos que a Application-Owning Region é o coração do CICS. Não porque ela seja a única peça importante, mas porque é nela que o "sangue" das transações circula: cada instrução COBOL, cada EXEC CICS, cada EXEC SQL e cada decisão de negócio passam por esse ambiente de execução.

Da próxima vez que alguém consultar um saldo, comprar com cartão, pagar um boleto ou realizar um PIX, lembre-se de que existe uma equipe invisível trabalhando em perfeita sincronia. O usuário verá apenas uma resposta na tela, mas, nos bastidores, TOR, Routing Region, CICSPlex SM, AOR, Db2, VSAM e MQ estarão desempenhando seus papéis como personagens de um clássico romance noir.

E, como todo bom detetive sabe, o segredo dos grandes casos raramente está na primeira pista. No universo do Mainframe, a pista decisiva é compreender a arquitetura. Quando você entende por que o processamento foi separado do roteamento, deixa de enxergar apenas programas COBOL isolados e passa a ver um ecossistema projetado para oferecer desempenho, disponibilidade e confiabilidade em escala mundial.

Na próxima investigação do Bellacosa Mainframe, outro mistério nos espera. Afinal, em algum lugar do CPD existe outra porta metálica fechada, outro componente pouco conhecido e outra história fascinante escondida atrás de três ou quatro letras que sustentam o mundo moderno. Afinal, nos grandes sistemas, os melhores segredos quase nunca aparecem na tela do terminal; eles vivem na arquitetura que faz tudo funcionar.

terça-feira, 13 de março de 2018

O Arquivo Proibido do CICS : O Mistério do Guardião Invisível que Protegia Milhões de Registros

 

Bellacosa Mainframe apresenta o arquivo proibido do cics

☕ Um Café no Bellacosa Mainframe

O Arquivo Proibido do CICS

O Mistério do Guardião Invisível que Protegia Milhões de Registros

Quando um Programador COBOL Descobre que Existe uma Região Inteira Dedicada Apenas a Cuidar dos Arquivos

"Alguns homens guardam cofres. Outros guardam segredos. Mas existe uma entidade silenciosa que guarda algo muito mais valioso: os dados de uma nação inteira."

Era uma noite fria no CPD.

As luzes fluorescentes piscavam sobre quilômetros de cabos, painéis e racks metálicos. O z/OS continuava trabalhando como fazia havia décadas, sem reclamar, sem pedir férias, sem dormir.

No monitor verde de um terminal 3270 surgiu uma mensagem aparentemente comum.

READ CUSTOMER...

Poucos milissegundos depois...

RECORD RETURNED

O programador sorriu.

"Que simples."

Foi então que o velho Analista sorriu discretamente.

— Simples? Meu jovem... você acabou de assistir a uma das maiores ilusões do CICS.

O iniciante não fazia ideia.

Entre aquele READ e a resposta havia acontecido uma verdadeira operação de inteligência digna das revistas policiais noir dos anos 1950.

E no centro dessa conspiração silenciosa existia um personagem que quase ninguém conhece.

Seu nome?

FOR — File-Owning Region.


O erro que todo iniciante comete

Quando aprendemos COBOL, imaginamos algo parecido com isto.

Programa COBOL

↓

EXEC CICS READ

↓

VSAM

↓

Resposta

Parece lógico.

Parece simples.

Parece direto.

Mas em grandes bancos isso raramente acontece.

Na verdade...

o programa quase nunca conversa diretamente com o arquivo.

Quem faz isso é outra região.

Uma espécie de bibliotecário extremamente disciplinado.


Imagine a maior biblioteca do planeta

Imagine uma biblioteca com cem milhões de livros.

Milhares de pessoas entram todos os minutos.

Cada uma quer pegar um livro.

Algumas querem devolvê-lo.

Outras querem alterá-lo.

Outras querem emprestá-lo.

Agora imagine se cada visitante pudesse entrar no depósito principal.

Em poucos minutos haveria caos.

Livros desaparecidos.

Livros duplicados.

Livros rasgados.

Livros no lugar errado.

Agora troque livros por registros bancários.

Você acaba de entender por que o FOR existe.


Afinal, o que é um FOR?

FOR significa

File-Owning Region

É uma região CICS especializada exclusivamente em possuir arquivos.

Ela não executa regras de negócio.

Não calcula juros.

Não processa PIX.

Não atualiza limites.

Ela apenas responde:

"Quer acessar este arquivo? Fale comigo."


Ownership não significa posse...

Significa responsabilidade.

O FOR é responsável por:

✔ abrir arquivos

✔ fechar arquivos

✔ controlar disponibilidade

✔ administrar concorrência

✔ garantir integridade

✔ responder requisições

✔ proteger registros

Pense nele como o zelador-chefe da biblioteca.


O CICSPlex parece uma cidade

Imagine uma cidade.

Na entrada existe um enorme prédio.

Ali trabalham os recepcionistas.

Esse prédio é o TOR.

TOR

↓

Recebe usuários

Depois existe o prédio administrativo.

Ali ficam os departamentos.

São os AORs.

AOR

↓

Executam aplicações

Mas existe outro prédio.

Quase escondido.

Sem visitantes.

Sem filas.

Sem atendimento ao público.

Um enorme arquivo central.

Ali trabalham apenas especialistas.

Esse prédio é o FOR.

FOR

↓

Arquivos

O fluxo verdadeiro

Usuário

↓

TOR

↓

AOR

↓

FOR

↓

VSAM

↓

FOR

↓

AOR

↓

TOR

↓

Usuário

Observe.

O arquivo nunca fala diretamente com o programa.

Sempre existe um intermediário.


O grande segredo: Function Shipping

Aqui aparece um termo muito cobrado em entrevistas.

Function Shipping.

Muitos iniciantes imaginam que o programa COBOL viaja para outra região.

Não.

Quem viaja é apenas o pedido.

Imagine um restaurante.

Você não leva a cozinha até sua mesa.

Você leva apenas o pedido.

O garçom entrega.

A cozinha prepara.

O prato volta.

No CICS acontece exatamente isso.

READ CUSTOMER

↓

FOR

↓

VSAM

↓

Registro

Nada mais.

Nada menos.


Um READ nunca foi apenas um READ

Veja um simples comando.

EXEC CICS
READ FILE('CLIENTE')
RIDFLD(CHAVE)
INTO(REGISTRO)
END-EXEC

Para o programador...

acabou.

Para o CICS...

a aventura apenas começou.

Primeiro ele verifica onde mora aquele arquivo.

Depois identifica seu proprietário.

Depois cria uma requisição.

Depois envia para outra região.

Depois espera resposta.

Depois recebe.

Depois devolve ao programa.

Tudo isso em milissegundos.


Easter Egg nº 1

Existe um velho ditado entre administradores CICS.

"Se um READ demora, culpe primeiro o caminho... não o COBOL."

Muitas vezes o programa está perfeito.

O problema pode estar:

  • no FOR

  • no VSAM

  • na rede entre regiões

  • no lock

  • no disco

  • na contenção

O COBOL frequentemente é inocente.


O banco das três agências

Imagine um banco.

Existem três grandes departamentos.

Agência Digital

Consulta saldo

PIX

Transferências

Cadastro

Atualização de clientes

Todos precisam acessar:

CUSTOMER

Sem FOR...

Cada AOR teria seu próprio acesso.

Resultado?

Mais administração.

Mais risco.

Mais configurações.

Mais problemas.


Com FOR

Tudo muda.

AOR 1

      \

AOR 2 -----> FOR -----> CUSTOMER

      /

AOR 3

Existe apenas um proprietário.

E isso simplifica toda a infraestrutura.


O guardião dos cofres

Imagine o cofre de um banco.

Você não entrega uma chave para cada funcionário.

Existe um responsável.

No CICS é igual.

O FOR guarda as chaves dos arquivos.


O mistério dos Locks

Agora imagine.

Saldo:

R$ 2.000,00

No mesmo segundo...

Um ATM faz saque.

Outro ATM faz depósito.

Outro aplicativo faz PIX.

Quem ganha?

Quem perde?

Sem controle...

o saldo poderia terminar errado.

Com FOR...

READ UPDATE

↓

LOCK

↓

Atualiza

↓

UNLOCK

A ordem é preservada.


Curiosidade

Em ambientes gigantes, dois usuários podem tentar alterar exatamente o mesmo registro no mesmo milissegundo.

É por isso que mecanismos de bloqueio existem.

Sem eles...

o caos seria inevitável.


Easter Egg nº 2

Procure em livros antigos de CICS.

Você encontrará a expressão:

File Ownership

Muito antes da computação distribuída virar moda, o CICS já separava responsabilidades.

Hoje chamamos isso de arquitetura distribuída.

Na década de 1980 isso já existia no Mainframe.


FOR não significa lentidão

Alguns iniciantes pensam:

"Mais uma região? Então fica mais lento."

Nem sempre.

Pense numa rodovia.

Você pode ter uma estrada direta cheia de congestionamentos.

Ou uma estrada um pouco maior, porém organizada.

O tempo final costuma ser menor.

O FOR organiza o trânsito dos dados.


VSAM: o tesouro escondido

A maioria dos FOR administra arquivos VSAM.

Especialmente:

  • KSDS

  • ESDS

  • RRDS

Cada um resolve um tipo diferente de problema.

Um excelente programador COBOL conhece todos eles.


Easter Egg nº 3

Muitos bancos ainda armazenam alguns dos dados mais importantes do país em VSAM.

Quando alguém diz que "o legado morreu", provavelmente acabou de comprar um café usando um cartão cuja autorização passou por um VSAM.


O papel do TOR

O TOR não conhece negócios.

Ele conhece terminais.

Recebe conexões.

Distribui trabalho.

Pense nele como o porteiro de um grande edifício.


O papel do AOR

O AOR pensa.

Calcula.

Executa.

Decide.

Ali vivem os programas COBOL.


O papel do FOR

O FOR protege.

Administra.

Entrega.

Organiza.

Ele é o arquivista.


Analogia completa

Imagine um hospital.

Paciente

↓

Recepção

↓

Médico

↓

Arquivo Médico

↓

Prontuário

Recepção

TOR

Médico

AOR

Arquivo

FOR

Prontuário

VSAM


O iniciante costuma perguntar...

"Por que não colocar tudo dentro do AOR?"

Boa pergunta.

Resposta:

Porque sistemas gigantes precisam crescer.

Imagine cinquenta AORs.

Todos precisando do mesmo cadastro.

Duplicar arquivos?

Duplicar administração?

Duplicar manutenção?

Não faz sentido.


Escalabilidade

Um banco cresce.

Novas aplicações aparecem.

Novos AORs são criados.

Nada muda no FOR.

Todos continuam usando os mesmos arquivos.

Essa separação torna o crescimento muito mais simples.


Alta disponibilidade

Aqui surge outra pergunta interessante.

"E se o FOR parar?"

Excelente pergunta.

Em ambientes corporativos existem estratégias de redundância, recuperação e failover para minimizar indisponibilidades. Dependendo da arquitetura, podem existir múltiplas regiões e mecanismos que permitem restaurar rapidamente o acesso aos arquivos.

Porque perder o FOR significa perder acesso aos arquivos que ele administra.


Como um programador COBOL deve pensar?

Não pense apenas:

EXEC CICS READ

Pense:

"Minha requisição viajará."

Pergunte:

Onde está o arquivo?

Quem é o owner?

Existe FOR?

Existe lock?

Existe contenção?

Esse raciocínio diferencia um programador júnior de um profissional experiente.


Dicas para entrevistas

Se perguntarem:

O que é um FOR?

Responda:

"É uma região CICS responsável por possuir e administrar arquivos compartilhados, permitindo que múltiplos AORs acessem os mesmos recursos por meio de Function Shipping, preservando integridade, escalabilidade e centralização administrativa."

Se perguntarem:

Quem executa o COBOL?

Resposta:

AOR.

Quem recebe o usuário?

TOR.

Quem administra arquivos?

FOR.

Essa tríade aparece com frequência em entrevistas para IBM Z.


Curiosidades que poucos conhecem

  • O FOR reduz a necessidade de múltiplas definições de arquivos em diferentes regiões.

  • Em muitos ambientes, ele trabalha em conjunto com recursos como VSAM RLS para ampliar o compartilhamento seguro dos dados.

  • Grandes instituições financeiras utilizam arquiteturas desse tipo há décadas para suportar milhões de transações diárias.

  • Um simples comando EXEC CICS READ pode envolver diversas camadas de comunicação invisíveis ao programador.


O verdadeiro mistério

O usuário acredita que conversou diretamente com um arquivo.

O programador acredita que o COBOL fez todo o trabalho.

O gerente acredita que tudo aconteceu em uma única máquina.

Mas, nos bastidores, uma coreografia perfeita acontece entre TOR, AOR, FOR, VSAM e o CICS.

É como uma investigação policial em que o detetive resolve o caso, mas nunca percebe que um discreto arquivista encontrou a prova decisiva escondida em uma gaveta esquecida.


Bellacosa Files – Caso Encerrado

Imagine Sherlock Holmes entrando em um CPD.

Watson observa um terminal 3270 e comenta:

— Holmes, o programa encontrou o registro em menos de um segundo. Impressionante.

Holmes sorri, acende seu cachimbo e responde:

— Elementar, meu caro Watson. O programa não encontrou absolutamente nada.

— Como assim?

— Quem encontrou foi o verdadeiro guardião dos arquivos. O programa apenas fez a pergunta certa.

Watson olha para o enorme datacenter, onde dezenas de luzes piscam em silêncio.

Naquele instante, ele percebe que existe um herói invisível trabalhando muito além das telas verdes.

Um herói que nunca aparece nas apresentações comerciais.

Nunca recebe aplausos.

Nunca é visto pelos usuários.

Mas que mantém bancos, companhias aéreas, seguradoras e governos funcionando todos os dias.

Seu nome é FOR — File-Owning Region.

E enquanto houver um VSAM guardando informações valiosas, esse silencioso arquivista continuará protegendo o patrimônio digital do mundo, provando que, no universo IBM Z, os maiores mistérios não estão nos programas COBOL… estão na extraordinária arquitetura que faz tudo funcionar com precisão há décadas.

sábado, 13 de janeiro de 2018

O Portal das Mil Regiões : Atravesse o Stargate e Descobre que o Verdadeiro Guardião da Galáxia Atende pelo Nome de TOR

 

Bellacosa Mainframe CICS TOR o portal das mil regioes

☕ Um Café no Bellacosa Mainframe

O Portal das Mil Regiões

Quando um Programador COBOL Atravessa o Stargate e Descobre que o Verdadeiro Guardião da Galáxia Atende pelo Nome de TOR

"Há milhares de anos, uma antiga tecnologia foi construída para conectar mundos distantes. Não transportava pessoas... transportava transações."

Na série Stargate SG-1, uma equipe atravessa um gigantesco portal para visitar outros planetas. O Stargate não decide o que acontecerá do outro lado. Ele não derrota inimigos. Não constrói cidades. Não realiza experimentos científicos.

Ele apenas abre o caminho.

Agora imagine que, em vez de planetas, cada destino seja uma região CICS.

Em vez de uma equipe SG-1...

Temos um terminal 3270.

Em vez do Comando Stargate...

Temos um CICSplex.

E em vez do anel de endereçamento...

Temos um TOR (Terminal-Owning Region).

Hoje vamos investigar uma das arquiteturas mais elegantes já criadas na história da computação corporativa.

Prepare sua IDC (Identification Card), ajuste seu terminal 3270 e digite a transação.

O portal acaba de ser ativado.


Capítulo 1 — O Mistério da Porta que Nunca Executa Nada

Todo iniciante em CICS costuma imaginar uma arquitetura muito simples.

Terminal

    │

    ▼

Programa COBOL

    │

    ▼

DB2

Parece lógico.

O usuário digita uma transação.

O programa executa.

O banco responde.

Fim.

Mas um banco internacional não atende cinquenta clientes.

Ele atende milhões.

Uma companhia aérea não possui cem reservas.

Ela possui centenas de milhares acontecendo simultaneamente.

Uma seguradora pode manter milhares de operadores conectados durante todo o expediente.

Será que um único CICS suportaria tudo isso?

Claro que não.

Foi exatamente aí que nasceu uma das maiores ideias da engenharia de software corporativa.

Separar responsabilidades.


Capítulo 2 — O Programa Nunca Conhece o Cliente

Essa afirmação parece absurda.

Mas pense cuidadosamente.

O programa COBOL realmente conhece o usuário?

Na maioria dos grandes ambientes...

Não.

Quem conversa com o terminal é o TOR.

O COBOL apenas recebe uma requisição pronta para processamento.

Isso é parecido com um hospital.

Você conversa primeiro com a recepção.

Não diretamente com o cirurgião.

O recepcionista pergunta:

— Nome?

— Documento?

— Convênio?

— Qual o problema?

Somente depois você é encaminhado ao especialista.

O TOR faz exatamente isso.

Ele recebe.

Identifica.

Controla.

Encaminha.

Mas nunca faz a cirurgia.


Capítulo 3 — O Stargate da IBM

Na série Stargate existe um equipamento gigantesco.

Quando o endereço é discado...

O portal abre.

Terra

↓

Stargate

↓

Abydos

Observe algo interessante.

O Stargate nunca constrói uma pirâmide.

Nunca derrota Goa'ulds.

Nunca realiza pesquisas.

Ele apenas conecta dois pontos.

O TOR possui exatamente esse papel.

Usuário

↓

TOR

↓

AOR

Ele abre o caminho.

Nada mais.

Nada menos.

Essa simplicidade esconde uma engenharia monumental.


Capítulo 4 — O CICSplex é uma Galáxia

O erro mais comum dos iniciantes é imaginar que existe apenas um CICS.

Na realidade...

Os grandes bancos possuem dezenas.

Às vezes centenas.

Imagine algo assim:

               TOR-1

                  │

      ┌───────────┼──────────┐

      ▼           ▼          ▼

    AOR1       AOR2       AOR3

      │           │          │

      └──────┬────┴──────────┘

             ▼

         DB2 / MQ / VSAM

Agora imagine multiplicar isso por vinte.

Ou cinquenta.

Ou cem regiões.

Esse conjunto recebe o nome de CICSplex.

É literalmente uma galáxia de CICS trabalhando em conjunto.


Capítulo 5 — Quem é o Dono do Terminal?

O nome TOR já entrega sua missão.

Terminal-Owning Region.

Owning.

Proprietário.

Quem possui o terminal?

O TOR.

Quem controla sessões?

O TOR.

Quem mantém conexões?

O TOR.

Quem administra comunicação?

O TOR.

Quem executa COBOL?

Não.

Esse trabalho pertence ao AOR.


Capítulo 6 — O AOR é o SG-1

Na série Stargate existe a equipe de exploração.

Ela entra pelo portal.

Resolve problemas.

Enfrenta inimigos.

Retorna para casa.

No CICS...

Essa equipe é o AOR.

Application-Owning Region.

Ele realmente trabalha.

Executa:

  • COBOL

  • PL/I

  • C

  • Java

  • EXEC CICS

  • EXEC SQL

  • MQ

  • VSAM

Enquanto isso...

O TOR continua recebendo novas solicitações.


Capítulo 7 — O Endereço Galáctico

No Stargate existe um endereço formado por símbolos.

No CICS existe algo parecido.

Quando o usuário digita:

SALD

ou

EXTR

ou

PAGT

O TOR consulta suas tabelas.

Descobre:

"Essa transação pertence ao AOR-2."

Pronto.

A viagem começa.


Capítulo 8 — A Viagem da Transação

Vamos acompanhar uma única consulta de saldo.

Cliente

↓

3270

↓

TOR

↓

AOR

↓

COBOL

↓

DB2

↓

COBOL

↓

TOR

↓

Cliente

Parece simples.

Mas internamente dezenas de componentes cooperam.

É uma verdadeira coreografia.


Capítulo 9 — O TOR Nunca Consulta o Banco

Outra dúvida clássica.

"O TOR faz SELECT?"

Não.

Quem executa:

EXEC SQL
SELECT

é o programa COBOL.

Executando dentro do AOR.

O TOR nem sabe qual tabela foi acessada.

Ele apenas entrega e devolve a mensagem.


Capítulo 10 — O Grande Diretor Invisível

Quem decide qual AOR receberá a transação?

Em muitos ambientes...

O CICSPlex System Manager (CPSM).

Ele observa tudo.

CPU.

Memória.

Disponibilidade.

Carga.

Afinidade.

Estado das regiões.

Ele funciona como o General George Hammond observando dezenas de missões simultaneamente.

Se um AOR estiver sobrecarregado...

Outra região será escolhida.

Automaticamente.


Capítulo 11 — O Segredo da Afinidade

Imagine um cliente preenchendo um financiamento.

Tela 1.

Tela 2.

Tela 3.

Tela 4.

Durante o preenchimento...

Os dados permanecem temporariamente em memória.

Se o usuário fosse enviado para outro AOR no meio da operação...

Toda a conversa poderia ser perdida.

Por isso existe um conceito chamado Transaction Affinity.

Ela garante que determinadas conversas permaneçam sempre na mesma região de aplicação.

É como atravessar o Stargate com toda a equipe SG-1. Você não quer que metade da equipe apareça em outro planeta.


Capítulo 12 — O Load Balancer Antes da Internet

Hoje ouvimos falar em:

  • Kubernetes

  • Ingress Controller

  • API Gateway

  • Reverse Proxy

  • Load Balancer

Curiosamente...

O CICS fazia algo semelhante muito antes da computação em nuvem.

Internet

↓

Load Balancer

↓

Servidor A

Servidor B

Servidor C

No CICS:

Usuário

↓

TOR

↓

AOR-1

AOR-2

AOR-3

A ideia é praticamente idêntica.


Capítulo 13 — O Banco Nunca Fecha

Imagine um banco mundial.

Enquanto o Brasil dorme...

A Ásia está trabalhando.

Depois vem a Europa.

Depois a América.

O processamento nunca para.

Por isso diversos TORs podem existir simultaneamente.

TOR-1

TOR-2

TOR-3

TOR-4

Todos atendendo usuários.

Todos distribuindo carga.

Todos protegendo o ambiente.


Capítulo 14 — Um Dia na Vida de uma Transação

08:01.

O cliente consulta saldo.

08:01:00.003.

O TOR recebe.

08:01:00.005.

O CPSM encontra o melhor AOR.

08:01:00.007.

O COBOL inicia.

08:01:00.010.

O Db2 responde.

08:01:00.014.

A tela volta ao terminal.

Tudo aconteceu em poucos milissegundos.

O usuário acredita que apenas "o computador respondeu".

Na realidade...

Uma pequena frota inteira trabalhou para produzir aquela resposta.


Capítulo 15 — Easter Egg nº 1

No universo Stargate existe um dispositivo chamado DHD (Dial Home Device).

Ele não transporta ninguém.

Apenas estabelece a conexão.

O TOR desempenha um papel semelhante.

Ele não processa a lógica.

Ele estabelece o caminho.


Capítulo 16 — Easter Egg nº 2

Os fãs de Stargate lembram que cada planeta possui um endereço único.

Em CICS...

Cada transação também possui sua identidade.

CESN

CEMT

CECI

CEDA

CEDF

Cada uma "abre um portal" para uma função diferente do ambiente.


Capítulo 17 — Easter Egg nº 3

Os Asgard possuíam computadores extremamente avançados.

Mesmo assim...

Sempre existia um sistema central coordenando tudo.

No CICSplex...

Esse papel lembra o CMAS (CICSPlex Management Address Space), que mantém a visão centralizada das regiões e coopera com o CPSM na administração do ambiente. Ele não executa programas de negócio, mas ajuda a organizar e monitorar todo o ecossistema.


Curiosidades que Impressionam

  • O conceito de separar comunicação da lógica de negócio existe no CICS há décadas, muito antes de termos API Gateways e microsserviços.

  • Um TOR costuma consumir bem menos CPU que um AOR, justamente porque sua função é receber, manter sessões e encaminhar requisições.

  • Grandes bancos podem operar com dezenas de TORs e centenas de AORs, distribuindo milhões de transações por dia.

  • O usuário final jamais percebe por quantas regiões sua solicitação passou. Para ele, existe apenas "o sistema do banco".


Dicas para Quem Está Aprendendo CICS

Se você está iniciando sua jornada, estude os componentes na seguinte ordem:

  1. Entenda como funciona uma região CICS isolada.

  2. Aprenda o ciclo de vida de uma transação (EXEC CICS LINK, RETURN, SYNCPOINT etc.).

  3. Conheça o papel do TOR e do AOR.

  4. Estude os demais tipos de regiões, como FOR (File-Owning Region) e CMAS.

  5. Aprofunde-se em CICSPlex SM, políticas de workload e roteamento dinâmico.

  6. Explore como CICS integra Db2, VSAM, MQ e APIs REST modernas.

Essa sequência ajuda a construir uma visão sólida antes de mergulhar em arquiteturas de alta disponibilidade.


Comparando com Tecnologias Modernas

Arquitetura ModernaMundo CICS
API GatewayTOR
Load BalancerTOR + CPSM
Application ServerAOR
Banco de DadosDb2
File StorageVSAM
Cluster ManagerCICSPlex SM
Control PlaneCMAS
MicrosserviçoPrograma CICS especializado

Essa comparação mostra que muitos conceitos considerados "novos" já existiam no mainframe, apenas com nomes diferentes e décadas de maturidade operacional.


A Mensagem Oculta de Stargate

Existe uma frase recorrente na série:

"Não é o portal que salva a missão. É a equipe que o atravessa."

No CICS acontece algo semelhante.

O TOR é indispensável, mas ele não calcula juros, não atualiza contas, não aprova empréstimos e não processa pagamentos. Seu papel é garantir que cada solicitação encontre a região correta, de forma rápida, segura e confiável.

Essa separação de responsabilidades é um dos pilares que permitiu ao CICS sustentar sistemas críticos por décadas.


Conclusão — O Portal Continua Aberto

Ao terminar este café, você provavelmente nunca mais olhará para um TOR da mesma forma.

Ele não é apenas uma "região de terminais". É o guardião silencioso da entrada do CICSplex, o responsável por manter milhares de conexões organizadas, distribuir a carga entre regiões de aplicação e garantir que cada transação siga pelo melhor caminho.

No universo de Stargate, atravessar o portal era apenas o começo da aventura.

No universo do IBM CICS, atravessar o TOR também é apenas o primeiro passo.

Do outro lado aguardam AORs, FORs, CMAS, Db2, VSAM, MQ, políticas de workload, afinidade de transações e uma arquitetura construída para suportar alguns dos sistemas mais críticos do planeta.

Talvez esse seja o maior segredo do mainframe: sua verdadeira força nunca esteve em uma única máquina ou em um único programa COBOL. Ela sempre esteve na capacidade de dividir responsabilidades entre componentes especializados, trabalhando em perfeita harmonia.

Assim como a equipe SG-1 confiava no Stargate para chegar ao destino certo, milhões de usuários, todos os dias, confiam sem perceber que um discreto TOR abrirá o portal correto para que suas transações cheguem ao lugar exato — e retornem em milissegundos, como se toda essa jornada tivesse acontecido por mágica. É justamente essa "mágica" invisível, fruto de décadas de engenharia refinada, que faz do CICS uma das maiores obras-primas da computação corporativa.

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
GitHub LinkedIn
Inicializando conteúdo...