🧠 Explicação
O comando EXEC CICS DELETE
é utilizado para excluir registros de arquivos no CICS, como VSAM KSDS, RRDS ou tabelas mantidas na memória (CICS ou usuário). A exclusão pode ser feita por chave (RIDFLD), por chave genérica (GENERIC + KEYLENGTH) ou por endereço relativo (RBA ou RRN).
É possível também excluir um registro lido com READ UPDATE
, usando o TOKEN
correspondente.
Esse comando é threadsafe apenas em alguns contextos (ex.: arquivos VSAM locais com RLS ou via IPIC remoto).
🛠️ Usos mais comuns
-
Excluir um registro específico com base na chave primária (KSDS).
-
Remover um grupo de registros com chave genérica (
GENERIC
). -
Deletar registros previamente lidos com
READ UPDATE
, usando oTOKEN
. -
Excluir registros de tabelas mantidas pelo CICS (ou pelo usuário).
🧾 Sintaxe
EXEC CICS DELETE
FILE(nome-arquivo)
[RIDFLD(campo-chave-ou-RBA-ou-RRN)]
[GENERIC]
[KEYLENGTH(tamanho-chave)]
[RBA]
[RRN]
[NUMREC(num-registros)]
[NOSUSPEND]
[TOKEN(token-associado)]
[SYSID(nome-sistema)]
END-EXEC.
💻 Exemplo prático em COBOL
01 ACCTNO PIC X(10).
01 NUMDEL PIC 9(4) COMP.
01 TAMCHAVE PIC 9(4) COMP.
MOVE 5 TO TAMCHAVE.
EXEC CICS DELETE
FILE('MASTVSAM')
RIDFLD(ACCTNO)
KEYLENGTH(TAMCHAVE)
GENERIC
NUMREC(NUMDEL)
END-EXEC.
Esse exemplo remove todos os registros do arquivo MASTVSAM
cuja chave começa com o valor de ACCTNO
(5 primeiros caracteres).
📜 Regras
-
Obrigatório especificar
RIDFLD
exceto se for exclusão de registro lido comREAD UPDATE
. -
Use
GENERIC
apenas com KSDS, nunca com RRDS. -
KEYLENGTH
deve ser menor que o tamanho da chave do VSAM seGENERIC
for usado. -
Com
RBA
ouRRN
, oRIDFLD
deve estar em formato binário. -
NUMREC
retorna a quantidade de registros excluídos (KSDS). -
NOSUSPEND
evita espera por bloqueios, mas pode gerarRECORDBUSY
. -
TOKEN
associa o DELETE ao registro lido emREAD UPDATE
/BROWSE
.
💡 Dicas
-
Use
GENERIC
com cuidado para não consumir muitos locks. -
Em arquivos RLS, evite
DELETE
em massa sem commit entre blocos. -
Com
READ UPDATE
, prefiraTOKEN
aoRIDFLD
para deletar o registro lido. -
NOSUSPEND
é útil para evitar que a tarefa fique aguardando se o registro estiver bloqueado, mas exige controle de erro comRECORDBUSY
.
✅ Conclusão
O comando EXEC CICS DELETE
é essencial para a manipulação de dados transacionais em CICS, permitindo a exclusão precisa ou em lote de registros de arquivos e tabelas. Com suas múltiplas opções, possibilita operações seguras, desde que respeitadas as regras de concorrência, lock e integridade. Um comando poderoso para gerenciar o ciclo de vida de registros no ambiente mainframe.