🧠 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 oREQID
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çãoPROTECT
só é cancelado se tiver sido confirmado. -
Cancelamentos de
START
podem 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
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.