Tuesday 8 October 2024

RECEIVE MAP mapeia os dados de entrada de um terminal para uma área de dados em um programa aplicativo.

Os dados de determinadas unidades lógicas não são mapeados, mas permanecem inalterados. Consulte o guia do subsistema CICS apropriado para ver se isso é verdade para uma unidade lógica específica.

Após um comando RECEIVE MAP, a posição do cursor de entrada é colocada no EIBCPOSN e o identificador de atenção do terminal (AID) colocado no EIBAID.

Para receber dados, você deve especificar a opção INTO ou SET. Se um RECEIVE for emitido exclusivamente para detectar um identificador de atenção (AID), você poderá omitir as opções INTO e SET.

 

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

Condições: EOC, EODS, INVMPSZ, INVPARTN, INVREQ, MAPFAIL, PARTNFAIL, RDATT, UNEXPIN

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(ptr-ref)

especifica o ponteiro que deve ser definido como o endereço do prefixo de 12 bytes para os dados mapeados. O prefixo de 12 bytes é gerado pela opção TIOAPFX = YES nas definições de mapa DFHMDI e DFHMSD BMS (consulte Operandos DFHMDI, TERM e especificando NODDS no operando BMS ).

A referência do ponteiro é válida até o próximo comando de recebimento ou o fim da tarefa.

Se DATALOCATION (QUALQUER) estiver associado ao programa aplicativo, o endereço dos dados poderá estar acima ou abaixo da linha de 16 MB. A área de dados inclui o prefixo de 12 bytes. Verifique se o prefixo de 12 bytes não é substituído, pois isso pode causar uma violação de armazenamento.

Se DATALOCATION (ABAIXO) estiver associado ao programa de aplicativo e os dados residirem acima da linha de 16 MB, os dados serão copiados abaixo da linha de 16 MB e o endereço desta cópia será retornado.

 

Se TASKDATAKEY (USER) for especificado para a tarefa em execução e a proteção de armazenamento estiver ativa, os dados retornados estarão em uma chave de usuário. Se TASKDATAKEY (CICS) for especificado e a proteção de armazenamento estiver ativa, os dados retornados estarão em uma chave do CICS.

Esta opção é uma alternativa ao parâmetro INTO para tratamento dos dados da tela diretamente no bufer do CICS. 

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).
  • FROM(data-area)

 

especifica a área de dados que contém os dados a serem mapeados por um comando RECEIVE MAP. Isso inclui o prefixo de 12 bytes gerado pela opção TIOAPFX = YES nas definições de mapa DFHMDI e DFHMSD BMS (consulte Operandos DFHMDI, TERM e especificando NODDS no operando BMS ).

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(data-value)

especifica o comprimento dos dados a serem formatados como um valor binário de meia palavra. Ele não deve exceder o comprimento da área de dados FROM, mas deve incluir o comprimento do prefixo de 12 bytes gerado pela opção TIOAPFX = YES nas definições de mapa DFHMDI e DFHMSD BMS (consulte Operandos DFHMDI, TERM e especificando NODDS no Operando BMS ).

 

Para obter uma descrição de um limite superior seguro, consulte Opções de COMPRIMENTO nos comandos do CICS .

Usado com o parâmetro FROM, contem o tamanho da área de dados. A variável compr deve ter formato S9(4) COMP.

 

Opções:

ASIS

especifica que caracteres minúsculos no fluxo de dados de entrada 3270 não são traduzidos para maiúsculas; isso permite que a tarefa atual receba uma mensagem contendo dados em maiúsculas e minúsculas.

Esta opção não tem efeito no primeiro comando RECEIVE de uma transação ou se a tela contiver dados antes de uma transação ser iniciada. Por exemplo, se uma transação for iniciada por outra transação e começar recebendo dados originalmente produzidos por essa transação, ela não poderá suprimir a conversão em maiúscula nos dados. Esses dados são lidos e traduzidos em preparação para a próxima tarefa e o primeiro comando RECEIVE nessa tarefa recupera os dados traduzidos.

INPARTN(name)

