🧠 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 e TYPE=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 de END.

 

✅ 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.