Domingo 19 Mai 2024

A instrução REWRITE substitui logicamente um registro existente em um arquivo de acesso direto. Quando a instrução REWRITE é executada, o arquivo de acesso direto associado deve estar aberto no modo IO. Não é suportada para arquivos de seqüência de linha.

>>-REWRITE--record-name-1--+--------------------+--------------->
                           '-FROM--identifier-1-'
 
>--+------------------------------------------+----------------->
   '-INVALID--+-----+--imperative-statement-1-'
              '-KEY-'
 
>--+----------------------------------------------+------------->
   '-NOT INVALID--+-----+--imperative-statement-2-'
                  '-KEY-'
 
>--+-------------+---------------------------------------------><
   '-END-REWRITE-'

 

record-name-1

Deve ser o nome de um registro lógico em uma entrada FD da divisão de dados. O nome do registro pode ser qualificado.

 

FROM

O resultado da execução da instrução REWRITE com FROM identifier-1 frase é equivalente à execução das seguintes declarações na ordem especificada.

MOVE identifier-1 TO record-name-1.
REWRITE record-name-1    

O MOVE é executado de acordo com as regras para a instrução MOVE sem a frase CORRESPONDING.

 

identifier-1

identifier-1 pode fazer referência a um dos seguintes procedimentos:

  • Uma descrição de registro para outro arquivo anteriormente aberto
  • Uma função alfanumérica ou nacional
  • Um item de dados definido na seção de armazenamento de trabalho, na seção de armazenamento local ou na seção de ligação

identifier-1 deve ser um item de envio válido com record-name-1 como o item de recebimento, de acordo com as regras da declaração MOVE.

identifier-1 e record-name-1 não deve se referir à mesma área de armazenamento.

Após a declaração REWRITE é executado, a informação ainda está disponível no identifier-1.

 

INVALID KEY

Uma condição INVALID KEY existe quando:

  • O modo de acesso é sequencial e o valor contido na RECORD KEY principal do registro a ser substituído não é igual ao valor do item de dados principal RECORD KEY do último registro recuperado do arquivo;
  • O valor contido no prime RECORD KEY não é igual ao de qualquer registro no arquivo;
  • O valor de um item de dados ALTERNATE RECORD KEY para o qual DUPLICATES não é especificado é igual ao de um registro já no arquivo.

 

END-REWRITE

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

 

 

Reutilizando um registro lógico

Após a execução bem-sucedida de uma declaração REWRITE, o registo lógico não está mais disponível no record-name-1 a menos que o arquivo associado é chamado em SAME RECORD AREA.

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

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

 

Arquivos sequenciais

Para arquivos no modo de acesso sequencial, a última instrução de entrada / saída anterior executada para este arquivo deve ser uma instrução READ bem-sucedida. Quando a instrução REWRITE é executada, o registro recuperado por essa instrução READ é logicamente substituído.

O número de posições de caracteres em record-name-1 deve ser igual ao número de posições de caracteres no registro que está sendo substituído.

INVALID KEY não deve ser especificada para um arquivo com organização sequencial. Um procedimento EXCEPTION / ERROR pode ser especificado.

 

Arquivos indexados

O número de posições de caracteres em record-name-1 pode ser diferente do número de posições de caracteres no registro que está sendo substituído.

Quando o modo de acesso é sequencial, o registro a ser substituído é especificado pelo valor contido no prime RECORD KEY. Quando a instrução REWRITE é executada, esse valor deve ser igual ao valor do item de dados da chave de registro principal no último registro lido desse arquivo.

Tanto a frase INVALID KEY como um procedimento EXCEPTION / ERROR aplicável podem ser omitidos.

Quando o modo de acesso é aleatório ou dinâmico, o registro a ser substituído é especificado pelo valor contido na tecla RECORD KEY principal.

Os valores dos itens de dados ALTERNATE RECORD KEY no registro reescrito podem diferir daqueles no registro que está sendo substituído. O sistema garante que o acesso posterior ao registro pode ser baseado em qualquer uma das chaves de registro.

Se uma condição de inválido chave existir, a execução da instrução REWRITE não for bem sucedida, a operação de atualização não ocorre, e os dados no register-name-1 não é afetada.

 

Arquivos relativos

O número de posições de caracteres em record-name-1 pode ser diferente do número de posições de caracteres no registro que está sendo substituído.

Para arquivos relativos no modo de acesso sequencial, a frase INVALID KEY não deve ser especificada. Um procedimento EXCEPTION / ERROR pode ser especificado.

Para arquivos relativos no modo de acesso aleatório ou dinâmico, a frase INVALID KEY ou um procedimento EXCEPTION / ERROR aplicável pode ser especificado. Ambos podem ser omitidos.

Quando o modo de acesso é aleatório ou dinâmico, o registro a ser substituído é especificado no item de dados RELATIVE KEY. Se o arquivo não contiver o registro especificado, uma condição de chave inválida existe e, se especificada, a instrução imperativa INVALID KEY é executada. (Veja a condição de chave inválido em "instalações de processamento comuns".) A operação de actualização não ocorre, e os dados no registro de nomes não é afetado.