Leia os dados da fila de dados transitórios.
Condições: DISABLED, INVREQ, IOERR, ISCINVREQ, LENGERR, LOCKED, NOTAUTH, NOTOPEN, QBUSY, QIDERR, QZERO, SYSIDERR
Este comando é thread-safe quando é usado com uma fila em uma região CICS local ou função enviada para uma região CICS remota por meio de uma conexão IPIC. Não é thread-safe quando sua função é enviada para uma região CICS remota por meio de outro tipo de conexão.
Descrição:
READQ TD lê dados temporários de uma fila (após o qual o registro não está mais disponível).
Se você estiver usando a iniciação automática de transação (ATI), seu aplicativo deve testar a condição QZERO para garantir que o encerramento de uma tarefa iniciada automaticamente ocorra apenas quando a fila estiver vazia. Para obter informações introdutórias sobre a ATI, consulte Iniciação automática de transação (ATI) .
Se o comando READQ TD tentar acessar um registro em uma fila de intrapartição recuperável logicamente que está sendo gravada ou excluída por outra tarefa e não houver mais registros confirmados, o comando aguardará até que a fila não esteja mais sendo usada para saída . Se, no entanto, a opção NOSUSPEND tiver sido especificada, ou se houver uma CONDIÇÃO DE MANIPULAÇÃO ativa para QBUSY, a condição QBUSY é levantada.
Opções:
INTO ( área de dados )
Especifica a área de dados do usuário na qual os dados lidos da fila de dados temporários devem ser colocados.
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 especifica o comprimento máximo de dados que o programa aceita. Se o valor especificado for menor que zero, uma condição LENGERR será levantada e a fila não será lida. Se o valor especificado for zero, uma condição LENGERR será levantada e a fila será lida. 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 é definida para o comprimento original do registro de dados lido da fila.
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. Consulte as opções de LENGTH em comandos CICS para obter mais informações sobre quando LENGTH deve ser especificado.
NOSUSPEND
Especifica que se o programa aplicativo tentar ler de uma fila que já está sendo usada para saída, a tarefa não será suspensa até que a fila se torne disponível. Em vez disso, a condição QBUSY é gerada.
Observe, entretanto, que se uma CONDIÇÃO DE MANIPULAÇÃO para QBUSY estiver ativa quando o comando é executado, isso também substitui a ação padrão e o controle é passado para a etiqueta do usuário fornecida em CONDIÇÃO DE MANIPULAÇÃO. Isso tem precedência sobre a opção NOSUSPEND, mas é, obviamente, negado por NOHANDLE ou RESP.
Esta opção se aplica apenas a filas de intrapartição.
QUEUE ( nome )
Especifica o nome simbólico (1 - 4 caracteres alfanuméricos) da fila a ser lida. A fila nomeada deve ter sido definida para o CICS.
Se SYSID for especificado, a fila será considerada em um sistema remoto, esteja ou não definida como remota. Caso contrário, a definição da fila de dados temporários é usada para descobrir se o conjunto de dados está em um sistema local ou remoto.
SET ( ptr-ref )
Especifica uma referência de ponteiro que deve ser definida para o endereço dos dados lidos da fila. O CICS adquire uma área grande o suficiente para conter o registro e define a referência do ponteiro para o endereço dessa área. A área é retida até que outro comando de dados transitórios seja executado. A referência do ponteiro, a menos que alterada por outros comandos ou instruções, é válida até o próximo comando READQ TD ou o final da tarefa.
Se DATALOCATION (QUALQUER) estiver associado ao programa aplicativo, o endereço dos dados pode estar acima ou abaixo da linha de 16 MB.
Se DATALOCATION (BELOW) estiver associado ao programa aplicativo e os dados residirem acima da linha de 16 MB, os dados serão copiados abaixo da linha de 16 MB e o endereço desta cópia será retornado.
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 retornados estarão em uma chave CICS.
SYSID ( nome do sistema )
(sistemas remotos apenas) Especifica o nome (1 - 4 caracteres) do sistema para o qual a solicitação é direcionada.
Exemplos:
O exemplo a seguir mostra como ler um registro de um conjunto de dados intrapartição (fila), que neste caso é o registro de mensagens do sistema de controle (CSML), em uma área de dados especificada na solicitação:
EXEC CICS READQ TD
QUEUE('CSML')
INTO(DATA)
LENGTH(LDATA)
O exemplo a seguir mostra como ler um registro de um conjunto de dados de partição extra (fila) que possui registros de comprimento fixo em uma área de dados fornecida pelo CICS; a referência de ponteiro especificada pela opção SET é definida para o endereço da área de armazenamento reservada para o registro de dados. Presume-se que o comprimento do registro seja conhecido.
EXEC CICS READQ TD
QUEUE(EX1)
SET(PREF)