🔥 Como Criar uma Tela CICS BMS – Guia Definitivo Passo a Passo
☕ Introdução — Antes do HTML, existia o BMS
Antes de React, Angular e CSS, o mainframe já fazia interface rica — só que com disciplina, regra e respeito ao terminal.
No mundo CICS, tela não é arte.
Tela é contrato, estado, performance e sobrevivência em produção.
Vamos do zero absoluto até a tela rodando, sem pular etapas.
🧱 Conceitos Fundamentais (Sem isso, tudo quebra)
📌 O que é BMS?
BMS (Basic Mapping Support) é a linguagem declarativa usada para definir telas CICS.
Ela descreve:
-
Campos
-
Posições
-
Atributos
-
Proteção
-
Entrada e saída de dados
📌 BMS não tem lógica.
Ele só descreve como a tela se comporta.
🧠 MAP vs MAPSET — A confusão clássica
| Conceito | O que é |
|---|---|
| MAPSET | Conjunto de mapas (arquivo fonte BMS) |
| MAP | Uma tela individual dentro do MAPSET |
📌 Analogia Bellacosa:
-
MAPSET = arquivo HTML
-
MAP = página individual
-
FIELD = input / label
🧭 Passo a Passo — Criando uma Tela CICS BMS
1️⃣ Criar o Fonte BMS (MAPSET)
Exemplo básico:
Parâmetros importantes:
-
TYPE=MAP → indica que é um MAPSET
-
MODE=INOUT → entrada e saída
-
LANG=COBOL → gera copybook COBOL
-
TERM=3270 → terminal padrão
📌 Erro comum: esquecer LANG=COBOL → não gera copybook.
2️⃣ Definir um MAP (Tela)
O que isso faz:
-
Cria uma tela de 24x80
-
Posiciona no canto superior
📌 Um MAPSET pode ter vários MAPs.
3️⃣ Definir Campos (DFHMDF)
Exemplo:
Parâmetros essenciais:
| Parâmetro | Função |
|---|---|
| POS | Linha e coluna |
| LENGTH | Tamanho |
| ATTRB | Atributos |
| INITIAL | Texto inicial |
🎛️ Atributos Importantes (Onde mora o poder)
| Atributo | Função |
|---|---|
| PROT | Campo protegido |
| UNPROT | Campo editável |
| IC | Cursor inicial |
| MDT | Campo alterado |
| BRT | Brilho |
| ASKIP | Pula o campo |
📌 Erro clássico: esquecer MDT → CICS acha que o campo não mudou.
4️⃣ Finalizar o MAPSET
📌 Sem isso, não compila.
⚙️ Workflow de Compilação (Onde muitos erram)
1️⃣ Fonte BMS
2️⃣ Assembler
3️⃣ Gera MAPSET (LOAD)
4️⃣ Gera COPYBOOK
5️⃣ COPYBOOK entra no programa COBOL
6️⃣ Programa SEND/RECEIVE MAP
📌 BMS não é compilado como COBOL.
🧪 Usando o MAP no Programa COBOL
Enviar a tela:
Receber dados:
📌 O COPYBOOK gerado contém:
-
campos de entrada
-
campos de saída
-
indicadores MDT
🚀 Otimização — Dicas Bellacosa de Produção
✅ Boas práticas
-
Campos pequenos → menos tráfego
-
Use PROT para labels
-
Use UNPROT só onde necessário
-
Evite mapas gigantes
-
Reutilize MAPSETs
❌ Erros comuns
-
Um MAP por MAPSET sem necessidade
-
Tela cheia de campos UNPROT
-
Esquecer MDT
-
Misturar lógica com tela
-
Hardcode de posição no COBOL
🧠 Hierarquia Mental do BMS (Grave isso)
📌 Se você entende isso, não se perde mais.
🧯 Erros Clássicos em Produção
| Problema | Causa |
|---|---|
| Tela não aparece | MAPSET não instalado |
| Campos vazios | MDT ausente |
| Cursor errado | IC mal posicionado |
| Dump AEIM | MAP inexistente |
| Dados não chegam | RECEIVE errado |
🎓 Guia de Estudo Rápido
-
Entenda MAPSET vs MAP
-
Crie tela simples
-
Compile e gere copybook
-
Faça SEND
-
Faça RECEIVE
-
Trate MDT
-
Otimize
💬 Comentário El Jefe Midnight Lunch
“Quem domina BMS, domina o ritmo do CICS.”
🏁 Conclusão Bellacosa
Tela CICS não é UI.
É contrato, estado e performance.
🔥 Quem respeita o BMS:
-
evita ABEND
-
entrega rápido
-
sobrevive em produção
Sem comentários:
Enviar um comentário