Auxílios do VisualAge Generator

Instrução CALL

CALL transfere o controle para outro programa ou programa não-VisualAge Generator. Quando o programa chamado ou programa termina, a função em curso continua com a instrução que vem depois de CALL.

>>-CALL----+-nome--------------+-------------------------------->
           '-Rotina de serviço-'
 
      .-,---------------------------------------------.
      V                                               |
>---------+-literal de caractere, misto ou DBCS----+--+--------->
          +-registro-------------------------------+
          +-mapa-----------------------------------+
          +-item de dados--------------------------+
          +-estrutura de armazenamento de trabalho-+
          +-EZEDLPSB-------------------------------+
          '-EZEDLPCB-------------------------------'
 
>-----+----------------------------------+--;------------------><
      |    .-,------------------------.  |
      |    V                          |  |
      '-(-----NOMAPS--NONCSP--REPLY---+--'
 

Atributo Descrição
nome Nome de um programa VisualAge Generator chamado ou nome de programa não-VisualAge Generator.

Outras informações sobre como chamar programas não-VisualAge Generator podem ser encontradas na seção sobre transferência do controle do programa no manual VisualAge Generator Client/Server Communications Guide.

Rotina de serviço Rotinas de serviço: AUDIT, COMMIT, CREATX, CSPTDLI ou RESET
argumento Literal de caractere, misto ou DBCS, registro, mapa, item de dados, estrutura de armazenamento de trabalho, EZEDLPSB, or EZEDLPCB. Nomes de argumento podem ser qualificados e/ou subscritos.

Se o armazenamento de trabalho for passado, os itens de nível-77 de dentro dele só serão passados se forem incluídos explicitamente na lista de argumentos.

O número máximo de argumentos suportados é 30. Os argumentos especificados devem corresponder aos parâmetros definidos para o programa chamado.

opção Nas partes lógicas usadas dentro de uma GUI cliente, a NOMAPS de instrução CALL é ignorada.

A opção pode ser uma destas ou todas elas:

NOMAPS
Use NOMAPS em instruções CALL de programas de transação principal ou chamados para indicar que o programa chamado ou programa não usa a tela. Mapas exibidos antes da instrução CALL não precisam ser atualizados. Quando não se especifica NOMAPS, a tela é atualizada no momento que o controle é retornado ao programa responsável pela chamada.

Se o programa converte mapa de tela inteira depois de CALL, use a opção NOMAPS mesmo se o programa chamado puder ter usado a tela. Assim fica impedida a atualização da tela antes da saída de um mapa que cobre completamente o mapa anterior.

Nota:Embora essa recomendação se aplique a chamadas a programas VisualAge Generator, ela também pode ser feita para chamadas a programas não-VisualAge Generator, contanto que o programa que chama não CONVERSE o mesmo mapa de tela inteira antes e depois da chamada.

REPLY
Indica o status da chamada pela definição de um código de retorno em EZERT8. REPLY torna-se efetivo com qualquer rotina de serviço nos ambientes CICS com chamadas a programas do servidor remoto.
Nota:Nos ambientes IMS, a opção REPLY só funciona quando usada com CREATX.

O código de retorno indica porque o serviço ou chamada remota não foi iniciada e está disponível na palavra de função especial EZERT8 como a forma exibível de 8 caracteres do código de retorno.

REPLY não pode ser usada para testar o código de retorno do programa a partir do programa chamado. Os códigos de retorno do programa devem ser passados de volta por meio de um parâmetro.

Se REPLY não tiver sido especificado ou não estiver em vigor e for detectado um erro no serviço, o programa que chama será terminado com uma mensagem de erro que explica o motivo do término e exibe o código de retorno.

Término para clientes da GUI significa que a saída de depuração foi gerada.

opção (continuação)

NONCSP
Indica que o programa de destino é não-VisualAge Generator.

Quando usada com a instrução CALL, a opção NONCSP afeta a passagem de parâmetros para programas CICS definidos com ligação REMOTE ou DYNAMIC na tabela de ligação. Pode ser usada para aumentar o desempenho no dispositivo de teste, já que indica que o programa chamado ou programa não vai ser executado a partir de MSL.

