🧠 Explicação

O comando EXEC CICS WRITEQ TS grava registros em uma fila de armazenamento temporário (TS Queue). Essas filas são utilizadas para guardar dados temporariamente no CICS, seja no armazenamento principal (MAIN) ou auxiliar (AUXILIARY), permitindo que os dados sejam lidos posteriormente com READQ TS. Diferente das filas TD, as filas TS não perdem os dados na leitura, e permitem múltiplos itens por fila.

🔧 Usos mais comuns

  • Armazenar dados temporários entre diferentes etapas de uma transação.

  • Compartilhar dados entre tarefas no mesmo sistema ou em sistemas remotos.

  • Guardar buffers, estruturas, listas ou tabelas em tempo de execução.

  • Substituir registros com REWRITE e controle via ITEM.

  • Saber quantos itens existem na fila com NUMITEMS.

🧾 Sintaxe

EXEC CICS WRITEQ TS
     QUEUE('FILA01')
     FROM(AREA-DADOS)
     LENGTH(TAMANHO)
END-EXEC.

Com item e substituição de conteúdo existente:

EXEC CICS WRITEQ TS
     QUEUE('FILA01')
     FROM(AREA-DADOS)
     LENGTH(TAMANHO)
     ITEM(NRO-ITEM)
     REWRITE
END-EXEC.

Com contador de itens após a gravação:

EXEC CICS WRITEQ TS
     QUEUE('FILA01')
     FROM(AREA-DADOS)
     LENGTH(TAMANHO)
     NUMITEMS(CONTADOR)
END-EXEC.

💻 Exemplo prático

MOVE 'Cliente 000123 cancelado por falta de pagamento' TO MSG-LOG.

EXEC CICS WRITEQ TS
     QUEUE('LOGTS01')
     FROM(MSG-LOG)
     LENGTH(50)
     NUMITEMS(QTDE-REGS)
END-EXEC.

DISPLAY 'Total de itens na fila: ' QTDE-REGS.

📌 Regras

  • QUEUE deve ter de 1 a 8 caracteres; QNAME aceita até 16.

  • FROM deve conter os dados a serem gravados.

  • LENGTH é obrigatório, especialmente para filas remotas (SYSID).

  • REWRITE exige que ITEM seja especificado.

  • NUMITEMS retorna a quantidade total de registros na fila após o WRITE.

  • AUXILIARY (padrão) usa armazenamento em disco; MAIN usa memória.

  • Se a fila já existe, MAIN ou AUXILIARY será ignorado.

  • Após um DELETEQ TS, não use WRITEQ TS antes de um SYNCPOINT.

💡 Dicas

  • Use MAIN para dados temporários que precisam de acesso rápido.

  • Prefira AUXILIARY para filas maiores e com persistência até final da transação.

  • NOSUSPEND evita que a tarefa fique travada caso não haja espaço suficiente — use com HANDLE NOSPACE.

  • WRITEQ TS pode ser combinado com RETRIEVE se usado dentro de EXEC CICS START.

🚨 Condições que podem ocorrer

  • QIDERR: nome da fila inválido ou inexistente.

  • ITEMERR: item informado em REWRITE não foi localizado.

  • LENGERR: tamanho informado não bate com o dado.

  • IOERR: falha de leitura/escrita no TS.

  • NOSPACE: sem espaço disponível para gravar.

  • LOCKED: fila bloqueada por outra tarefa.

  • SYSIDERR, INVREQ, NOTAUTH, ISCINVREQ: erros diversos.

✅ Conclusão

EXEC CICS WRITEQ TS é uma das formas mais seguras e flexíveis de armazenar dados temporariamente no CICS. Ele permite gravação controlada, substituição de registros e até leitura posterior sem perder os dados. Ideal para comunicação entre programas, buffers em tempo de execução e controle de processos — uma ferramenta indispensável em sistemas COBOL+CICS modernos.