🧠 Explicação

O comando EXEC CICS READQ TS é utilizado para ler registros de uma fila de armazenamento temporário (TS Queue). Diferente das filas TD, as filas TS não perdem o dado após a leitura — ou seja, a leitura não é destrutiva. Os dados podem estar armazenados na memória principal ou em disco auxiliar.

🔧 Usos mais comuns

  • Compartilhar dados entre diferentes transações dentro do CICS.

  • Armazenar estruturas temporárias, listas ou buffers reutilizáveis.

  • Implementar mecanismos de leitura sequencial ou por índice (ITEM).

🧾 Sintaxe

EXEC CICS READQ TS
     QUEUE(nome-fila)
     ITEM(numero-item)
     INTO(area-dados)
     LENGTH(tamanho)
END-EXEC.

Ou, para leitura sequencial:

EXEC CICS READQ TS
     QUEUE(nome-fila)
     NEXT
     SET(ponteiro)
     LENGTH(tamanho)
END-EXEC.

💻 Exemplo prático

EXEC CICS READQ TS
     ITEM(1)
     QUEUE('MINHAFILA')
     INTO(MINHA-AREA)
     LENGTH(LEN-AREA)
END-EXEC.

IF EIBRESP = DFHRESP(ITEMERR)
    DISPLAY 'Item não encontrado.'.
END-IF.

📌 Regras

  • A leitura pode ser feita por índice (ITEM) ou sequencialmente (NEXT).

  • O comando não remove o item da fila, diferente do READQ TD.

  • A fila deve ter sido previamente preenchida com WRITEQ TS.

  • A leitura sequencial com NEXT pode se intercalar entre tarefas se não houver controle — isso exige lógica de serialização se a ordem for crítica.

  • A opção SET pode ser usada para alocação dinâmica de memória (com ponteiro).

  • Quando usada com SET, o parâmetro LENGTH é obrigatório.

💡 Dicas

  • Utilize NUMITEMS para saber quantos registros existem na fila antes de iterar.

  • Prefira QUEUE('NOME') para filas locais e SYSID('SYS') se estiver acessando filas remotas.

  • Use QNAME se precisar de nomes de fila com até 16 caracteres (substitui QUEUE).

🚨 Condições que podem ocorrer

  • ITEMERR: item não existe na fila.

  • QIDERR: nome de fila inválido ou não encontrado.

  • LENGERR: área INTO menor que o tamanho do registro.

  • SYSIDERR: erro ao acessar fila remota.

  • INVREQ, NOTAUTH, IOERR: erros operacionais ou de autorização.

Conclusão

READQ TS é uma ferramenta poderosa para leitura de dados armazenados temporariamente no CICS. Sua natureza não destrutiva o torna ideal para compartilhamento e reuso de dados entre programas. Ele oferece flexibilidade de leitura direta ou sequencial, com suporte a filas locais, remotas ou compartilhadas.