Auxílios do VisualAge Generator

Instrução XFER

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:

  • Os registros diferem no comprimento
  • Os limites de campo dos dois registros não são iguais
  • O tipo de dados difere (por exemplo, o campo é definido como caractere no registro usado na instrução XFER, mas o programa para o qual está sendo feita a transferência espera que o campo seja DBCS).

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.

Considerações sobre Definição para XFER

XFER de programas chamados não é suportado.

Ambientes de Destino para XFER

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:

  • Se o segmento salvo for um programa inicial, não será possível transferir com instrução DXFR que usa XCTL ou XFER para outros programas
  • Não se pode transferir com instrução DXFR que usa XCTL ou XFER para programa que é carregado como segmento salvo
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:

  • Usar CSPTDLI
  • Usar EZEDLPSB ou EZEDLPCB em qualquer instrução do programa
  • Tiver bancos de dados DL/I diferentes do ELAWORK ou ELAMSG na definição PSB

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:

  • Usar CSPTDLI
  • Usar a rotina de serviço do AUDIT
  • Associar pelo menos um arquivo ou EZEPRINT ao GSAM.
  • Usar EZEDLPSB ou EZEDLPCB em qualquer instrução do programa
  • Tiver bancos de dados DL/I diferentes do ELAWORK ou ELAMSG na definição PSB

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.

Exemplos para XFER

Os seguintes exemplos mostram como usar a instrução XFER.

Transferência de Controle Usando 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;

Usando EZEAPP para Especificar um Nome de Variável

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.

Desenvolvendo um Programa para TSO e CICS

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.


[ Início da Página | Página Anterior | Próxima Página | Índice ]