Pode-se também definir as características do programa chamado na tabela de ligação como alternativa para codificar a opção NONCSP em cada CALL. Leia VisualAge Generator Client/Server Communications Guide para ter mais informações a esse respeito.


Considerações sobre Definição para CALL

Sempre que são passados dados para outro programa, a modificação dos dados pelo programa chamado ou programa modifica efetivamente o armazenamento do programa que faz a chamada. Chamadas recursivas (A chama A; ou A chama B, que chama A) não são suportadas, a não ser com programas gerados C++.

O tipo de ligação usado em CALL e o formato dos parâmetros passados durante a geração ou a execução do teste varia em cada sistema. A ligação padrão para programas gerados é descrita em "Ambientes de Destino para CALL".

Pode-se usar a tabela de ligação para solicitar que outros tipos de ligação sejam gerados para chamadas a programas específicos. Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre transferência do controle do programa, sobre a preparação de programas para geração e para obter mais informações sobre a tabela de ligação.

Chamadas a programas batch chamados remotamente

Na geração do programa, use a tabela de ligação para especificar que CALL é uma chamada a um programa batch chamado remotamente (programa batch chamado gerado para receber CALLs a partir de um sistema remoto).

A tabela de ligação descreve o tipo de ligação a ser gerado tanto para programas chamados quanto para programas que fazem a chamada e inclui o modo como a localização do programa chamado é identificada e que tipo de conversão de formato de dados precisa ser efetuada na chamada.

Os argumentos de entrada e saída de uma chamada remota são passados e retornados por valor, não por ponteiro. Os argumentos que se superpõem na memória (mesmo argumento passado mais do que uma vez ou definições múltiplas do mesmo registro) não podem ser passados em chamada remota. O número total de bytes das estruturas de dados definidas para os argumentos tem que ser menor que 32567 bytes.

A opção REPLY permite a continuação com código de erro do sistema diferente de zero a partir da função CALL remota. O código de retorno fica disponível para o programa em EZERT8 se REPLY for especificado.

Consulte a seção sobre implementação de processamento cliente/servidor usando a instrução CALL em VisualAge Generator Client/Server Communications Guide para saber mais sobre como usar a instrução CALL para chamar programas em sistemas remotos.

Ambientes de Destino para CALL

Todo item de registro (não apenas item de nível 77) pode ser argumento de função de cadeia. Para outras chamadas, um argumento do item deve ter um item de nível 77.

Ambiente Considerações de Compatibilidade
VM CMS Quando a ligação padrão é usada, é implementada uma CALL como CALL COBOL dinâmica. O Registro 1 aponta para a lista de parâmetros. O código de retorno definido no Registro 15 pelo programa chamado não é passado de volta ao programa que faz a chamada.

Chamar programa remoto não é tarefa suportada.

Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre transferência do controle do programa.

VM batch Igual a VM CMS.
CICS para MVS/ESA Quando se usa ligação padrão em ambientes CICS, é implementada uma CALL por meio de um LINK CICS. O parâmetro list é passado em CICS COMMAREA. O código de retorno definido no registro 15 pelo programa chamado não é passado de volta ao programa que fez a chamada.

Ao usar a convenção de ligação de COMMDATA num sistema CICS/ESA, o comprimento de COMMAREA máximo (total de bytes de todos os parâmetros passados) é 32763. O comprimento máximo de COMMAREA é de 32763 para uma chamada a um programa remoto.

Chamar programa remoto é suportado apenas no CICS/ESA Versão 3 Release 3 ou em sistemas mais recentes. Se EZELOC for usada para especificar o sistema de destino de uma CALL remota, o programa gerado não vai pré-compilar corretamente em sistemas mais antigos.

Chamar programa batch chamado remoto executado no mesmo sistema é suportado, permitindo que programas de sistemas de host e programas de estações de trabalho compartilhem o mesmo programa chamado executado no host.

Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre transferência do controle do programa.

