COBOL - Comando DELETE - www.cadcobol.com.br


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

DELETE

A instrução DELETE remove um registro de um arquivo indexado ou relativo.
Para arquivos indexados, a chave pode ser reutilizada para adição de registro.
Para arquivos relativos, o espaço fica disponível para um novo registro com o mesmo valor de RELATIVE KEY.

Quando a instrução DELETE é executada, o arquivo associado deve ser aberto no modo I-O.

Excluindo registros de um arquivo VSAM

Para remover um registro existente de um arquivo indexado ou relativo, abra o arquivo I-O e use a declaração DELETE.
Você não pode usar DELETE em um arquivo sequencial.

Quando você usa o ACCESS IS SEQUENTIAL ou o arquivo contém registros estendidos, seu programa deve primeiro ler o registro a ser excluído.
O DELETE em seguida, remove o registro que foi lido.
Se o DELETE não é precedido por um READ com sucesso, a exclusão não é feita e o valor da chave de status é definido como 92.

Quando você usa o ACCESS IS RANDOM ou ACCESS IS DYNAMIC, seu programa não precisa primeiro ler o registro a ser excluído.
Para excluir um registro, mova a chave do registro a ser excluído para o RECORD KEY item de dados e, em seguida, emitir o DELETE.
Seu programa deve verificar a chave de status do arquivo após cada declaração DELETE (FILE STATUS).



Formato

file-name-1
Deve ser definido em uma entrada FD na DATA DIVISION e deve ser o nome de um arquivo indexado ou relativo.
Após a execução bem-sucedida de uma instrução DELETE, o registro é removido do arquivo e não pode mais ser acessado.

A execução da instrução DELETE não afeta o conteúdo da área de registro associada ao file-name-1 ou o conteúdo do item de dados referenciado pelo nome do dado especificado na frase DEPENDING ON da cláusula RECORD associada ao file-name-1 .

Se a cláusula FILE STATUS for especificada na entrada de controle de arquivo, a chave de status do arquivo associado será atualizada quando a instrução DELETE for executada.

O indicador de posição do arquivo não é afetado pela execução da instrução DELETE.

Sequential access mode - Modo de acesso sequencial
Para um arquivo no modo de acesso seqüencial, a instrução de entrada / saída anterior deve ser uma instrução READ executada com sucesso.
Quando a instrução DELETE é executada, o sistema remove o registro que foi recuperado pela instrução READ.

Para um arquivo no modo de acesso seqüencial, as frases INVALID KEY e NOT INVALID KEY não devem ser especificadas.
Um procedimento de EXCEPTION/ERROR (EXCEÇÃO / ERRO) pode ser especificado.

Random or dynamic access mode - Modo de acesso aleatório ou dinâmico
No modo de acesso aleatório ou dinâmico, os resultados da execução da instrução DELETE dependem da organização do arquivo: indexada ou relativa.

Quando a instrução DELETE é executada, o sistema remove o registro identificado pelo conteúdo do item de dados principal RECORD KEY para arquivos indexados ou o item de dados RELATIVE KEY para arquivos relativos.
Se o arquivo não contiver esse registro, existe uma condição INVALID KEY.

A frase INVALID KEY e um procedimento EXCEPTION / ERROR aplicável podem ser omitidos.

A transferência de controle após a execução bem-sucedida de uma instrução DELETE, com a frase NOT INVALID KEY especificada, é para a instrução imperativa associada à frase.

END-DELETE
Esse terminador de escopo explícito serve para delimitar o escopo da instrução DELETE.
END-DELETE permite que uma instrução DELETE condicional seja aninhada em outra instrução condicional.
END-DELETE também pode ser usado com uma instrução DELETE imperativa.

Exemplo:

IDENTIFICATION DIVISION.
PROGRAM-ID. COBLDELT.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.

FILE-CONTROL.
    SELECT STUDENT ASSIGN TO STD-FILE
    ORGANIZATION IS INDEXED
    ACCESS IS RANDOM
    RECORD KEY IS STUDENT-ID
    FILE STATUS IS FS.

DATA DIVISION.

FILE SECTION.
FD STUDENT
01 STUDENT-FILE.
   05 STUDENT-ID PIC 9(4).
   05 NAME PIC A(12).
   05 RANK PIC X(3).

WORKING-STORAGE SECTION.

01 FILE STATUS  PIC X(02) VALUE SPACES.

PROCEDURE DIVISION.

   OPEN I-O STUDENT.
   MOVE '1111' TO STUDENT-ID.

   DELETE STUDENT RECORD
      INVALID KEY DISPLAY 'Invalid Key'
      NOT INVALID KEY DISPLAY 'Record Deleted'
   END-DELETE.

   CLOSE STUDENT.
   STOP RUN.