🧠 Explicação
O comando EXEC CICS CANCEL é utilizado para cancelar comandos previamente emitidos do tipo DELAY, POST ou START. Seu objetivo é invalidar ou interromper solicitações pendentes antes que sejam executadas ou honradas pelo CICS.

O efeito prático depende do comando original sendo cancelado:

  • DELAY: a tarefa suspensa é liberada como se o tempo tivesse expirado.

  • POST (mesma tarefa): a solicitação é descartada.

  • POST (outra tarefa): a outra tarefa é liberada como se o tempo tivesse expirado.

  • START: o comando START é anulado se ainda estiver pendente.

Importante: CANCEL não pode ser usado para remover uma solicitação local já enfileirada e tem restrições em cenários de roteamento dinâmico de transações.

🛠️ Usos mais comuns

  • Cancelar um DELAY de outra tarefa (liberar a tarefa antes do tempo).

  • Anular um START antes da transação ser iniciada.

  • Descartar um POST programado erroneamente ou desnecessário.

  • Evitar execução futura de comandos START com dados sensíveis.

🧾 Sintaxe

EXEC CICS CANCEL
     [REQID(nome-identificador)]
     [SYSID(nome-sistema)]
     [TRANSID(nome-transacao)]
END-EXEC.

💻 Exemplo prático em COBOL

EXEC CICS CANCEL
     REQID('REQ123')
END-EXEC.

Neste exemplo, o comando cancela uma solicitação pendente identificada pelo nome REQ123.

📋 Parâmetros

Parâmetro Tipo Descrição
REQID X(8) Identificador único da solicitação (DELAY, POST, START) a ser cancelada.
SYSID X(4) Nome do sistema remoto, se aplicável.
TRANSID X(4) Transação usada para determinar onde o CANCEL será executado.

⚠️ Regras

  • Para cancelar DELAY: a tarefa suspensa deve ser outra e o REQID deve ser conhecido.

  • Para cancelar POST da mesma tarefa: REQID é ignorado.

  • Para cancelar POST de outra tarefa: REQID é obrigatório.

  • Para cancelar START: só funciona se a tarefa ainda não tiver sido iniciada.

  • Um START com opção PROTECT só é cancelado se tiver sido confirmado.

  • Cancelamentos de START podem receber NOTFND, o que significa que a requisição não está mais pendente, mas pode ainda estar em execução.

  • Não cancela comandos locais já executados.

💡 Dicas

  • Use REQID sempre que precisar garantir controle sobre comandos START e DELAY.

  • Ideal para fluxos onde o tempo de espera depende de eventos externos.

  • Evite reaproveitar o mesmo REQID imediatamente após o CANCEL: a fila pode ainda existir, causando erro AEIQ.

  • Combine CANCEL com lógica de verificação (EIBRESP) para garantir consistência no controle de tarefas.

✅ Conclusão
O comando EXEC CICS CANCEL é essencial para controlar e interromper comandos temporizados ou agendados, como START, POST e DELAY. Ele oferece flexibilidade e segurança para fluxos assíncronos no CICS, permitindo reagir a condições externas e cancelar ações pendentes antes que afetem o processamento.