MVS/TSO Quando se chama um programa não-VisualAge Generator, o OS LINK é usado. Do contrário, é como VM CMS.
MVS batch Igual a MVS/TSO.
IMS/VS Se o programa inicial for transação principal, não será suportada CALL ao programa batch que acessa o PCB do E/S como arquivo serial.

Quando a ligação padrão é usada, é implementada uma CALL como CALL COBOL dinâmica. O Registro 1 aponta para a lista de parâmetros. O código de retorno definido no registro 15 pelo programa chamado não é passado de volta ao programa que fez a chamada.

Quando se chama um programa não-VisualAge Generator, o OS LINK é usado.

Chamar programa remoto não é tarefa suportada.

Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre transferência do controle do programa.

A opção REPLY só é efetiva quando usada com CREATX.

IMS BMP A opção REPLY só é efetiva quando usada com CREATX. Do contrário, é como MVS/TSO.
CICS para VSE Igual a CICS para MVS/ESA.
VSE batch Igual a VM CMS.
CICS para OS/2 Quando se usa ligação padrão em ambientes CICS, é implementada uma CALL por meio de um LINK CICS. O parâmetro list é passado em CICS COMMAREA. O código de retorno definido no registro 15 pelo programa chamado não é passado de volta ao programa que fez a chamada.

O comprimento máximo de COMMAREA é de 32567 para uma chamada a um programa remoto.

Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre transferência do controle do programa.

Se um programa chamar um programa batch chamado remoto que acessa bancos de dados DL/I, o programa que faz a chamada terá que passar EZEDLPSB como parâmetro ao programa batch chamado remoto. O PSB é programado no primeiro programa remoto e o endereço UIB CICS é passado de volta ao parâmetro EZEDLPSB para ser usado em chamadas subseqüentes a programas DL/I remotos. Numa unidade de trabalho lógica simples, todas as chamadas feitas a programas batch chamados remotos DL/I têm que ir para o mesmo sistema de destino.

OS/400 Se o programa for um programa não-VisualAge Generator, a CALL usará a interface OS/400 CALL padrão. Os parâmetros são passados por meio de uma lista padrão de argumentos do sistema.
OS/2 (GUI) Nenhum.
Windows (GUI) Nenhum.
OS/2 (C++) Chamadas recursivas são suportadas. A entrada da tabela de ligação só é necessária para programas que fazem a chamada. Programas chamados não precisam de entrada na tabela de ligação. Chamadas a programas remotos são suportadas, bem como chamadas a programas CICS locais ou remotos que já existem. Consulte o documento VisualAge Generator Generation Guide para saber mais sobre como definir tabelas de ligação.

A opção REPLY é suportada em chamadas a programas remotos.

AIX Igual a OS/2 (C++)
HP-UX Igual a OS/2 (C++)
CICS for AIX Chamadas recursivas são suportadas. A ligação padrão é feita através de uma instrução CICS que passa ponteiros na COMMAREA CICS. A tabela de ligação pode ser usada para pedir que os parâmetros sejam passados por valor na COMMAREA ou para especificar que o programa chamado é um programa servidor remoto.

EZEDLPSB tem que ser passado como parâmetro a um programa servidor remoto se o programa servidor acessar bancos de dados DL/I e a unidade de trabalho se estender ao longo de chamadas de servidor múltiplas.

Windows NT Igual a OS/2 (C++)
CICS para Windows NT Igual a CICS for AIX.
Dispositivo de Teste A opção REPLY pode ser usada em chamadas a COMMIT e RESET. O dispositivo de teste exibe uma mensagem que corresponde ao valor definido em EZERT8.

Programas recursivos não são suportados.

Exemplos de CALL

Para ir para outro programa chamado APPL2, passando um item de dados chamado ITEM1, digite:

   CALL APPL2 ITEM1;

ou:

   CALL APPL2 ITEM1 (NOMAPS;

O parênteses precedendo a opção é necessário.


[ Início da Página | Página Anterior | Próxima Página | Índice ]