COBOL - Declaração CALL
AUm Programa pode chamar outro(s) programa(s) para executar um conjunto de tarefas. Neste caso, o programa que chama outros programas chamamos de Programa CHAMADO (às vezes, também chamado de Programa Principal) enquanto o programa que é chamado é chamado de programa CHAMADO ou Subprograma.
A instrução COBOL CALL é usada para chamar outro programa.
Existem 2 tipos de chamadas –
- CHAMADA ESTÁTICA
- CHAMADA DINÂMICA
CHAMADA ESTÁTICA:
No caso de CHAMADAS ESTÁTICAS, se tivermos 2 programas MAIN-PROGRAM e SUB-PROGRAM então ambos os Programas são compilados como um membro PDS separado, mas são editados em conjunto ao mesmo tempo. Esta é a razão, CHAMADAS ESTÁTICAS são mais rápidas em comparação com CHAMADAS DINÂMICAS.
- Se modificarmos o subprograma SUB-PROGRAM, precisamos compilar SUB-PROGRAM e o programa de chamada MAIN-PROGRAM também para vincular de volta a este módulo recém-compilado.
- CHAMADAS ESTÁTICAS ocupam mais armazenamento, mas levam menos tempo para execução em comparação com CHAMADAS DINÂMICAS.
- A opção do compilador NODYNAM é usada no caso de STATIC CALLS. Para verificar sua opção de compilador, verifique com seu grupo de suporte/administração do mainframe.
- Se o programa chamado for muito pequeno, podemos optar por uma chamada estática, caso contrário, a chamada dinâmica será melhor porque, em chamadas estáticas, o programa CALLED está embutido no módulo de carregamento do programa CALLING.
CHAMADA DINÂMICA:
No caso de CHAMADAS DINÂMICAS, se temos 2 programas MAIN-PROGRAM e SUB-PROGRAM então ambos os Programas são compilados como um membro PDS separado e o link editado separadamente também.
- DYNAMIC CALLS ocupam menos espaço de armazenamento, pois um módulo compilado é carregado na memória apenas quando é chamado, mas leva mais tempo para execução em comparação com STATIC CALLS.
- A opção do compilador DYNAM é usada para DYNAMIC CALLS.
- Programas chamados dinamicamente são muito mais fáceis de gerenciar do que programas estáticos
Os parâmetros (variáveis) podem ser passados entre programas de duas maneiras −
- Por referência
- Por conteúdo
Chamada por referência - Se os valores das variáveis no programa chamado forem modificados, seus novos valores refletirão no programa chamador. Se a cláusula BY não for especificada, as variáveis serão sempre passadas por referência.
A seguir está a
syntax de chamada de sub-rotina por referência −
CALL sub-prog-name USING variable-1, variable-2..... |
Chamada por conteúdo - Se os valores das variáveis no programa chamado forem modificados, seus novos valores não serão refletidos no programa chamador.
A seguir está a sintaxe de chamada de sub-rotina por conteúdo -
CALL sub-prog-name USING BY CONTENT variable-1, BY CONTENT variable-2...... |
Agora é hora de ver alguns exemplos para a instrução CALL no próximo capítulo.
Caso tenha alguma dúvida ou pergunta sobre esse assunto, você pode entrar em contato com nossos experts na Comunidade Aprenda COBOL!