segunda-feira, 3 de janeiro de 2011

🔥 Map Programming no CICS Structure, Rules, Hierarchy & Checklist para Design de Mapas BMS

 

Programação de mapa BMS em CICS

🔥 Map Programming no CICS

Structure, Rules, Hierarchy & Checklist para Design de Mapas BMS

Workflow de compilação mapa bms cics



☕ Midnight Lunch, tela piscando e o mapa “quase certo”

13h42.
O programa compila.
O mapa gera.
A tela aparece… toda desalinhada.

O operador olha.
O usuário reclama.
O programador jura:

“Mas o BMS tá certo…”

Hoje vamos falar do map programming no CICS — a arte esquecida que separa interface profissional de poluição verde-fosforescente.


🏛️ História: antes do HTML, existia BMS

Antes de:

  • HTML

  • CSS

  • Front-end frameworks

o CICS já tinha separação clara entre lógica e apresentação usando BMS (Basic Mapping Support).

📌 BMS é UI declarativa antes da web existir.


🧠 Conceito essencial (guarde isso)

Mapa não é tela.
Mapa é contrato entre usuário e programa.

Se o contrato é ruim, o sistema sofre.


🧩 Hierarquia de Mapas no CICS

Entender a hierarquia evita 80% dos erros.

📐 Estrutura hierárquica

MAPSET └── MAP └── FIELD

📦 MAPSET

  • Conjunto lógico de mapas

  • Compilado como uma única unidade

  • Gera um load module

📌 MAPSET é o pacote.


🖥️ MAP

  • Uma tela específica

  • Ex: entrada, consulta, confirmação

📌 Um MAP = um propósito.


🔤 FIELD

  • Campos de entrada ou saída

  • Posicionados na tela

  • Com atributos definidos

📌 Campo mal definido = bug visual.


🧾 Estrutura básica de um BMS Map

DFHMSD TYPE=MAP,MODE=INOUT,LANG=COBOL,STORAGE=AUTO MAP01 DFHMDI SIZE=(24,80),LINE=1,COLUMN=1 FLD01 DFHMDF POS=(5,10),LENGTH=10,ATTRB=(UNPROT) DFHMSD TYPE=FINAL

📌 Simples. Poderoso. Exigente.


📐 Regras fundamentais de Map Programming

1️⃣ Um mapa, uma função

❌ Tela “faz tudo”
✅ Tela objetiva


2️⃣ Campos bem definidos

  • Entrada → UNPROT

  • Saída → PROT

  • Proteção correta evita erro de digitação


3️⃣ Nunca confie no input

  • Sempre valide no programa

  • Mapa ajuda, mas não garante


4️⃣ Use atributos conscientemente

  • INTENS

  • MDT

  • IC (cursor)

  • ASKIP

📌 Atributo errado confunde usuário.


🧠 Estrutura do Programa de Mapa (lado COBOL)

Fluxo clássico

1️⃣ RECEIVE MAP
2️⃣ Processa dados
3️⃣ Prepara saída
4️⃣ SEND MAP
5️⃣ RETURN

📌 Mapa não decide lógica. Programa decide.


🛠️ Passo a passo: desenhando um mapa decente

🧩 Planejamento

  • O que o usuário vê?

  • O que ele digita?

  • Qual é o fluxo?


🧩 Design

  • Campos alinhados

  • Mensagens claras

  • Uso consciente de cores


🧩 Implementação

  • BMS limpo

  • Nomes consistentes

  • Sem “gambiarras visuais”


🧩 Teste

  • Campo obrigatório

  • Campo inválido

  • Tela cheia

  • Tela vazia

📌 Tela também precisa de teste.


✅ Checklist Bellacosa – antes de subir o mapa

✔ Campos protegidos corretamente
✔ Cursor posicionado logicamente
✔ Mensagens claras e humanas
✔ Nenhum campo sobreposto
✔ MAPSET organizado
✔ Nomes padronizados
✔ Layout documentado

📌 Mapa ruim vira chamado eterno.


⚠️ Erros clássicos (easter eggs)

🐣 Campo UNPROT que deveria ser PROT
🐣 Mensagem fixa escrita no mapa
🐣 Mapa gigante e confuso
🐣 Layout “ajustado no chute”
🐣 BMS tratado como código secundário

📌 Todo sistema feio começa assim.


📚 Guia de estudo para mainframers

Domine estes tópicos:

  • BMS syntax

  • Mapset generation

  • SEND / RECEIVE MAP

  • MDT, IC, ASKIP

  • Pseudo-conversational design

📖 Manual essencial: CICS Basic Mapping Support Guide


🤓 Curiosidades de boteco mainframe

🍺 BMS já separava UI e lógica antes do MVC
🍺 Muitas telas CICS têm mais de 30 anos
🍺 Um bom mapa reduz erro humano
🍺 Operador odeia mapa mal alinhado


💬 Comentário El Jefe Midnight Lunch

“Código ruim quebra sistema.
Mapa ruim quebra usuário.”


🚀 Aplicações reais hoje

  • Sistemas bancários

  • Governo

  • Seguradoras

  • Atendimento corporativo

  • Ambientes híbridos (3270 + APIs)


🎯 Conclusão Bellacosa

Map programming não é detalhe.
É experiência do usuário, disciplina e respeito.

Quem domina BMS:

  • Recebe menos chamado

  • Facilita suporte

  • Cria sistemas longevos

🔥 Tela bem feita envelhece melhor que código.


Sem comentários:

Enviar um comentário