| 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
| Recurso | COMMAREA | CHANNEL/CONTAINER |
|---|---|---|
| Tamanho | 32 KB | Muito maior |
| Estrutura | Única | Múltiplas |
| Manutenção | Difícil | Limpa |
| Futuro | Legado | Presente 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.
