Domingo 14 Agosto 2022

Transfira o controle do programa.

Condições: CHANNELERR, INVREQ, LENGERR, NOTAUTH, PGMIDERR

Este comando é threadsafe.

Descrição:

O XCTL transfere o controle de um programa aplicativo para outro no mesmo nível lógico. O programa do qual o controle é transferido é liberado. Se o programa para o qual o controle é transferido ainda não estiver no armazenamento principal, ele será carregado.

Este comando opera no contexto do aplicativo atual. Se o comando for emitido por um programa que está sendo executado em uma tarefa para um aplicativo implementado em uma plataforma, o CICS procura o programa nomeado no diretório de programa privado do aplicativo. Este comando não pode ser usado para alterar o contexto do aplicativo.

Nota: O uso de XCTL para chamar um aplicativo Java EE em execução em um servidor Liberty JVM não é suportado. Você pode vincular a um aplicativo Java EE em execução em um servidor Liberty JVM como o programa inicial de uma transação CICS ou usando os comandos LINK, START ou START CHANNEL de qualquer programa CICS. Para obter mais informações, consulte Vinculando-se a um aplicativo Java EE a partir de um programa CICS .

Opções:

CANAL ( nome )

Especifica o nome (1–16 caracteres) de um canal que deve ser disponibilizado para o programa invocado. Os caracteres aceitáveis ​​são AZ az 0-9 $ @ # /% &? ! : | "= ¬,; <>. - e _. Caracteres em branco à esquerda e incorporados não são permitidos. Se o nome fornecido tiver menos de 16 caracteres, ele será preenchido com espaços em branco à direita de até 16 caracteres. Se o canal não existir, ele é criado. Este novo canal permanece no escopo até que o nível do link seja alterado. Para obter mais informações sobre o escopo do canal, consulte O escopo de um canal .

Os nomes dos canais estão sempre em EBCDIC. O conjunto de caracteres permitidos para nomes de canais, conforme listado anteriormente, inclui alguns caracteres que não têm a mesma representação em todas as páginas de código EBCDIC. Portanto, se os canais forem enviados entre regiões, é aconselhável restringir os caracteres usados ​​para nomeá-los a AZ az 0-9 &: =,; <>. - e _.

Você pode especificar o nome do canal DFHTRANSACTION para usar um canal de transação. Um canal de transação não sai do escopo quando o nível do link muda: ele está sempre acessível na tarefa. Para obter mais informações, consulte Canais e contêineres .

O programa que emite o comando XCTL pode fazer o seguinte:

  • Crie o canal antes de emitir o comando XCTL, usando um ou mais comandos PUT CONTAINER CHANNEL ou PUT64 CONTAINER .
  • Especifique seu canal atual, por nome.
  • Nomeie um canal que não existe atualmente. Um novo canal vazio é criado.

COMMAREA ( área de dados )

Especifica uma área de comunicação a ser disponibilizada para o programa invocado. Nesta opção, o conteúdo da área de dados é passado. Em COBOL, você deve fornecer a essa área de dados o nome DFHCOMMAREA no programa de recebimento. Consulte Passando dados para outros programas .

INPUTMSG ( área de dados )

Especifica os dados a serem transmitidos ao programa chamado quando ele emite um comando RECEIVE pela primeira vez. Se o programa invocado passar o controle para outro programa usando um comando LINK , uma cadeia vinculada é criada, conforme descrito na opção INPUTMSG do comando LINK . Os dados INPUTMSG permanecem disponíveis até que um comando RECEIVE seja emitido ou até que o controle retorne ao CICS®.

INPUTMSGLEN ( valor de dados )

Especifica um valor binário de meia palavra que especifica o comprimento dos dados transmitidos por INPUTMSG .

LENGTH ( valor de dados )

Especifica o comprimento (valor de dados binários de meia palavra) em bytes da área de comunicação. Para obter uma descrição de um limite superior adequado, consulte as opções de LENGTH em comandos CICS .

PROGRAM ( nome )

Especifica o identificador (1 a 8 caracteres alfanuméricos) do programa para o qual o controle deve ser passado incondicionalmente. O nome especificado deve ter sido definido como um programa para o CICS, embora se AUTOINSTALL estiver ativo, uma definição será instalada automaticamente.

Observe o uso de aspas:

EXEC CICS XCTL PROGRAM('PROGX')

 

PROGX está entre aspas porque é o nome do programa.

EXEC CICS XCTL PROGRAM(DAREA)

 

DAREAnão está entre aspas porque é o nome de uma área de dados que contém o nome real do programa. Se uma área de dados for usada para conter o nome do programa, essa área de dados deve ser definida como um campo de 8 bytes no armazenamento de trabalho.

Exemplos:

O exemplo a seguir mostra como solicitar uma transferência de controle para um programa aplicativo chamado PROG2:

EXEC CICS XCTL PROGRAM('PROG2')