🧠 Explicação

O comando EXEC CICS WRITEQ TD grava dados em uma fila de dados transitórios (TD Queue). Essas filas são usadas para saída de mensagens, registros de log, comunicação entre tarefas ou até impressão. Os dados são escritos de forma sequencial e a fila deve estar previamente definida no CICS.

🔧 Usos mais comuns

  • Registrar logs de processamento ou mensagens de erro.

  • Enviar dados para dispositivos de saída (ex: impressoras, saídas externas).

  • Comunicar tarefas via filas do tipo intra-partição.

  • Armazenar mensagens que serão processadas por tarefas em lote.

  • Gravar eventos ou registros para auditoria.

🧾 Sintaxe

EXEC CICS WRITEQ TD
     QUEUE('TD01')
     FROM(AREA-DADOS)
     LENGTH(TAMANHO)
END-EXEC.

Especificando sistema remoto:

EXEC CICS WRITEQ TD
     QUEUE('TD02')
     FROM(AREA-REMOTA)
     LENGTH(200)
     SYSID('CICR')
END-EXEC.

💻 Exemplo prático

MOVE 'ERRO DE PROCESSAMENTO NO CLIENTE 000123' TO MENSAGEM-LOG.

EXEC CICS WRITEQ TD
     QUEUE('LOG1')
     FROM(MENSAGEM-LOG)
     LENGTH(40)
END-EXEC.

📌 Regras

  • QUEUE deve ser o nome simbólico da fila TD (1 a 4 caracteres), já definida no CICS.

  • FROM indica a área da memória que contém os dados a serem gravados.

  • LENGTH deve conter o tamanho dos dados que serão escritos.

  • Com SYSID, a gravação será feita em fila remota (via IPIC, se for thread-safe).

  • A gravação é destrutiva: o dado será consumido e retirado da fila quando lido.

  • TD Queue deve estar habilitada e corretamente configurada.

💡 Dicas

  • Verifique se a fila está definida como intra-partition (para comunicação local) ou extra-partition (para impressão, saída externa, etc).

  • Combine com HANDLE CONDITION para capturar falhas como NOSPACE ou QIDERR.

  • Utilize nomes padronizados de filas para facilitar manutenção e leitura de logs.

  • Se o volume de escrita for alto, use buffers e controle de tamanho para não estourar espaço.

🚨 Condições que podem ocorrer

  • DISABLED: fila desativada.

  • QIDERR: nome da fila inválido ou não definido.

  • LENGERR: tamanho do dado incorreto.

  • IOERR: erro de entrada/saída ao gravar.

  • NOSPACE: sem espaço disponível na fila.

  • LOCKED: recurso bloqueado.

  • NOTOPEN: fila não está aberta.

  • INVREQ, ERROR, SYSIDERR, ISCINVREQ, NOTAUTH: outros erros operacionais ou de permissão.

✅ Conclusão

EXEC CICS WRITEQ TD é o comando ideal para gravação de dados em filas temporárias no CICS, sendo amplamente utilizado para logs, comunicação entre tarefas ou saída de dados para dispositivos. É direto, eficiente e essencial em qualquer sistema bem estruturado com CICS. Usou, gravou — e o próximo programa já pode consumir.