REPLACE
 Atribui novos valores a variáveis campo
------------------------------------------------------------------------------

 Sintaxe

     REPLACE <idCampo> WITH <exp>
        [, <idCampo2> WITH <exp2>...]
        [<abrangência>] [WHILE <lCondiçao>] [FOR <lCondiçao>]

 Argumentos

     <idCampo> é o nome da variável campo à qual será atribuído novo
     valor.  Se <idCampo> for precedido de um alias, a atribuiçao ocorre na
     área de trabalho designada.

     <exp> é o valor a ser atribuído a <idCampo>.

     <abrangência> é a parte do arquivo de dados corrente onde atuará o
     comando REPLACE.  Sendo especificada uma condiçao, o assumido será
     todos (ALL) os registros na área de trabalho corrente.

     WHILE <lCondiçao> especifica o conjunto de registros que atendem a
     condiçao do registro corrente, até que a condiçao seja falsa.

     FOR <lCondiçao> especifica o conjunto condicional de registros
     sobre os quais atuará o comando REPLACE dentro da abrangência.

 Descriçao

     O comando REPLACE atribui novos valores aos conteúdos de uma ou mais
     variáveis campo nos registros correntes nas áreas de trabalho
     especificadas.  As variáveis campo destino podem ser do tipo caractere,
     data, lógico, memo, ou numérico.  O comando REPLACE tem a mesma funçao
     que o operador inline (:=) com a diferença que ele assume que uma
     referência sem um alias é sempre para uma variável campo.  Isto
     significa que você pode atribuir novos valores a variáveis campo usando
     declaraçoes de atribuiçao, desde que as referências a variáveis campo
     sejam precedidas de um alias, o alias do campo, ou declaradas através
     de declaraçao de comando do campo, caso a referência seja ambígua.

     A abrangência padrao do comando REPLACE é o registro corrente, a nao
     ser que seja especificada uma abrangência ou condiçao.  Caso haja
     abrangência ou condiçao especificadas, o comando REPLACE atua em cada
     registro que atenda a condiçao e/ou abrangência.

     -----------------------------------------------------------------------
     . Aviso

     Ao usar o comando REPLACE num campo chave, o índice é atualizado e a
     posiçao relativa do ponteiro de registro dentro do índice é
     modificada.  Isto significa que utilizar o comando REPLACE num campo
     chave com uma abrangência ou condiçao pode ocasionar um resultado
     errôneo.  Para atualizar um campo chave, use o comando SET ORDER TO 0
     antes do comando REPLACE.  Isto assegura que o ponteiro de registro
     mova-se sequencialmente em ordem natural.  Todos os índices abertos,
     porém, sao atualizados se o comando REPLACE for usado no campo chave.
     -----------------------------------------------------------------------

     Num ambiente de Rede, usar o comando REPLACE no registro corrente
     requer a funçao RLOCK().  Executar o comando REPLACE com uma
     abrangência e/ou condiçao exige um FLOCK() ou USE EXCLUSIVE do arquivo
     de dados corrente.  Caso o comando REPLACE estiver sendo executado em
     outra área de trabalho através da especificaçao de seu alias, esse
     registro também deve ser travado com um RLOCK(). Consulte o capítulo
     Programando em Rede no livro Programando e Utilitários para mais
     informaçoes.

 Exemplos

       Este exemplo ilustra um uso simples do comando REPLACE:

        USE Customer NEW
        APPEND BLANK
        USE Invoices NEW
        APPEND BLANK
        //
        REPLACE Charges WITH Customer->Markup * Cost,;
           Custid WITH Customer->Custid,;
           Customer->TranDate WITH DATE()

       Ao usar declaraçoes de atribuiçao em lugar do comando REPLACE
        siga o seguinte exemplo:

        FIELD->Charges := Customer->Markup * FIELD->Cost
        FIELD->Custid := Customer->Custid
        Customer->TranDate := DATE()

 Arquivos:  Biblioteca CLIPPER.LIB.
 To download this example - click here.

See Also: COMMIT FLOCK() RLOCK()