🧠 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
REWRITEe controle viaITEM. -
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
-
QUEUEdeve ter de 1 a 8 caracteres;QNAMEaceita até 16. -
FROMdeve conter os dados a serem gravados. -
LENGTHé obrigatório, especialmente para filas remotas (SYSID). -
REWRITEexige queITEMseja especificado. -
NUMITEMSretorna a quantidade total de registros na fila após oWRITE. -
AUXILIARY(padrão) usa armazenamento em disco;MAINusa memória. -
Se a fila já existe,
MAINouAUXILIARYserá ignorado. -
Após um
DELETEQ TS, não useWRITEQ TSantes de umSYNCPOINT.
💡 Dicas
-
Use
MAINpara dados temporários que precisam de acesso rápido. -
Prefira
AUXILIARYpara filas maiores e com persistência até final da transação. -
NOSUSPENDevita que a tarefa fique travada caso não haja espaço suficiente — use comHANDLE NOSPACE. -
WRITEQ TSpode ser combinado comRETRIEVEse usado dentro deEXEC CICS START.
🚨 Condições que podem ocorrer
-
QIDERR: nome da fila inválido ou inexistente. -
ITEMERR: item informado emREWRITEnã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
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.