Quarta, Dezembro 13, 2017

O comando EXEC CICS RECEIVE MAP lê a tela enviada pelo terminal. 

A sintaxe básica deste comando é:

       EXEC CICS RECEIVE

          MAP(nome-do-mapa)

          MAPSET(nome-do-mapset)

          INTO(area)

       END-EXEC.

Parâmetros pouco usados do comando:

  • SET(pointer)
  • FROM (area)
  • LENGTH(compr)

Descrição dos parâmetros:

MAP(nome) Informa o nome da tela a ser enviada (definido pela macro DFHMDI).
MAPSET(nome) Informa o nome do MAPSET (definido pela macro DFHMSD).
INTO(area) Nome da área da working-storage para receber os dados da tela. (<mapa>I).
SET(pointer) Esta opção é uma alternativa ao parâmetro INTO para tratamento dos dados da tela diretamente no bufer do CICS. Veja observações abaixo.
FROM(area) Este parâmetro aponta para uma área contendo os dados da tela que serão mapeados, quando estes dados não estão na tabela TCT.
LENGTH(compr) Usado com o parâmetro FROM, contem o tamanho da área de dados. A variável compr deve ter formato S9(4) COMP.

Argumento SET(pointer).

É usado para se acessar os dados da tela diretamente no bufer do CICS. Para isso é necessário definir a área copy gerada pelo mapa BMS na LINKAGE SECTION do programa Cobol. O comando EXEC CICS RECEIVE deve endereçar esta área como no exemplo abaixo:

    LINKAGE SECTION.

    COPY ´TELA´.

1 TELAI.

