|
Enterprise COBOL for z/OS, Version 4.2, Programming Guide
Quando você tem um aplicativo que tem subprogramas COBOL, alguns dos subprogramas COBOL podem ser AMODE 31 e alguns podem ser AMODE 24.
Se seu aplicativo consiste apenas em programas COBOL e você está usando apenas chamadas estáticas e dinâmicas, cada subprograma COBOL sempre será inserido no
AMODE adequado.
Por exemplo, se você estiver usando uma chamada dinâmica de um programa AMODE 31 COBOL para um programa AMODE 24 COBOL, o AMODE será automaticamente alterado.
No entanto, se você estiver usando ponteiros de procedimento, ponteiros de função ou outras linguagens que chamam subprogramas COBOL, você deve garantir que quando
um programa COBOL for chamado mais de uma vez em um enclave, ele seja inserido no mesmo AMODE cada vez que for chamado.
O AMODE não é comutado automaticamente neste caso.
O cenário a seguir mostra que podem surgir problemas de AMODE quando ponteiros de procedimento são usados ??para chamar subprogramas COBOL.
Este cenário não é suportado porque o programa COBOL COBOLY não é inserido no mesmo AMODE cada vez que é chamado.

- COBOLX é AMODE 31.
Ele usa a instrução SET para definir um ponteiro de procedimento para COBOLZ.
COBOLZ é um módulo de carregamento reentrante e é AMODE 31 e RMODE 24.
COBOLX chama COBOLZ usando o ponteiro de procedimento.
COBOLZ é inserido em AMODE 31.
- COBOLZ retorna para COBOLX.
- COBOLX chama COBOLY dinamicamente, passando o ponteiro de procedimento para COBOLZ.
COBOLY é um módulo de carregamento reentrante e é AMODE 24 e RMODE 24.
COBOLY é inserido em AMODE 24.
- COBOLY chama COBOLZ usando o ponteiro de procedimento.
Essa chamada faz com que COBOLZ seja inserido em AMODE 24, que não é o mesmo AMODE em que COBOLZ foi inserido quando foi chamado pela primeira vez.
O cenário a seguir usa uma combinação de linguagem COBOL e assembler.
Este cenário não é suportado porque o programa COBOL COBOLB não é inserido no mesmo AMODE cada vez que é chamado.

- COBOLA é AMODE 31.
COBOLA chama COBOLB dinamicamente.
COBOLB é um módulo de carregamento reentrante e é AMODE 31 e RMODE 24.
COBOLB é inserido em AMODE 31.
- COBOLB retorna para COBOLA.
- O COBOLA chama dinamicamente ASSEM10, que está em linguagem assembler.
ASSEM10 é um módulo de carregamento reentrante e é AMODE 24 e RMODE 24.
ASSEM10 é inserido em AMODE 24.
- ASSEM10 carrega COBOLB.
ASSEM10 faz uma instrução BALR para COBOLB.<>br
COBOLB é inserido em AMODE 24, que não é o mesmo AMODE em que COBOLB foi inserido quando foi chamado pela primeira vez.
Conceitos relacionados
© Copyright IBM Corp.
|