🧠 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
RIDFLDexceto se for exclusão de registro lido comREAD UPDATE. -
Use
GENERICapenas com KSDS, nunca com RRDS. -
KEYLENGTHdeve ser menor que o tamanho da chave do VSAM seGENERICfor usado. -
Com
RBAouRRN, oRIDFLDdeve estar em formato binário. -
NUMRECretorna a quantidade de registros excluídos (KSDS). -
NOSUSPENDevita espera por bloqueios, mas pode gerarRECORDBUSY. -
TOKENassocia o DELETE ao registro lido emREAD UPDATE/BROWSE.
💡 Dicas
-
Use
GENERICcom cuidado para não consumir muitos locks. -
Em arquivos RLS, evite
DELETEem massa sem commit entre blocos. -
Com
READ UPDATE, prefiraTOKENaoRIDFLDpara 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.