|
Enterprise COBOL for z/OS, Version 4.2, Programming Guide
Sua decisão de usar chamadas dinâmicas com subprogramas depende de fatores como localização do módulo de carga, frequência das chamadas para os subprogramas,
tamanho dos subprogramas, facilidade de manutenção, necessidade de chamar subprogramas em seu estado não utilizado, necessidade de comutação AMODE , e quando os
nomes dos programas são conhecidos.
O módulo de carregamento que você deseja chamar dinamicamente deve estar em uma biblioteca de carregamento MVS em vez de no sistema de arquivos hierárquico.
Se os subprogramas forem chamados em apenas algumas condições, você poderá usar chamadas dinâmicas para trazer os subprogramas apenas quando necessário.
Se os subprogramas forem muito grandes ou se houver muitos deles, o uso de chamadas estáticas pode exigir muito armazenamento principal.
Pode ser necessário menos armazenamento total para chamar e cancelar um e, em seguida, ligar e cancelar outro, do que para ligar estaticamente para ambos.
Se você está preocupado com a facilidade de manutenção, chamadas dinâmicas podem ajudar.
Os aplicativos não precisam ter o link editado novamente quando os subprogramas chamados dinamicamente são alterados.
Quando você não pode usar o atributo INITIAL para garantir que um subprograma seja colocado em seu estado não usado cada vez que for chamado, você pode definir o
estado não usado usando uma combinação de instruções dinâmicas CALL e CANCEL.
Quando você cancela um subprograma que foi chamado pela primeira vez por um programa COBOL, a próxima chamada faz com que o subprograma seja reinicializado ao seu
estado não utilizado.
Usar a instrução CANCEL para cancelar explicitamente um subprograma que foi carregado dinamicamente e ramificado por um programa não COBOL não resulta em nenhuma
ação para liberar o armazenamento do subprograma ou para excluí-lo.
Suponha que você tenha um OS/VS COBOL ou outro programa AMODE 24 na mesma unidade de execução com programas Enterprise COBOL que deseja executar no modo de
endereçamento de 31 bits.
O processamento de chamadas dinâmicas COBOL inclui comutação AMODE para programas AMODE 24 que chamam programas AMODE 31 e vice-versa.
Para que essa alternância AMODE implícita seja feita, você deve usar a opção de tempo de execução do Language Environment ALL31 (OFF).
Quando a comutação AMODE é executada, o controle é passado do chamador para uma rotina de biblioteca do Ambiente de Linguagem.
Após a comutação, o controle passa para o programa chamado; a área de salvamento da rotina da biblioteca será posicionada entre a área de salvamento do programa
chamador e a área de salvamento do programa chamado.
Se você não souber o nome do programa a ser chamado até o tempo de execução, use o formato CALL identifier, onde identifier é um item de dados que conterá o nome
do programa chamado em tempo de execução.
Por exemplo, você pode usar o identificador CALL quando o programa a ser chamado varia dependendo do processamento condicional em seu programa.
O identificador CALL é sempre dinâmico, mesmo se você usar a opção do compilador NODYNAM.
Conceitos relacionados
© Copyright IBM Corp.
|