A macro DFHMDF define os atributos sobre a tela. É necessario uma macro DFHMDF para cada atributo da tela.
Como exemplo, suponhamos que na coluna 10 de uma tela desejamos criar uma caixa de texto para digitar o codigo do produto. A caixa de texto terá ‘a sua esquerda um literal descritivo do campo. A linha 10 terá o seguinte aspecto:
0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 |
x C O D I G O D O P R O D U T O x _ _ _ _ _ x |
Note na ilustração que criamos 3 atributos representados pelas letras (x). O codigo BMS para esta linha terá 3 macros DFHMDF:
DFHMDF POS=(10,3),INITIAL=´CODIGO DO PRODUTO’,... CODPROD
DFHMDF POS=(10,21),....
DFHMDF POS=(10,27, LENGTH=0,.....
A sintaxe da macro DFHMDF é:
campo DFHMDF argumentos
Campo (na coluna 1) é opcional, e informa o nome do campo nos casos em que ele deve aparecer no programa Cobol.
Os argumentos da macro DFHMDF podem ser:
POS=posição,
Define a localização do campo na tela. Esta será a posição ocupada pelo atributo descrito. Pode ser informada em um dos formatos:
POS=numero, |
deslocamento do campo na tela. Ex.: POS=81, O atributo do campo esta na linha 2 coluna 2. (Para linha=1 e coluna = 1, POS=0) |
ou
POS=(linha,coluna), |
Ex.: POS=(2,2), O atributo do campo esta na linha 2 coluna 2. |
LENGTH=comprimento,
Este é o comprimento do campo, não incluindo o atributo. Os campos podem ter comprimento máximo de 256 caracteres. Quando o comprimento de um campo faz com que ele ultrapasse a coluna 80 da linha (overflow), o campo continuará na linha seguinte. Se o overflow ocorrer na última linha o campo, ele continuará na linha 1.
Pode-se definir um campo de comprimento zero se a macro DFHMDF não tiver label (campo sem nome). Este pseudo-campo não aparecerá na área copy da tela, e servirá somente para criar um atributo limitador para o campo anterior da tela.
LENGTH=comprimento, | Ex.: LENGTH=4, |
ATTRB=(proteção,brilho,acesso),
Este argumento define as características do atributo do campo. Os valores permitidos em cada opção do argumento, todos opcionais, são:
ATTRB=(proteção, | ASKIP, – Campo protegido. O cursor não parará neste campo com o uso ta tecla TAB. |
PROT, – O campo será protegido, isto é, será bloqueado para digitação. | |
UNPROT, – Campo desprotegido, aceitando digitação normal. | |
UNPROT,NUM – Campo desprotegido somente para teclas numéricas. | |
brilho, | NORM – Campo com brilho normal. |
BRT – Campo com brilho intenso. | |
DRK – Campo invisível. | |
acesso), | FSET – O campo deve ter o atributo MDT sempre ligado (ON). O terminal transmite seu conteúdo para o programa Cics, mesmo que o operador não altere o campo. |
IC – O cursor deve ser colocado neste campo. |
INITIAL=literal,
Esta clausula (opcional), define o conteúdo inicial do campo. Literal deve ser definido com aspas simples. Ex.:
INITIAL=literal, | Ex.: INITIAL=’XYZ’, |
PICIN=mascara,
PICIN define o formato da PICTURE que sera gerada na area COBOL do mapa de entrada da tela.
PICIN=mascara, | Ex.: PICIN=’999999V99’, |
Por ex., para a linha do mapa BMS:
VALOR DFHMDF POS=(5,10),PICIN=’999999V99’,LENGTH=8,
Sera gerada o fonte COBOL:
03 VALOR PIC 999999V99.
PICOUT=mascara,
PICOUT define o formato da PICTURE que sera gerada na area COBOL do mapa de saida da tela.
PICOUT=mascara, | Ex.: PICOUT=’$$$$$9,99’, |
Por ex., para a linha do mapa BMS:
VALOR DFHMDF POS=(5,10),PICOUT=’$$$$$9,99’,
Sera gerada o fonte
03 VALOR PIC $$$$$9,99.
Os parametros a seguir são de uso pouco frequente:
JUSTIFY=(posição,preenchimento),
- JUSTIFY define como o terminal posicionará os dados no campo durante a digitação. O argumento posição pode ser RIGHT ou LEFT, e o preenchimento pode ser BLANK ou ZERO.
- JUSTIFY=(LEFT,), alinha os dados à esquerda do campo.
- JUSTIFY=(RIGHT,), alinha os dados à direita do campo.
- JUSTIFY=(,BLANK), preenche as posições não digitadas do campo com espaços.
- JUSTIFY=(,ZERO), preenche as posições não digitadas do campo com zeros.
GRPNAME=nome,
O argumento GRPNAME serve para agrupar sub-campos de um campo, como por exemplo, o dia, mês e ano formando uma data. Para se criar sub-campos, use macros DFHMDF para criar cada um dos sub-campos. Todas as macros DFHMDF dos sub-campos devem ter o argumento GRPNAME com o mesmo nome, que será usado como identificação do grupo. Somente o primeiro sub-campo pode ter o argumento ATTRB, os outros sub-campos vão usar o ATTRB do primeiro sub-campo. Ex.:
DD | DFHMDF | POS=(5,10), | GRPNAME=DATA,ATTRB=(BRT) |
MM | DFHMDF | POS=(5,13), | GRPNAME=DATA |
AA | DFHMDF | POS=(5,16), | GRPNAME=DATA |