🧠 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:
CANCELnã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
DELAYde outra tarefa (liberar a tarefa antes do tempo). -
Anular um
STARTantes da transação ser iniciada. -
Descartar um
POSTprogramado 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 oREQIDdeve ser conhecido. -
Para cancelar
POSTda mesma tarefa:REQIDé ignorado. -
Para cancelar
POSTde outra tarefa:REQIDé obrigatório. -
Para cancelar
START: só funciona se a tarefa ainda não tiver sido iniciada. -
Um
STARTcom opçãoPROTECTsó é cancelado se tiver sido confirmado. -
Cancelamentos de
STARTpodem receberNOTFND, 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
REQIDsempre 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.