🧠 Explicação
A macro DFHMSD é usada no BMS (Basic Mapping Support) para definir o MAPSET, ou seja, o conjunto de telas que serão utilizadas por uma aplicação CICS. Ela é a primeira macro de um mapa BMS e serve como estrutura principal para a definição de uma ou mais telas (macros DFHMDI
) e seus respectivos campos (DFHMDF
).
O nome (label) da macro DFHMSD será utilizado pelos programas COBOL nos comandos SEND MAPSET(...)
e RECEIVE MAPSET(...)
.
🛠️ Usos mais comuns
-
Definir o nome do Mapset a ser usado nos programas CICS
-
Indicar o tipo de saída desejada: COPY, Módulo objeto ou ambos
-
Determinar o modo de operação da tela (entrada, saída ou ambos)
-
Estabelecer configurações do terminal (alarme, liberação do teclado etc.)
-
Incluir informações de controle exigidas pelo Command Level
🧾 Sintaxe básica
NOMEMAP DFHMSD TYPE=MAP,MODE=INOUT,LANG=COBOL,STORAGE=AUTO,CTRL=(FREEKB,ALARM),TIOAPFX=YES
No fim da definição do mapa, deve-se incluir:
DFHMSD TYPE=FINAL
END
💻 Exemplo prático
MAPA01 DFHMSD TYPE=MAP,MODE=INOUT,LANG=COBOL,STORAGE=AUTO,CTRL=(FREEKB,ALARM),TIOAPFX=YES
TELA1 DFHMDI SIZE=(24,80)
CAMPO1 DFHMDF POS=(5,10),LENGTH=10,ATTRB=(UNPROT,FSET)
DFHMSD TYPE=FINAL
END
⚙️ Parâmetros disponíveis
Parâmetro | Função |
---|---|
TYPE= |
Define o tipo de geração (MAP, DSECT, FINAL) |
MODE= |
Determina o uso da tela (IN, OUT ou INOUT) |
LANG= |
Define a linguagem do programa que usará a tela (COBOL ou ASM) |
STORAGE=AUTO |
Gera áreas de entrada/saída com REDEFINES no COPY |
CTRL=(...) |
Configurações do terminal (alarme, liberação de teclado, impressão...) |
TIOAPFX=YES |
Insere área FILLER necessária para Command Level |
📋 Detalhamento dos parâmetros
▶ TYPE=
-
MAP
: Gera o módulo objeto que será carregado pelo CICS -
DSECT
: Gera apenas a área COPY (sem módulo objeto) -
FINAL
: Fecha a estrutura do Mapset — deve ser a última macro do BMS
▶ MODE=
-
IN
: A tela será usada apenas para entrada de dados -
OUT
: A tela será usada apenas para saída de dados -
INOUT
: A tela servirá para entrada e saída (modo mais comum)
▶ LANG=
-
COBOL
: O programa CICS está em linguagem COBOL -
ASM
: O programa CICS está em Assembler
▶ STORAGE=AUTO
Cria a mesma área de memória para entrada e saída, usando o comando REDEFINES
no copy gerado.
▶ CTRL=(...)
-
FREEKB
: Libera o teclado após envio da tela -
ALARM
: Ativa o alarme sonoro (beep) do terminal -
PRINT
: Direciona a tela para uma impressora remota -
length
: Tamanho da linha para impressão (ex: L80) -
FRSET
: Reseta o MDT dos campos antes de enviar a tela
▶ TIOAPFX=YES
Obrigatório para programas CICS em Command Level. Cria um FILLER de 12 posições no início da área COPY, usado internamente pelo CICS.
💡 Dicas
-
Sempre utilize
TIOAPFX=YES
em ambientes Command Level, senão seu programa pode não funcionar corretamente. -
O
TYPE=MAP
eTYPE=DSECT
podem ser usados em conjunto para gerar tanto o módulo objeto quanto a área COPY. -
Ao finalizar o mapa BMS, nunca esqueça de incluir
DFHMSD TYPE=FINAL
seguido deEND
.
✅ Conclusão
A macro DFHMSD é o ponto de partida da definição de uma tela no CICS. Ela organiza o Mapset e define as regras gerais que todas as telas e campos devem seguir. Saber configurá-la corretamente é essencial para garantir que as telas funcionem como esperado em ambientes de produção, com integração fluida entre programas COBOL e terminais 3270.