🧠 Explicação
A DFHMDF é uma macro do BMS (Basic Mapping Support) utilizada para definir campos individuais em uma tela CICS. Cada campo visível, editável ou protegido da tela deve ser declarado com uma macro DFHMDF, que determina sua posição, tamanho, atributos de acesso, conteúdo inicial, e outras propriedades.
Ela é uma das três macros principais do BMS, juntamente com:
-
DFHMSD
– define o MAPSET (conjunto de telas); -
DFHMDI
– define cada tela do MAPSET; -
DFHMDF
– define cada campo da tela.
🛠️ Usos mais comuns
-
Criar campos editáveis ou protegidos na tela CICS
-
Atribuir conteúdos iniciais (literals fixos)
-
Controlar o brilho, visibilidade e posição do cursor
-
Definir a estrutura dos campos gerados no COPY usado no COBOL
-
Agrupar subcampos em um campo composto (ex: datas)
🧾 Sintaxe básica
O nome do campo é opcional e aparece na coluna 1. Quando definido, ele será incluído no copybook gerado para uso no programa COBOL.
💻 Exemplo prático
Suponha a linha de tela abaixo:
x C O D I G O D O P R O D U T O x _ _ _ _ _ x
Essa linha pode ser construída com três macros DFHMDF:
⚙️ Parâmetros mais utilizados
Parâmetro | Função |
---|---|
POS= |
Define a posição do campo na tela. Ex.: POS=(10,24) |
LENGTH= |
Define o comprimento do campo (máx. 256). Ex.: LENGTH=5 |
ATTRB= |
Define atributos de proteção, brilho e cursor |
INITIAL= |
Define texto fixo que será exibido na tela |
PICIN= |
Máscara PICTURE do COBOL para entrada (campo de digitação) |
PICOUT= |
Máscara PICTURE do COBOL para saída (campo de exibição) |
GRPNAME= |
Agrupa subcampos (ex: dia, mês, ano formando DATA) |
JUSTIFY= |
Controla alinhamento e preenchimento durante a digitação |
📚 Detalhamento de atributos (ATTRB
)
▶ Proteção
-
PROT
: campo protegido (não permite digitação) -
UNPROT
: campo desprotegido (permite digitação) -
UNPROT,NUM
: somente números -
ASKIP
: cursor não para no campo
▶ Brilho
-
NORM
: normal -
BRT
: brilho intenso -
DRK
: invisível
▶ Acesso
-
FSET
: envia o conteúdo ao CICS mesmo se não for alterado -
IC
: posiciona o cursor neste campo
📘 Máscaras PICIN / PICOUT
-
PICIN='999999V99'
gera no COBOL:03 VALOR PIC 999999V99.
-
PICOUT='$$$$$9,99'
gera no COBOL:03 VALOR PIC $$$$$9,99.
🔗 Exemplo com grupo (GRPNAME)
Esse agrupamento facilita o uso de datas como campo composto.
📋 Regras importantes
-
Campos com LENGTH=0 são válidos e usados como delimitadores visuais
-
O campo só será incluído no copybook se tiver nome
-
A macro
DFHMDF
não pode ultrapassar as 80 colunas da tela; se ultrapassar, continua na linha seguinte -
Apenas o primeiro campo de um grupo (GRPNAME) pode ter ATTRB definido
💡 Dicas
-
Use
FSET
sempre que quiser garantir que o campo seja enviado, mesmo sem alterações -
Utilize
IC
para facilitar a navegação do usuário, colocando o cursor diretamente no campo -
Para campos de apenas leitura, combine
PROT
comASKIP
-
Campos com
LENGTH=0
são úteis como separadores ou delimitadores de atributos
✅ Conclusão
A macro DFHMDF é essencial na definição de telas em ambientes CICS. Ela define a estrutura, posição, formato e comportamento de cada campo individual, integrando-se perfeitamente com programas COBOL através do copybook gerado. Um bom domínio de seus parâmetros garante telas funcionais, bem apresentadas e adaptadas à lógica da aplicação.