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(data-value)
especifica o comprimento dos dados a serem formatados como um valor binário de meia palavra.
Se a área de dados que envia o mapa for maior que os dados a serem mapeados, LENGTH deverá ser especificado. Isso 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 DFHMDI e especificando NODDS no operando BMS ).
Usado com o parâmetro FROM, informa o tamanho da área de dados da tela. compr deve ter formato S9(4) COMP.
- ERASEAUP
especifica que, antes que esta página de saída seja exibida, todos os locais de caracteres não protegidos na partição ou em toda a tela devem ser apagados. (Esta opção se aplica apenas aos 3270 e 8775.)
- FREEKB
especifica que o teclado 3270 deve ser desbloqueado após a gravação dos dados. Se o FREEKB for omitido, o teclado permanecerá bloqueado.
Observe que o status de bloqueio do teclado é mantido separadamente para cada partição em um terminal que suporta partições.
Ao usar a opção FREEKB, consulte as opções DFHMDI, CTRL, para obter uma descrição da prioridade da opção.
(Erase All Unprotected). Todos os campos desprotegidos da tela serão limpos antes da montagem da nova tela.
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
especifica que o recurso de alarme sonoro 3270 deve ser ativado. Para unidades lógicas que suportam FMHs (exceto unidades lógicas interativas e em lote), o ALARM instrui o BMS a definir o sinalizador de alarme no FMH.
Ao usar a opção ALARM, consulte DFHMDI para obter uma descrição da prioridade da opção.
Parâmetro para soar o alarme do teclado após o recebimento da tela.
- FRSET
especifica que as MDTs (Modified Data Tags) de todos os campos atualmente no buffer 3270 (ou partição) devem ser redefinidas para a condição não modificada (ou seja, redefinição de campo) antes que qualquer dado do mapa seja gravado no buffer.
Isso permite que o operando ATTRB do DFHMDF para o mapa solicitado controle o status final dos campos gravados ou reescritos em resposta a um comando BMS, se nenhuma outra informação de atributo tiver sido gravada no mapa simbólico.
Ao usar a opção FRSET, consulte DFHMDI para obter uma descrição da prioridade da opção.
Todos os atributos MDT da tela serão desligados.
Descrição dos parâmetros do comando SEND MAP:
SEND MAP envia dados de saída para um terminal.
Ao usar o comando SEND MAP com qualquer uma das opções ALARM, FREEKB, FRSET, HONEOM, L40, L64, L80 ou PRINT, consulte DFHMDI para obter uma descrição da prioridade da opção.
Opções:
ACCUM
especifica que esse comando é um dos vários comandos usados para criar uma mensagem lógica. A mensagem lógica é concluída por um comando SEND PAGE ou excluída por um comando PURGE MESSAGE.
ACTPARTN (nome)
especifica o nome (1 a 2 caracteres) da partição a ser ativada. A ativação de uma partição move o cursor para a partição especificada e desbloqueia o teclado da partição especificada.
Esta opção será ignorada se o terminal de destino não suportar partições ou se não houver uma partição de aplicativo definida.
ALTERNATE
define o terminal para usar o tamanho da tela ALTERNATIVO.
CURSOR(data-value)
especifica o local para o qual o cursor 3270 ou 3604 deve ser retornado após a conclusão de um comando SEND MAP.
O valor dos dados deve ser um valor binário de meia palavra que especifica a posição do cursor em relação a zero; o intervalo de valores que pode ser especificado depende do tamanho da tela que está sendo usada. Se nenhum valor de dados for especificado, o posicionamento simbólico do cursor será assumido.
Esta opção substitui qualquer opção de IC do operando ATTRB do DFHMDF. Se ACCUM estiver sendo usado, o valor mais recente de CURSOR especificado será usado para posicionar o cursor.
O valor especificado na opção CURSOR deve ser positivo. Um valor negativo leva a resultados imprevisíveis.
Informa a posição em que deve ser colocado o cursor na tela.
Existem 2 maneiras de posicionamento do cursor nos mapa BMS: posicionamento físico e posicionamento lógico.Posicionamento do CURSOR.
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.
DATAONLY
especifica que apenas os dados do programa aplicativo devem ser gravados. Os caracteres do atributo (somente 3270) devem ser especificados para cada campo nos dados fornecidos. Se o byte de atributo nos dados fornecidos pelo usuário estiver definido como X'00 ' , o byte de atributo na tela permanecerá inalterado. Quaisquer dados ou atributos padrão do mapa são ignorados. Serão enviados para a tela somente os dados variáveis (working-storage do Cobol).
DEFAULT
define o terminal para usar o tamanho da tela DEFAULT.
ERASE
especifica que o buffer ou partição da impressora de tela deve ser apagada e o cursor retornado ao canto superior esquerdo da tela. (Esta opção se aplica apenas ao 3270 ou 8775 e ao 3604 Keyboard Display.)
A primeira operação de saída em qualquer transação, ou em uma série de transações pseudo-conversacionais, deve sempre especificar ERASE. Para transações conectadas a telas ou impressoras 3270, a menos que sejam explicitamente substituídas pela opção DEFAULT ou ALTERNATE, isso também garante que o tamanho de tela correto seja selecionado, conforme definido para a transação pela opção SCRNSIZE na definição de RDO PROFILE.
A tela será limpa antes da montagem do novo mapa.
FMHPARM(name)
especifica o nome (1 a 8 caracteres) do mapa externo a ser usado. (Esta opção se aplica apenas a 3650 unidades lógicas com formatação externa.)
FORMFEED
especifica que uma nova página é necessária. Para impressoras e monitores 3270, o caractere FORMFEED é posicionado no início do buffer. O programa de aplicativo deve garantir que essa posição do buffer não seja substituída pelos dados de mapa ou texto. Será ignorado se o terminal de destino não suportar FORMFEED (ou seja, a opção RDO TYPETERM FORMFEED não foi usada).
FROM(data-area)
especifica a área de dados que contém os dados a serem processados. Se esse campo não for especificado, o nome padrão será o nome do mapa com o sufixo O. Isso inclui o prefixo de 12 bytes gerado pela opção TIOAPFX = YES nas definições de mapa DFHMDI e DFHMSD BMS (consulte DFHMDI e especificando NODDS em o operando BMS ). 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.
HONEOM
especifica que o comprimento da linha da impressora padrão deve ser usado. Esse comprimento deve ser o mesmo que o especificado usando as opções RDO TYPETERM PAGESIZE ou ALTPAGE e o mesmo que a largura do cilindro da impressora; caso contrário, os dados podem não ser formatados corretamente.
Ao usar a opção HONEOM, consulte DFHMDI para obter uma descrição da prioridade da opção.
LAST
especifica que esta é a última operação de saída para uma transação e, portanto, o fim de um colchete. Esta opção se aplica apenas a unidades lógicas.
LDC (nome)
especifica um mnemônico de 2 caracteres a ser usado para determinar o código do dispositivo lógico (LDC) a ser transmitido no FMH para a unidade lógica. O mnemônico identifica uma entrada LDC definida por uma macro DFHTCT TYPE = LDC.
Quando um LDC é especificado, o BMS usa o tipo de dispositivo, o tamanho da página e o status da página associado ao mnemônico do LDC para formatar a mensagem. Esses valores são obtidos da tabela LDC local estendida para a unidade lógica, se houver uma. Se a unidade lógica tiver apenas uma tabela LDC local (não estendida), os valores serão obtidos da tabela LDC do sistema. O valor numérico do LDC é obtido da tabela LDC local, a menos que seja uma tabela não estendida e o valor não seja especificado; nesse caso, é retirado da tabela do sistema.
Se a opção LDC for omitida, o mnemônico LDC especificado na macro DFHMSD será usado; veja DFHMSD . Se a opção LDC também tiver sido omitida da macro DFHMSD, a ação dependerá do tipo de unidade lógica, da seguinte maneira:
3601 logical unit
A primeira entrada na tabela LDC local local ou estendida é usada, se houver uma. Se um padrão não puder ser obtido dessa maneira, um valor numérico LDC nulo ( X'00 ' ) será usado. O tamanho da página usado é o valor especificado nas opções RDO TYPETERM PAGESIZE ou ALTPAGE, ou (1,40) se esse valor não for especificado.
Unidade lógica LUTYPE4, unidade lógica em lote ou unidade lógica de intercâmbio de dados em lote
A tabela LDC local não é usada para fornecer um LDC padrão; em vez disso, a mensagem é direcionada ao console da unidade lógica (ou seja, a qualquer mídia que a unidade lógica opte por receber essas mensagens). Para uma unidade lógica de intercâmbio de dados em lote, isso não implica o envio de um LDC em um FMH. O tamanho da página é obtido da maneira descrita para a unidade lógica 3601.
L40, L64, or L80
especifica o comprimento da linha para uma impressora 3270; um retorno da transportadora e um avanço de linha são forçados após a impressão de 40, 64 ou 80 caracteres em uma linha. É provável que resultados inaceitáveis sejam diferentes da largura da página especificada pelas opções RDO TYPETERM PAGESIZE ou ALTPAGE.
Ao usar as opções, consulte DFHMDI para obter uma descrição da prioridade da opção.
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).
MAPONLY
especifica que apenas os dados padrão do mapa devem ser gravados. 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.
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 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).
O número de mapas por conjunto de mapas é limitado a um máximo de 9.998.
MSR(data-value)
especifica o valor de dados de 4 bytes que controla o leitor de tarja magnética 10/63 conectado a um terminal 8775 ou 3643. Um conjunto de constantes é fornecido no DFHMSRCA para ajudar na configuração dessa área de 4 bytes. Consulte constantes do valor de controle do leitor de slot magnético (MSR), DFHMSRCA para obter uma lista completa. Esta opção será ignorada se a opção RDO TYPETERM MSRCONTROL não tiver sido usada.
NLEOM
especifica que os dados de uma impressora 3270 ou de um monitor 3275 com o recurso de adaptador de impressora devem ser construídos com espaços em branco e caracteres de nova linha (NL) e que um caractere de fim de mensagem (EM) deve ser colocado no final do dados. À medida que os dados são impressos, cada caractere NL faz com que a impressão continue na próxima linha e o caractere EM termina a impressão.
Esta opção deve ser especificada no primeiro comando SEND MAP usado para criar uma mensagem lógica. A opção será ignorada se o dispositivo que receber a mensagem (direta ou roteada) não for um dos mencionados acima.
Se essa opção for usada, a atualização do buffer e a modificação de atributos dos campos gravados anteriormente no buffer não serão permitidas. O CICS inclui a opção ERASE com todas as gravações no terminal.
O caractere NL ocupa uma posição de buffer. Várias posições de buffer, equivalentes ao valor das opções RDO TYPETERM PAGESIZE ou ALTPAGE, para esse terminal, estão indisponíveis para dados. Isso pode causar a quebra de dados no buffer; se isso ocorrer, o valor PAGESIZE ou ALTPAGE deve ser reduzido.
A opção NLEOM substitui a opção ALARM se a última estiver presente.
NOFLUSH
especifica que o CICS não limpa as páginas na conclusão, mas retorna o controle para o programa (tendo definido a condição OVERFLOW no EIBRESP).
OUTPARTN(name)
especifica o nome (1 a 2 caracteres) da partição para a qual os dados devem ser enviados. Esta opção será ignorada se o terminal não suportar partições ou se não houver uma partição de aplicativo definida associada ao terminal. Se houver uma partição de aplicativo configurada e a opção OUTPARTN for omitida, os dados serão enviados para a partição nomeada pelo operando PARTN das definições de mapa DFHMSD ou DFHMDI. Se mapas não forem utilizados ou se não houver operando PARTN, a saída será enviada para a primeira partição no conjunto de partições.
PAGING
especifica que os dados de saída não devem ser enviados imediatamente para o terminal, mas devem ser colocados em armazenamento temporário e exibidos em resposta aos comandos de paginação inseridos pelo operador do terminal.
Se PAGING for especificado com um prefixo REQID usado para filas de armazenamento temporário definidas como recuperáveis, o CICS fornecerá recuperação de mensagens para mensagens lógicas se a tarefa atingir um ponto de sincronização.
especifica que uma operação de impressão deve ser iniciada em uma impressora 3270 ou 3275 com o recurso de adaptador de impressora ou que os dados em um LUTYPE2 (3274/76 ou 3790) devem ser impressos em uma impressora alocada pelo controlador. Se essa opção for omitida, os dados serão enviados para o buffer da impressora, mas não serão impressos.
Ao usar a opção PRINT, consulte DFHMDI para obter uma descrição da prioridade da opção.
REQID(name)
especifica um prefixo de 2 caracteres a ser usado como parte de um identificador de armazenamento temporário para recuperação de mensagens do CICS. Somente um prefixo pode ser especificado para cada mensagem lógica. O prefixo padrão é **.
A recuperação de mensagens BMS é fornecida para uma mensagem lógica apenas se a opção PAGING for especificada nos comandos BMS SEND e se o ponto de sincronização tiver sido atingido.
SET(ptr-ref)
especifica o ponteiro a ser definido como o endereço dos dados de entrada ou saída.
A opção SET especifica que as páginas concluídas devem ser retornadas ao programa aplicativo. O ponteiro está definido como o endereço de uma lista de páginas concluídas.
O programa aplicativo recupera o controle imediatamente após o comando SEND MAP (se a página atual ainda não estiver concluída) ou no rótulo especificado em um comando HANDLE CONDITION RETPAGE, se a página tiver sido concluída.
Se TIOAPFX = YES for especificado na definição do mapa, o ponteiro retornado conterá o endereço do prefixo TIOA. Os dados do usuário iniciam no deslocamento X'0C ' desde o início do prefixo TIOA.
TERMINAL
especifica que os dados de saída devem ser enviados para o terminal que originou a transação.
WAIT
especifica que o controle não deve ser retornado ao programa aplicativo até que a operação de saída seja concluída.
Se WAIT não for especificado, o controle retornará ao programa aplicativo quando a operação de saída for iniciada. Um comando subsequente de entrada ou saída (controle de terminal, BMS ou intercâmbio de dados em lote) faz com que o programa aplicativo aguarde até que o comando anterior seja concluído.
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.
57 IGREQCD
ocorre quando é feita uma tentativa de executar um comando SEND MAP depois que um comando de controle de fluxo de dados SIGNAL com um código RCD (Request Change Direction) foi recebido de uma unidade lógica LUTYPE4.
Ação padrão: finalize a tarefa de forma anormal.
39 IGREQID
ocorre se o prefixo especificado na opção REQID for diferente daquele estabelecido por uma opção REQID anterior ou por padrão para esta mensagem lógica -REQID (**).
Ação padrão: finalize a tarefa de forma anormal.
41 INVLDC
ocorre se o mnemônico LDC especificado não estiver incluído na lista LDC da unidade lógica.
Ação padrão: finalize a tarefa de forma anormal.
38 INVMPSZ
ocorre se o mapa especificado for muito largo para o terminal ou se um comando HANDLE CONDITION OVERFLOW estiver ativo e o mapa especificado for 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
Valores RESP2:
200
Comando não permitido para um programa de servidor de link de programa distribuído.
também ocorre (RESP2 não definido) em qualquer uma das seguintes situações:
- Os dados de texto são enviados para a mesma partição ou LDC que os dados mapeados enquanto uma mensagem lógica do BMS está ativa. Se nem partições nem LDCs estiverem em uso, os dados de texto serão enviados para a mesma mensagem lógica que os dados mapeados.
- Um comando SEND MAP separado com a opção ACCUM é emitido para o terminal que originou a transação enquanto uma mensagem lógica roteada está sendo construída.
- Um comando SEND MAP é emitido para um mapa sem especificações de campo, especificando a opção FROM sem a opção DATAONLY.
- Durante o processamento do estouro, os dados são enviados para um LDC diferente do LDC que causou o estouro da página.
- Partições estão em uso, a opção OUTPARTN não foi codificada no comando SEND MAP, mas o operando PARTN foi codificado na definição do conjunto de mapas. Se a condição surgir, sugere que versões diferentes do conjunto de mapas têm valores de PARTN diferentes e que o sufixo deduzido para a partição não é o mesmo que o sufixo do conjunto de mapas carregado.
- Um comando SEND MAP com a opção DATAONLY é emitido com uma área de dados, fornecida pelo usuário, que fica acima da linha de 16 MB. Mas o comprimento dessa área de dados não é maior que o prefixo TIOA.
Ação padrão: finalize a tarefa de forma anormal.
40 OVERFLOW
ocorre se os dados mapeados não couberem na página atual. Essa condição é gerada apenas se um comando HANDLE CONDITION OVERFLOW estiver ativo.
Ação padrão: ignore a condição.
32 RETPAGE
ocorre se a opção SET for especificada e uma página concluída estiver pronta para retornar ao programa aplicativo.
Ação padrão: retorne o controle para o programa de aplicativo no ponto imediatamente após o comando BMS SEND MAP.
35 TSIOERR
ocorre se houver um erro irrecuperável de entrada / saída de armazenamento temporário.
Ação padrão: finalize a tarefa de forma anormal.
03 WRBRK
ocorre se um comando SEND MAP for interrompido pelo operador do terminal pressionando a tecla ATTN. Aplica-se apenas ao Terminal de Comunicação 2741 e somente se a interrupção de gravação for suportada para o CICS.
Ação padrão: ignore a condição.