🧠 Explicação
A macro DFHMDI é utilizada dentro da estrutura BMS (Basic Mapping Support) para definir uma tela específica dentro de um Mapset em aplicações CICS. Cada tela representa uma interface com o usuário e é composta por um ou mais campos, definidos por macros DFHMDF.
A macro DFHMDI deve ser utilizada após a DFHMSD (que define o Mapset) e precede os campos da tela.
🛠️ Usos mais comuns
-
Definir o tamanho da tela (linhas e colunas)
-
Posicionar a tela dentro do terminal 3270
-
Substituir controles herdados da macro DFHMSD
-
Permitir a criação de múltiplas telas dentro de um mesmo Mapset
🧾 Sintaxe básica
NOMETELA DFHMDI SIZE=(linhas,colunas),CTRL=(...),LINE=...,COLUMN=...,FIELDS=NO
O nome da tela (coluna 1) será usado nos comandos COBOL SEND
e RECEIVE
.
💻 Exemplo prático
TELA1 DFHMDI SIZE=(24,80),CTRL=(FREEKB,ALARM)
CAMPO1 DFHMDF POS=(5,10),LENGTH=10,ATTRB=(UNPROT,FSET)
CAMPO2 DFHMDF POS=(6,10),LENGTH=20,ATTRB=(UNPROT)
Neste exemplo:
-
A tela se chama TELA1
-
Tem tamanho padrão de 24 linhas por 80 colunas
-
Possui dois campos
⚙️ Parâmetros disponíveis
Parâmetro | Função |
---|---|
SIZE=(l,c) |
Define o tamanho da tela (linhas, colunas) |
CTRL=(...) |
Controla o comportamento da tela (semelhante à macro DFHMSD) |
LINE= |
Define a linha onde a tela será posicionada |
COLUMN= |
Define a coluna onde a tela será posicionada |
FIELDS=NO |
Indica que a tela não possui campos (pode ser apenas decorativa) |
📋 Detalhamento de parâmetros
▶ SIZE=(linhas,colunas)
Define o tamanho da área de exibição da tela. Exemplo:
SIZE=(24,80)
▶ CTRL=(...)
Opções comuns:
-
FREEKB
: libera o teclado após a exibição da tela -
ALARM
: emite um som (beep) no terminal -
PRINT
: envia a tela para a impressora do terminal -
FRSET
: redefine atributos MDT dos campos
▶ LINE=
e COLUMN=
Controlam a posição da tela no terminal 3270. Opções válidas:
Valor | Descrição |
---|---|
Número | Posição absoluta (ex: LINE=5 ) |
NEXT |
Próxima linha disponível (usado em composição de telas) |
SAME |
Mesma linha da tela anterior |
▶ FIELDS=NO
Indica que a tela não possui campos, sendo usada apenas para exibição de texto fixo.
💡 Dicas
-
Mesmo em Mapsets com uma única tela, é necessário declarar a DFHMDI.
-
Use
CTRL=(FREEKB)
para permitir a digitação após a exibição da tela. -
Se for criar mais de uma tela no mesmo terminal,
LINE=NEXT
eCOLUMN=0
ajudam a organizá-las. -
Campos só são válidos quando declarados após a DFHMDI correspondente.
✅ Conclusão
A macro DFHMDI é essencial para estruturar telas em aplicações CICS. Ela define onde a tela aparece no terminal, qual o seu tamanho e quais atributos ela herdará ou sobrescreverá do Mapset. Cada tela pode conter diversos campos, tornando o uso da DFHMDI um passo obrigatório na criação de interfaces robustas e organizadas para aplicações online em mainframe.