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

sábado, 12 de setembro de 2015

🧠 Storage Control no CICS

 

CICS Storage Control

🧠 Storage Control no CICS

Onde o estado vive, onde ele morre e onde ele assombra produção

A imagem mostra:

Storage Control → Storage sources
• COMMAREA
• CWA (Common Work Area)
• TWA (Transaction Work Area)

Isso não é teoria.
Isso é onde bugs se escondem.


🧱 Storage Control – o papel do CICS

O Storage Control é o componente do CICS responsável por:

  • Alocar memória

  • Liberar memória

  • Isolar memória entre tasks

  • Proteger o CICS de você (sim, de você)

Tudo no CICS gira em torno de tasks concorrentes compartilhando CPU, mas não memória — salvo quando você pede explicitamente.


📦 COMMAREA

O clássico, o limitado, o abusado

O que é

Área de comunicação passada entre programas via:

  • LINK

  • XCTL

  • RETURN TRANSID

Características

  • 📏 Tamanho máximo: 32 KB

  • 🔁 Passagem explícita

  • ⏱️ Vida curta (dura o fluxo)

  • 🔒 Isolada por task

Quando usar

  • Dados pequenos

  • Estruturas simples

  • Fluxo linear clássico

Pecados capitais

  • Usar COMMAREA como banco de dados

  • Estourar tamanho

  • Reusar layout errado (ASRA clássico)

💀 ABEND típico: ASRA / AEIP


CICS TWA

🧰 TWA – Transaction Work Area

Estado temporário da transação

O que é

Área de memória associada à transação, não ao programa.

Características

  • Criada automaticamente pelo CICS

  • Acessível por qualquer programa da transação

  • Vive até o RETURN final

Quando usar

  • Guardar estado entre múltiplos programas

  • Fluxo pseudo-conversacional simples

Riscos

  • Confundir TWA com COMMAREA

  • Assumir que sobrevive entre transações (não sobrevive)

💡 Boa prática: TWA é “mochila da transação”, não cofre.


CICS CWA

🏛️ CWA – Common Work Area

O templo dos deuses (e dos pecados)

O que é

Área de memória global do CICS Region.

Características

  • Compartilhada por todas as tasks

  • Inicializada no startup

  • Não é isolada

  • Não é protegida

Quando usar (com muito cuidado)

  • Tabelas de controle

  • Flags globais

  • Cache de leitura

Quando NÃO usar

  • Dados de negócio

  • Dados por usuário

  • Qualquer coisa mutável sem controle

☠️ Risco real: corrupção de dados, race condition, caos silencioso.

CWA é poder absoluto — e poder absoluto gera incidentes absolutos.


🚀 CHANNEL & CONTAINER

O CICS moderno, civilizado e escalável

O que são

Substitutos modernos da COMMAREA.

  • CHANNEL → agrupador lógico

  • CONTAINER → estrutura de dados

Características

  • 📏 Tamanho praticamente ilimitado

  • 📦 Estruturas múltiplas

  • 🔄 Tipagem flexível

  • 🧼 Melhor manutenção

  • 🔐 Mais seguro

Quando usar

  • Aplicações modernas

  • Integração

  • Grandes volumes

  • APIs CICS

Comparação rápida

RecursoCOMMAREACHANNEL/CONTAINER
Tamanho32 KBMuito maior
EstruturaÚnicaMúltiplas
ManutençãoDifícilLimpa
FuturoLegadoPresente e futuro

🗺️ Como ler a imagem como um mainframer

A imagem não está falando só de memória.
Ela está dizendo:

“Escolha errado onde guardar estado
e você vai debugar às 3 da manhã.”


🧠 Regra Bellacosa de Ouro

  • COMMAREA → conversa curta

  • TWA → memória da transação

  • CWA → último recurso

  • CHANNEL/CONTAINER → escolha padrão moderna


☕ Comentário El Jefe Midnight Lunch

“CICS não quebra porque é antigo.
Ele quebra porque alguém tratou memória como variável global.”

🔥 Quem entende Storage Control, domina o CICS.