Domingo 14 Agosto 2022

Leia os dados de uma fila de armazenamento temporário.

Condições: INVREQ, IOERR, ISCINVREQ, ITEMERR, LENGERR, NOTAUTH, QIDERR, SYSIDERR

Este comando é thread-safe quando usado com uma fila no armazenamento principal ou auxiliar, seja em uma região CICS local ou função enviada para uma região CICS remota por meio de uma conexão IPIC. Também é threadsafe quando é usado com uma fila em um conjunto de armazenamento temporário compartilhado em um recurso de acoplamento z / OS que é gerenciado por um servidor de compartilhamento de dados de armazenamento temporário (servidor TS). O comando não é thread-safe quando sua função é enviada para uma região CICS remota por meio de outro tipo de conexão diferente de IPIC.

Nota para roteamento de transação dinâmica: O uso deste comando pode criar afinidades entre transações que afetam adversamente o uso do roteamento de transação dinâmica. Para obter mais informações sobre afinidades de transação, consulte Afinidade .

Descrição:

READQ TS recupera dados de uma fila de armazenamento temporário no armazenamento principal ou auxiliar.

Opções:

INTO ( área de dados )

Especifica a área de dados na qual os dados devem ser gravados. A área de dados pode ser qualquer variável, array ou estrutura.

ITEM ( valor de dados )

Fornece um valor binário de meia palavra que especifica o número do item do registro lógico a ser recuperado da fila.

LENGTH ( área de dados )

Especifica o comprimento, como um valor binário de meia palavra, do registro a ser lido.

Se você especificar a opção INTO, LENGTH não precisará ser especificado se o comprimento puder ser gerado pelo compilador a partir da variável INTO.

Se você especificar INTO, LENGTH define o comprimento máximo de dados que o programa aceita. Se o valor especificado for menor que zero, zero é assumido. Se o comprimento dos dados exceder o valor especificado, os dados serão truncados para esse valor e a condição LENGERR ocorrerá.

Na conclusão da operação de recuperação, a área de dados é configurada para o comprimento original do registro de dados que é lido da fila.

Se você especificar a opção SET, o LENGTH deve ser especificado.

Para obter mais informações sobre quando LENGTH deve ser especificado, consulte as opções de LENGTH em comandos CICS .

NEXT

Especifica a recuperação para o próximo registro lógico sequencial após o último registro que foi recuperado por qualquer tarefa ou o primeiro registro se nenhum registro anterior foi recuperado.

Atenção: É possível que duas tarefas se intercalem se perderem o controle durante a operação de navegação. Por exemplo, a tarefa 1 pode recuperar os itens 1, 3 e 6, enquanto a tarefa 2 recupera os itens 2, 4 e 5. Usar o comando READQ TS com NEXT de um programa threadsafe aumenta a probabilidade de intercalação de tarefas, porque eles estão sendo executados em paralelo em seus próprios TCBs. Se a ordem de recuperação de itens for importante, adicione lógica de serialização ao aplicativo para encadear a navegação da fila, especialmente se o aplicativo for definido com CONCURRENCY (THREADSAFE) ou CONCURRENCY (REQUIRED) .

NUMITEMS ( área de dados )

Especifica um campo binário de meia palavra no qual o CICS armazena um número que indica quantos itens existem na fila. Isso ocorre apenas se o comando for concluído normalmente.

QNAME ( nome )

Uma alternativa para QUEUE , QNAME especifica o nome simbólico (1 - 16 caracteres) da fila a ser lida. Se o nome tiver menos de 16 caracteres, você ainda deve usar um campo de 16 caracteres, preenchido com espaços em branco, se necessário.

QUEUE ( nome )

Especifica o nome simbólico (1 - 8 caracteres) da fila a ser lida. Se o nome tiver menos de 8 caracteres, você ainda deve usar um campo de 8 caracteres, preenchido com espaços em branco, se necessário.

SET ( ptr-ref )

Especifica a referência do ponteiro que é definida para o endereço dos dados recuperados. A referência do ponteiro, a menos que seja alterada por outros comandos ou instruções, é válida até o próximo comando READQ TS ou o final da tarefa.

Se o programa aplicativo for definido com DATALOCATION (ANY), o endereço dos dados pode estar acima ou abaixo da linha de 16 MB. Se o programa aplicativo for definido com DATALOCATION (ABAIXO), o endereço dos dados está abaixo da linha de 16 MB.

Se TASKDATAKEY (USER) for especificado para a tarefa em execução e a proteção de armazenamento estiver ativa, os dados retornados estarão em uma chave de usuário. Se TASKDATAKEY (CICS) for especificado e a proteção de armazenamento estiver ativa, os dados que são retornados estão em uma chave do CICS.

SYSID ( nome do sistema )

(Filas remotas e compartilhadas apenas) Especifica o nome do sistema (1 - 4 caracteres) que identifica o sistema remoto ou conjunto de filas compartilhadas para o qual a solicitação é direcionada. As definições de recursos do TSMODEL não suportam a especificação de um SYSID para uma fila que reside em um conjunto de compartilhamento de dados de armazenamento temporário. Use a opção QUEUE ou QNAME em seu lugar. Usar um SYSID explícito para um conjunto de filas compartilhadas requer o suporte de uma tabela de armazenamento temporário (TST).

Exemplos:

O exemplo a seguir mostra como ler o primeiro (ou único) registro de uma fila de armazenamento temporário em uma área de dados especificada na solicitação. A área de dados LENGTH recebe o valor do comprimento do registro.

EXEC CICS READQ TS

     ITEM(1)

     QUEUE(UNIQNAME)

     INTO(DATA)

     LENGTH(LDATA)

 

O exemplo a seguir mostra como ler o próximo registro de uma fila de armazenamento temporário em uma área de dados fornecida pelo CICS. A referência de ponteiro que é especificada pela opção SET é definida para o endereço da área de armazenamento que é reservada para o registro de dados, e a área de dados LENGTH recebe o valor do comprimento do registro.

EXEC CICS READQ TS

     QUEUE(DESCRQ  )

     SET(PREF)

     LENGTH(LENG)

     NEXT