2 ....................

    PROCEDURE DIVISION.

         EXEC CICS RECEIVE MAP(..................

             SET(ADDRESS OF TELAI)

         END-EXEC.

 

Erros do comando(HANDLE CONDITION)

MAPFAIL Ocorre quando a tela lida não está formatada (não tem campos com atributos).

O comando EXEC CICS SEND MAP envia a tela para o terminal. 

Existem 2 formas basicas para este comando: A primeira é usada no inicio do processamento para enviar para o terminal a mascara da tela, com seus literais e atributos. A segunda forma é usada nos envios subsequentes para alimentar dados variaveis sobre a tela já formatada.

A sintaxe basica do primeiro SEND da tela é:

     EXEC CICS SEND

          MAP(nome-do-mapa)

          MAPSET(nome-do-mapset)

          MAPONLY

          ERASE

          CURSOR(valor)

 

     END-EXEC.

 

A sintaxe basica para os comandos SEND posteriores, para enviar dados variaveis é:

    EXEC CICS SEND

          MAP(nome-do-mapa)

          MAPSET(nome-do-mapset)

          DATAONLY

          FROM(area-da-working)

          CURSOR(valor)

    END-EXEC.

Omitindo-se nos comandos as palavras MAPONLY e DATAONLY, o efeito será cumulativo dos dois formatos.

Parâmetros do comando SEND pouco usados:

  • LENGTH(compr)
  • ERASEAUP
  • FREEKB
  • ALARM
  • FRSET

Descrição dos parâmetros do comando SEND MAP:

MAP(mapa) Informa o nome da tela a ser enviada (definido pela macro DFHMDI).
MAPSET(mapset) Informa o nome do MAPSET (definido pela macro DFHMSD).
MAPONLY Será enviado para a tela somente o mapa físico, definido pelas macros DFHMDF. Dados variáveis (working-storage do Cobol) não serão enviados para a tela.
DATAONLY Serão enviados para a tela somente os dados variáveis (working-storage do Cobol). 
FROM(area) Informa o nome da área da working-storage de onde os dados serão enviados para a tela (<mapa>O). Esta opção não pode ser usada com a opção MAPONLY.
ERASE A tela será limpa antes da montagem do novo mapa.
CURSOR(valor) Informa a posição em que deve ser colocado o cursor na tela. Veja comentários abaixo.
LENGTH(compr) Usado com o parâmetro FROM, informa o tamanho da área de dados da tela. compr deve ter formato S9(4) COMP.
ERASEAUP (Erase All Unprotected). Todos os campos desprotegidos da tela serão limpos antes da montagem da nova tela.
FREEKB O teclado será desbloqueado após o envio da tela. Sem este parâmetro o teclado permanecerá bloqueado, e o operador não poderá usa-lo.
ALARM Parâmetro para soar o alarme do teclado após o recebimento da tela.
FRSET Todos os atributos MDT da tela serão desligados.

Posicionamento do CURSOR.

Existem 2 maneiras de posicionamento do cursor nos mapa BMS: posicionamento físico e posicionamento lógico.

No posicionamento físico é usado o parâmetro CURSOR do comando EXEC CICS SEND. Este parâmetro informa diretamente a posição do cursor pela posição do bufer da tela, que é um valor entre 0 e 1919 para telas de 24 linhas e 80 colunas. Este valor pode ser dado por um literal fixo, ou por um campo com formato S9(4) COMP.

Exemplo de posicionamento físico fixo na linha 11 coluna 16:

       EXEC CICS SEND MAP(...............

              CURSOR(815)

       END-EXEC.

 

Exemplo de posicionamento físico variável na linha 11 coluna 16:

       WORKINK-STORAGE SECTION.

       77  POSCURSOR      PIC S9(4) COMP.

       ...........................

       PROCEDURE DIVISION.

       ...........................

           MOVE 815 TO POSCURSOR.

       ...........................

           EXEC CICS SEND MAP(..............................

               CURSOR(POSCURSOR)

           END-EXEC.

No posicionamento lógico usamos o nome do campo definido no mapa, movendo o valor –1 para o campo <nome>L da area da tela. Neste caso o parametro CURSOR do comando EXEC CICS SEND é usado sem o argumento valor.

Exemplo: Colocar o valor no campo CODCLI da tela.

           MOVE –1 TO CODCLIL

           EXEC CICS SEND MAP(.........................

                 CURSOR

           END-EXEC.

Erros do comando (HANDLE CONDITION).

As opções de HANDLE CONDITION do comando EXEC CICS SEND MAP não se aplicam para os formatos estudados neste curso.

A sintaxe desta macro é

 

Mapa DFHMDI argumentos

Mapa (Na coluna 1) é o nome da tela. Este nome será usado nos programas para leitura e gravação da tela. 

Os argumentos da macro DFHMDI podem ser:

SIZE=(linhas,colunas),

Define o tamanho da tela em numero de linhas e colunas.

SIZE=(linhas, Total de linhas da tela.
colunas), Total de colunas da tela.

CTRL=(PRINT,length,FREEKB,ALARM,FRSET), 

Identico a macro DFHMSD. Se usado na macro DFHMDI ele substitui (Overrides) os mesmos argumentos da DFHMSD.

CTRL=(PRINT,length,FREEKB,ALARM,FRSET) Idem macro DFHMSD

Os argumentos seguintes são de uso pouco frequente. Servem para se desenhar varias telas sobre o terminal:

LINE=posição,

Indica a linha do terminal onde deve ser posicionada esta tela. Posição pode ser um dos 3 valores:

  • Numero – Um literal numérico indica a posição absoluta da linha.
  • NEXT – A tela deve ser colocada na próxima linha disponível.
  • SAME – A tela que a tela deve ser colocada na mesma linha da tela anterior.

COLUNN=posição,

Indica a coluna do terminal onde deve ser posicionada a tela. Posição pode ser qualquer dos valores descritos em LINE.

FIELDS=NO,

Informa que esta tela não tem campos.

 

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

A sintaxe desta macro é

 

Label DFHMSD argumentos

O Label desta macro define o nome do mapset. Ele deverá ser usado nos programas dentro dos comandos de leitura e gravação da tela.

Os argumentos do comando devem ser separados por virgula e podem ser:

TYPE=tipo,

Este deve ser o primeiro argumento da macro. Tipo pode ser DSECT ou MAP.

TYPE=DSECT, Indica que deve ser gerada uma area copy para ser inserida nos programas Cobol.
TYPE=MAP, Indica que deve ser gerado um modulo objeto do mapset, com o nome do label da macro, para uso do Cics.

MODE=mode,

MODE=IN, As telas serão de INPUT (entrada de dados).
MODE=OUT, As telas serão de OUTPUT (saída de dados).
MODE=INOUT, As telas serão de INPUT e OUTPUT.

 

LANG=linguagem,

LANG=ASM, a linguagem do programa Cics é Assembler.
LANG=COBOL, a linguagem do programa Cics é Cobol.

STORAGE=AUTO,

STORAGE=AUTO, As áreas de INPUT e OUTPUT das telas usarão a mesma área de memória (serão geradas com a clausula REDEFINES).

CTRL=(PRINT,length,FREEKB,ALARM,FRSET),

Este argumento define varias características do terminal para onde a tela deve ser enviada. Todas estas características são opcionais, e são descritas abaixo.

CTRL=(PRINT, O terminal é uma impressora remota.
length, Quando o terminal for impressora, contem o comprimento da linha podendo ser: L40, L64, L80 ou HONEOM. (HONEOM indica um comprimento padrão definido no Cics).
FREEKB, Libera automaticamente o teclado quando uma tela é enviada ao terminal. No sistema 3270 os teclados ficam bloqueados enquanto a tela esta sendo tratada pelo Cics.
ALARM, Aciona o alarme do terminal no envio da tela.
FRSET), Muda as tags MDT de todos os atributos dos campos desprotegidos para OFF antes de enviar a tela para o terminal.

 

TIOAPFX=YES,

Este argumento deve ser usado sempre quando o programa Cics for escrito em Command Level. 

TIOAPFX=YES, Cria um campo FILLER de 12 posições no inicio da área copy da tela (usado internamente pelo Cics).

TYPE=FINAL

TYPE=FINAL Esta deve ser a ultima linha de um mapa BMS.

 

Vagas

Em breve estaremos divulgando vagas de COBOL/CICS/DB2

Camisetas