🧠 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 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
-
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 queITEM
seja especificado. -
NUMITEMS
retorna a quantidade total de registros na fila após oWRITE
. -
AUXILIARY
(padrão) usa armazenamento em disco;MAIN
usa memória. -
Se a fila já existe,
MAIN
ouAUXILIARY
será ignorado. -
Após um
DELETEQ TS
, não useWRITEQ TS
antes de umSYNCPOINT
.
💡 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 comHANDLE NOSPACE
. -
WRITEQ TS
pode ser combinado comRETRIEVE
se usado dentro deEXEC CICS START
.
🚨 Condições que podem ocorrer
-
QIDERR
: nome da fila inválido ou inexistente. -
ITEMERR
: item informado emREWRITE
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
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.