🧠 Explicação
O comando EXEC CICS DEQ
é utilizado para liberar (desenfileirar) um recurso previamente reservado por uma tarefa com o comando ENQ
. Isso permite que outras tarefas possam acessar o recurso de forma segura, evitando conflitos de acesso simultâneo.
O recurso pode ser identificado por qualquer sequência de 1 a 255 bytes (como um nome, chave ou código) e deve ser o mesmo utilizado no enfileiramento (ENQ
).
Esse comando é thread-safe somente quando o recurso é tratado com escopo LOCAL. Se for GLOBAL (no escopo do sysplex), o comando não é thread-safe.
🛠️ Usos mais comuns
-
Garantir que recursos compartilhados sejam liberados após o uso.
-
Evitar conflitos entre tarefas que acessam o mesmo dado ou serviço.
-
Controlar a sincronização entre tarefas em sistemas CICS locais ou distribuídos.
🧾 Sintaxe
EXEC CICS DEQ
RESOURCE(nome-do-recurso)
[LENGTH(tamanho)]
[MAXLIFETIME(CVDA)]
END-EXEC.
💻 Exemplo prático em COBOL
01 NOME-RECURSO PIC X(09) VALUE 'SOCSEC001'.
01 TAM-RECURSO PIC S9(4) COMP VALUE 9.
EXEC CICS DEQ
RESOURCE(NOME-RECURSO)
LENGTH(TAM-RECURSO)
END-EXEC.
Esse exemplo libera o recurso SOCSEC001
que foi anteriormente enfileirado com o mesmo nome e comprimento.
📋 Parâmetros e opções
Opção | Descrição |
---|---|
RESOURCE(área-de-dados) |
Identifica o recurso que será liberado. Pode ser qualquer string de até 255 bytes. |
LENGTH(valor) |
Define o tamanho do nome do recurso. Deve ser o mesmo usado no ENQ . Válido de 1 a 255. |
MAXLIFETIME(CVDA) |
Indica se o ENQ foi feito com escopo da tarefa (TASK ) ou unidade de trabalho (UOW ). Valor padrão: UOW . |
📌 Regras
-
Se o
ENQ
usou a opçãoLENGTH
, oDEQ
também deve usar e com o mesmo valor. -
O
DEQ
só terá efeito se a tarefa realmente enfileirou o recurso. -
Recursos enfileirados e não desenfileirados são liberados automaticamente no final da tarefa ou no ponto de sincronização.
-
Usar DEQ com escopo GLOBAL pode gerar afinidades de transação indesejadas (afeta o roteamento dinâmico de transações).
💡 Dicas
-
Sempre desenfileire recursos que foram enfileirados — evite dependência da liberação automática.
-
Use nomes de recursos padronizados e de tamanho fixo para facilitar a manutenção do código.
-
Utilize
MAXLIFETIME(TASK)
para liberar o recurso somente ao fim da tarefa inteira, se necessário. -
Se estiver trabalhando com escopo GLOBAL, consulte a definição de ENQMODEL e avalie o impacto.
✅ Conclusão
O comando EXEC CICS DEQ
é fundamental para a coordenação segura de acesso a recursos compartilhados entre tarefas. Ele garante que recursos reservados sejam liberados corretamente, evitando conflitos e bloqueios indevidos. Sua utilização correta, sempre em conjunto com o comando ENQ
, melhora a performance e a confiabilidade de aplicações CICS multiusuário.