especifica o nome (1 a 2 caracteres) da partição na qual o operador do terminal deve inserir dados. Se o operador do terminal digitar dados em alguma outra partição, a partição INPARTN será ativada, o teclado será desbloqueado para a partição e uma mensagem de erro será exibida em qualquer partição de mensagem de erro. Esta opção é ignorada se o terminal não suportar partições ou se não houver uma partição de aplicativo definida.

INTO(data-area)

especifica a área de dados na qual os dados mapeados devem ser gravados. Se esse campo não for especificado, o nome padrão será o nome do mapa com o sufixo I.

Nome da área da working-storage para receber os dados da tela. (<mapa>I).

MAP(name)

especifica o nome (1 a 7 caracteres) do mapa a ser usado.

Informa o nome da tela a ser enviada (definido pela macro DFHMDI). 

MAPSET (name)

especifica o nome não substituído (1 a 7 caracteres) do conjunto de mapas a ser usado. O conjunto de mapas deve residir na biblioteca de programas do CICS. O conjunto de mapas pode ser definido usando o RDO ou a instalação automática do programa quando o conjunto de mapas é usado pela primeira vez. Se essa opção não for especificada, o nome fornecido na opção MAP é assumido como sendo o do conjunto de mapas.

Informa o nome do MAPSET (definido pela macro DFHMSD).

 

TERMINAL

especifica que os dados de entrada devem ser lidos no terminal que originou a transação.

 

Condições:

Algumas das seguintes condições podem ocorrer em combinação. Se mais de um ocorrer, apenas o primeiro será passado para o programa aplicativo.

EIBRCODE, no entanto, está configurado para indicar todas as condições que ocorreram.

06 EOC

ocorre se a unidade de solicitação / resposta (RU) for recebida com o conjunto de indicadores de fim de cadeia (EOC). Aplica-se apenas a unidades lógicas.

Ação padrão: ignore a condição.

05 EODS

ocorre se nenhum dado for recebido (apenas um FMH). Aplica-se apenas às LUs de lote 3770 e às LUs de troca de dados em lote 3770 e 3790.

Ação padrão: finalize a tarefa de forma anormal.

38 INVMPSZ

ocorre se o mapa especificado for muito amplo ou muito longo para o terminal.

Ação padrão: finalize a tarefa de forma anormal.

65 INVPARTN

ocorre se a partição especificada não estiver definida no conjunto de partições associado ao programa de aplicativo.

Ação padrão: finalize a tarefa de forma anormal.

16 INVREQ

ocorre se um comando RECEIVE MAP for emitido em uma tarefa não-terminal; essas tarefas não possuem um TIOA ou um TCTTE.

Ação padrão: finalize a tarefa de forma anormal.

36 MAPFAIL

ocorre se os dados a serem mapeados tiverem um comprimento igual a zero ou não contiver uma sequência de conjunto de buffer-endereço (SBA). Aplica-se apenas a dispositivos 3270. A área de dados de recebimento contém o fluxo de dados de entrada não mapeado. A quantidade de dados não mapeados movidos para a área do usuário é limitada ao comprimento especificado na opção COMPRIMENTO. O mapa de entrada não está definido como nulo.

Essa condição também surge se um programa emite um comando RECEIVE MAP ao qual o operador do terminal responde pressionando uma tecla CLEAR ou PA, ou pressionando ENTER ou uma tecla de função sem inserir dados.

Ação padrão: finalize a tarefa de forma anormal.

66 PARTNFAIL

ocorre se o operador do terminal tentar inserir dados mais de três vezes em uma partição diferente daquela especificada pela opção INPARTN.

Ação padrão: finalize a tarefa de forma anormal.

02 RDATT

ocorre se um comando RECEIVE MAP for encerrado pelo operador usando a tecla ATTN em vez da tecla RETURN. Aplica-se apenas ao 2741 Communications Terminal e apenas se o suporte à atenção de leitura 2741 tiver sido gerado para o CICS.

Ação padrão: ignore a condição.

49 UNEXPIN

ocorre quando dados inesperados ou não reconhecidos são recebidos. Isso se aplica apenas aos terminais de intercâmbio de dados em lote.

Ação padrão: finalize a tarefa de forma anormal.