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:
| ||||
opção (continuação) |
|
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.
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.
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. |
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.