DXFR transfere o controle para outro programa ou programa. O programa atual termina e quaisquer arquivos abertos são fechados.
>>-DXFR----+-programa-+---+-----------+---+----------+--;------>< '-EZEAPP---' '-registro--' '-(NONCSP--'
Atributo | Descrição |
---|---|
programa | Nome do aplicação ou programa a ser iniciado. |
EZEAPP | Palavra de função especial usada para especificar dinamicamente o nome do programa em instrução DXFR. Essa função especial permite alterar o nome do programa transferido-para dentro de um programa. |
registro | Nome de qualquer registro usado no programa atual. As informações
do registro são usadas para inicializar o registro do armazenamento de
trabalho do programa transferido-para. Os dados do registro têm que ser
compatíveis com o registro esperado pelo programa transferido-para.
O armazenamento de trabalho compatível tem que ser definido para o programa que é o objeto da transferência. Se for especificado um registro de armazenamento de trabalho em DXFR, só os dados da estrutura serão transferidos. Nenhum item de dados de nível 77 será transferido.
Se o armazenamento de trabalho receptor não for do mesmo tamanho que o transferido, será usado o tamanho menor para a transferência. Se a área receptora for maior, o registro do armazenamento de trabalho principal do programa transferido será iniciado com base no tipo de dados (espaços em branco para dados de caracteres e zero para dados numéricos). A inicialização é feita antes de o registro transferido que porventura exista ser levado para o registro de armazenamento de trabalho primário. Se a definição do registro especificado na instrução DXFR não for compatível com a definição do registro do armazenamento de trabalho primário do programa transferido-para, poderão ocorrer nele resultados imprevisíveis, entre os quais encerramento anormal e travamento da exibição. Eis algumas condições que podem causar incompatibilidades entre os dois registros:
|
NONCSP | Indica que o programa de destino é não-VisualAge Generator. A
opção pode ser especificada na instrução DXFR ou na tabela de ligação numa
instrução :DXFRLINK. A opção é necessária quando se gera o
programa para ambiente COBOL. Transferências a programas VisualAge
Generator e não-VisualAge Generator são geradas de modo diferente nesses
ambientes.
Se a opção NONCSP for especificada, a implementação de DXFR dependerá do ambiente. Veja mais informações em "Ambientes de Destino para DXFR". |
Pode-se especificar tanto o nome do programa quanto a palavra de função especial EZEAPP. EZEAPP permite mudar dinamicamente o nome do programa transferido-para num programa.
DXFR é designado para transferir o controle para outro programa, mas ficando na mesma transação CICS ou IMS/VS. No caso de ambientes que não suportam transações, DXFR fornece função semelhante dentro da mesma unidade de execução.
DXFR não pode ser usada a partir de programa chamado. Não é possível transferir usando DXFR para uma transação principal que tem um primeiro mapa definido. Se a transferência de controle for para outro programa, terá que ser definida como transação principal ou batch principal.
A entrada da tabela de ligação que especifica ligação estática para ambientes de host não-CICS MVS e o programa de destino são um programas gerados que chamam programas PL/I e os programas que não estão usando LE/370.
Ambiente | Considerações de Compatibilidade |
---|---|
VM CMS | A transferência para programas não-VisualAge Generator é feita por meio
da macro OS XCTL. O registro é passado como parâmetro. Para
DXFRs de programas não-VisualAge Generator, o tamanho máximo do registro é
32757.
Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre transferência do controle do programa. As seguintes restrições aplicam-se a quem usa programas gerados como segmentos salvos:
|
VM batch | Igual a VM CMS. |
CICS para MVS/ESA | DXFR é implementada por meio do comando XCTL CICS, tanto para programas
VisualAge Generator quanto não-VisualAge Generator. O registro é
passado por meio da opção COMMAREA de XCTL. Os dados são iniciados no
primeiro byte da área comum. O tamanho máximo do registro é
32763.
Apenas em ambientes CICS ocorre commit em DXFR quando um PSB é programado para o horário do DXFR. A opção de geração /NOSYNCDXFR pode ser usada para evitar que ocorra commit num CICS quando o programa que está sendo transferido e o transferido-para usam a mesma PSB (têm o mesmo nome de parte PSB especificado na definição do programa). Consulte a seção sobre opções de geração no documento VisualAge Generator Generation Guide para conhecer detalhes. Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre transferência do controle do programa. |
MVS/TSO | A transferência para programas não-VisualAge Generator é feita por meio
da macro OS XCTL. O registro e EZEDLPSB (se tiver sido usado um PSB no
programa que está sendo transferido) são passados como parâmetros. No
caso de DXFRs para programas não-VisualAge Generator, o tamanho máximo do
registro é 32757.
Todos os programas da mesma unidade de execução têm que compartilhar o mesmo DL/I PSB. A definição da parte PSB pode variar se EZEDLPCB for usada para passar informações na CALL. Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre transferência do controle do programa. |
MVS batch | Chamadas DL/I e arquivos GSAM só são suportados no programa
transferido-para se havia PSB especificado para o programa que está sendo
transferido e ele faz no mínimo o seguinte:
Do contrário, é como MVS/TSO. |
IMS/VS | É suportada transferência usando DXFR para um programa não-VisualAge
Generator. A opção NONCSP é ignorada. DXFRLINK com
LINKTYPE=NONCSP na tabela de ligação não é suportado.
Programas que rodam sob a mesma transação usando DXFR têm que compartilhar o mesmo PSB, têm que ter o mesmo modo de execução e têm que usar a área de rascunho (SPA) do IMS da mesma maneira. Jamais ocorre ponto de commit em DXFR. O uso de SPA é especificado como opção de geração. Se o programa inicial da transação for um programa batch principal, DXFR para programa de transação principal não será suportado. Se o programa inicial for transação principal, DXFR para programa de batch principal que acessa o PCB da E/S como arquivo serial não será suportado. |
IMS BMP | Igual a MVS/TSO. |
CICS para VSE | Igual a CICS para MVS/ESA. |
VSE batch | DXFR não é suportado para programas não-VisualAge Generator.
Arquivos DL/I CALL só são suportados no programa transferido-para se havia PSB especificado para o programa que está sendo transferido e ele faz no mínimo o seguinte:
Todos os programas da mesma unidade de execução têm que compartilhar o mesmo PSB. Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre transferência do controle do programa. |
CICS para OS/2 | Igual a CICS para MVS/ESA. |
OS/400 | O controle é passado diretamente ao programa para ser iniciado por meio da interface OS/400 XCTL. O armazenamento de trabalho é passado como parâmetro usando uma lista padrão de argumentos do sistema. O programa que emite DXFR é removido da pilha de chamadas do programa e não retoma o controle quando o programa iniciado termina. |
OS/2 (GUI) | Não suportado. |
Windows (GUI) | Não suportado. |
OS/2 (C++) | A API DosExecPgm é usada para transferir controle para um programa não-VisualAge Generator. O registro é passado por meio de um bloco de transferência numa memória compartilhada. Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre como transferir o controle de um programa VisualAge Generator para um programa não-VisualAge Generator. |
AIX | As chamadas do sistema exec() e fork() são usadas na transferência de controle para um programa não-VisualAge Generator. Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre como transferir o controle de um programa VisualAge Generator para um programa não-VisualAge Generator. |
HP-UX | As chamadas do sistema exec() e fork() são usadas na transferência de controle para um programa não-VisualAge Generator. Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre como transferir o controle de um programa VisualAge Generator para um programa não-VisualAge Generator. |
CICS for AIX | DXFR é implementado por meio do comando XCTL CICS. O registro é passado por meio da opção COMMAREA de XCTL. Os dados começam no primeiro byte de COMMAREA. O tamanho máximo do registro é 32763. |
Windows NT | Igual a OS/2 (C++). |
CICS para Windows NT | Igual a CICS for AIX. |
Dispositivo de Teste | Nenhum. |
Para transferir o controle e passar o registro MYRECD para o programa chamado NEWAPP1, digite:
DXFR NEWAPP1 MYRECD;
Para transferir o controle para outro programa chamado APPL2, digite:
DXFR APPL2;
Para usar EZEAPP para especificar um nome de variável, digite:
MOVE 'APPL2' TO EZEAPP; DXFR EZEAPP;
Para passar um armazenamento de trabalho para um programa não-VisualAge Generator, digite:
MOVE 'APPL3' to EZEAPP; DXFR EZEAPP COMMON_DATA_RECORD (NONCSP;