A XFER transfere controle para um outro programa ou CICS ou transação IMS. Quando o programa para o qual você está transferindo termina, todos os arquivos abertos são fechados. O programa atual encerra quando a transferência ocorre, e ele não é retomado quando um programa é iniciado ou finalizado.
Você pode especificar um registro de memória de trabalho, mapa ou ambos para o programa que recebe o controle.
>>-XFER----+-programa---------+---+----------------+------------> +-EZEAPP-----------+ +-registro-------+ '-cadeia em branco-' +-record,mapname-+ '-,mapname-------' >-----+----------------+--;------------------------------------>< +-(NONCSP--------+ '-, UIrecordname-'
Atributo | Descrição |
---|---|
programa | O nome do programa a ser iniciado.
Se a instrução XFER for utilizada em um programa de transação na Web, o nome de um programa em branco será válido somente se um registro da UI foi especificado. |
EZEAPP | O nome de uma variável em uma instrução de transferência. Essa palavra de função especial possibilita a alteração dinâmica do nome do programa para o qual está sendo feita a transferência dentro do programa. |
cadeia em branco | Uma cadeia em branco pode ser utilizada em lugar de um nome do programa
ou EZEAPP.
Se a instrução XFER for utilizada em um programa de transação na Web, uma cadeia em branco será válida somente se um registro da UI foi especificado. |
registro | O nome de qualquer registro usado no programa atual, incluindo a memória
de trabalho. As informações do registro são usadas para inicializar o
registro do armazenamento de trabalho do programa transferido-para. O
tamanho máximo do registro que pode ser passado é 32767 bytes.
O armazenamento de trabalho compatível tem que ser definido para o programa que é o objeto da transferência. Se um registro da memória de trabalho for especificado em um XFER, somente 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 primário do programa transferido-para será iniciado com base no tipo de dados (espaços em branco para CHA, DBCS e MIX, 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 XFER não for compatível com a definição do registro da memória de trabalho primária do programa para o qual está sendo feita a transferência, resultados imprevisíveis, incluindo término anormal ou o bloqueio da exibição, podem ocorrer no programa. Eis algumas condições que podem causar incompatibilidades entre os dois registros:
Se a instrução XFER for utilizada em um programa de transação na Web, um registro da memória de trabalho poderá ser especificado opcionalmente para este parâmetro. O registro da memória de trabalho será passado ao programa especificado. O nome do programa não pode ser em branco. |
mapname | O nome de um mapa usado no programa. O programa transferido deve
ser um programa de transação principal. O mapa aparece antes que a
transferência para o novo programa seja concluída. O novo programa
deverá usar o Primeiro Mapa, que será lido antes do programa ser
executado.
O nome do mapa na XFER deve corresponder à especificação do Primeiro Mapa do programa que é o objeto da transferência. Ambos os programas devem usar o mesmo mapa. |
UIrecordname | Se EZEAPP contiver espaços em branco ou um literal em branco for
utilizado, o registro da UI especificado será enviado, como em um CONVERSE,
mas nenhum estado será salvo e a transação será encerrada. O registro
da UI será enviado para todas as classes relativas ao nome do programa.
Se a instrução XFER for utilizada em um programa de transação na Web, um registro da UI será o único tipo de registr que poderá ser especificado opcionalmente para este parâmetro. |
NONCSP | Indica que o programa é um programa não-VisualAge Generator. |
XFER de programas chamados não é suportado.
Ambiente | Considerações de Compatibilidade |
---|---|
VM CMS | A transferência é feita com o uso do macro OS XCTL. O registro e o
mapa são passados como parâmetros. Consulte o documento VisualAge
Generator Client/Server Communications Guide para saber mais sobre transferência do controle do programa.
A opção de geração /SYNCXFER controla se um commit é feito quando a XFER é executada para programas não-segmentados. XFER com um mapa para um programa não-VisualAge Generator não é suportado. As seguintes restrições aplicam-se a quem usa programas gerados como segmentos salvos:
|
VM batch | XFER com um mapa não é suportado. Do contrário, é como VM CMS. |
CICS para MVS/ESA | O nome do programa ou EZEAPP especifica o nome da nova transação a ser
iniciada. O nome da entrada é o nome com 1 a 4 caracteres da transação
a ser iniciada. O nome será truncado em quatro caracteres.
A transação é iniciada com o uso de um comando CICS START. Os dados da memória de trabalho são passados no CICS COMMAREA. O comprimento máximo do registro é 32763. Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre transferência do controle do programa. XFER com um mapa para um programa não-VisualAge Generator não é suportado. |
MVS/TSO | A transferência é feita com o uso do macro OS XCTL. O registro,
mapa e EZEDLPSB, se um PSB foi usando no programa de transferência, serão
passados como parâmetros. Consulte o documento VisualAge Generator
Client/Server Communications Guide para saber mais sobre transferência do controle do programa.
A opção de geração /SYNCXFER controla se um commit é feito quando a XFER é executada para programas não-segmentados. As chamadas DL/I são suportadas no programa para o qual está sendo feita a transferência somente se havia um PSB especificado para o programa de transferência e o mesmo fizer pelo menos o seguinte:
XFER com um mapa para um programa não-VisualAge Generator não é suportado. |
MVS batch | A transferência é feita com o uso do macro OS XCTL. O registro e
EZEDLPSB, se um PSB foi usando no programa de transferência, serão passados
como parâmetros. Consulte o documento VisualAge Generator
Client/Server Communications Guide para saber mais sobre transferência do controle do programa.
A opção de geração /SYNCXFER controla se um commit é feito quando a XFER é executada. As chamadas DL/I e GSAM são suportadas no programa para o qual está sendo feita a transferência somente se havia um PSB especificado para o programa de transferência e o mesmo fizer pelo menos o seguinte:
XFER com um mapa para um programa não-VisualAge Generator não é suportado. |
IMS/VS | O nome do programa ou EZEAPP especifica o nome da nova transação a ser
iniciada. O nome da entrada é o nome com 1 a 8 caracteres da transação
a ser iniciada.
A opção de geração /SPA do programa de transferência e do programa para o qual ela está sendo feita deve ser a mesma. Se um mapa for especificado no XFER, os programas de transferência e para o qual a mesma está sendo feita devem compartilhar o mesmo grupo de mapas. O nome do mapa pode ser usado em conjunto com um programa não-VisualAge Generator. O programa não-VisualAge Generator deve usar o MFS do mapa que foi criado pelo VisualAge Generator Developer. XFER não pode ser usado dos programas em lote. O limite do tamanho máximo de um registro passado em um XFER é 32753 bytes. Se uma mensagem de entrada em uma transação principal consistir somente no nome da transação seguido de espaços em branco, o programa admite que ele está sendo iniciado sem que nenhuma memória de trabalho esteja sendo passada. O registro de memória de trabalho primário do programa é inicializado com base nos tipos de dados. O método de passagem da memória de trabalho (SPA, mensagem IMS, ou banco de dados de trabalho) depende das opções de geração. Consulte o documento VisualAge Generator Client/Server Communications Guide para saber mais sobre transferência do controle do programa. |
IMS BMP | A transferência é feita com o uso do macro OS XCTL. O registro e o
PSB são passados como parâmetros. Consulte o documento VisualAge
Generator Client/Server Communications Guide para saber mais sobre transferência do controle do programa.
A opção de geração /SYNCXFER controla se um commit é feito quando a XFER é executada para programas não-segmentados. XFER com um mapa não é suportado. |
CICS para VSE | Igual ao CICS para MVS/ESA |
VSE batch | Não suportado. |
CICS para OS/2 | Igual ao 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 o XFER é removido da pilha de chamada do programa e não
retoma o controle quando o programa inicializado termina.
XFER com um mapa para um programa não-VisualAge Generator não é suportado. |
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 obter mais informações sobre como transferir o controle de um
programa VisualAge Generator a um programa não-VisualAge Generator.
XFER com um mapa para um programa não-VisualAge Generator não é suportado. |
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 obter mais informações sobre como transferir o controle de um
programa VisualAge Generator a um programa não-VisualAge Generator.
XFER com um mapa para um programa não-VisualAge Generator não é suportado. |
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 obter mais informações sobre como transferir o controle de um
programa VisualAge Generator a um programa não-VisualAge Generator.
XFER com um mapa para um programa não-VisualAge Generator não é suportado. |
CICS for AIX | Igual a CICS para MVS/ESA. |
Windows NT | Igual a OS/2 (C++). |
CICS para Windows NT | Igual a CICS para MVS/ESA. |
Dispositivo de Teste | Nenhum. |
Os seguintes exemplos mostram como usar a instrução XFER.
Para transferir o controle ao programa APPL2 e passar a ele um registro da memória de trabalho chamado WSREC:
XFER APPL2 WSREC;
Para usar EZEAPP para especificar o nome de uma variável:
MOVE 'APPL2' TO EZEAPP; XFER EZEAPP;
Em CICS ou IMS, para transferir um registro de memória de trabalho e um mapa para um programa chamado APPL3, associado ao TRX3:
MOVE 'TRX3' to EZEAPP; XFER EZEAPP MYWORK, MYMAP;
APPL3 deve ter MYMAP, especificado como o primeiro mapa deste.
Se você estiver desenvolvendo um programa para ambientes TSO e CICS, pode codificar:
IF EZESYS IS MVSCICS; MOVE 'TRX3' TO EZEAPP; /* CICS código de transação XFER EZEAPP MYWORK, MYMAP; ELSE; XFER APPL3 MYWORK, MYMAP; /* nome do programa para TSO END;
Se o nome do programa real for especificado na instrução XFER para TSO, a CLIST de execução de exemplo gerada alocará automaticamente quaisquer conjuntos de dados para o programa de destino da transferência.