RLOCK()
 Trava o registro corrente na área de trabalho ativa
------------------------------------------------------------------------------

 Sintaxe

     RLOCK() --> lSucesso

 Retorno

     RLOCK() retorna verdadeiro (.T.) se for obtido o travamento do
     registro; caso contrário, retorna falso (.F.).

 Descriçao

     RLOCK() é uma funçao de tratamento de rede utilizada para travar o
     registro corrente, evitando que outros usuários atualizem o registro
     até que o travamento seja liberado.  RLOCK() fornece um travamento
     compartilhado, permitindo a outros usuários acesso somente para leitura
     e, ao mesmo tempo, permitindo somente ao usuário corrente modificá-lo.
     Um travamento de registro permanece ativo até que outro registro seja
     travado, um UNLOCK seja executado, o arquivo de banco de dados corrente
     seja fechado, ou um FLOCK() seja obtido no arquivo de banco de dados
     corrente.

     Para cada invocaçao de RLOCK() há uma tentativa de travar o registro
     corrente, e o resultado é retornado na forma de um valor lógico.  Uma
     tentativa de obter um travamento de registro falha se outro usuário tem
     um travamento de registro ou arquivo correntemente, ou USo EXCLUSIVo do
     arquivo de banco de dados.

     O padrao é que a funçao RLOCK() opere na área de trabalho correntemente
     selecionada.  Pode-se fazê-la operar em uma área de trabalho nao
     selecionada se esta for especificada em uma expressao alias (veja o
     exemplo abaixo).  Esta característica é útil porque RLOCK() nao tenta
     automaticamente um travamento de registro para arquivos relacionados.

     Regra geral, RLOCK() é utilizada para operaçoes que operam somente no
     registro corrente.  Isto inclui os seguintes comandos:

       @...GET

       DELETE (um só registro)

       RECALL (um só registro)

       REPLACE (um só registro)

     Consulte o capítulo Programando em Rede no livro Programando e
     Utilitários para mais informaçoes.

 Notas

       SET RELATION: O Clipper nao trava automaticamente todos
        os registros na cadeia de relacionamentos quando você trava o
        registro da área de trabalho corrente.  Da mesma forma, um UNLOCK
        nao tem efeito algum sobre áreas de trabalho relacionadas.

 Exemplos

       Este exemplo demonstra como um registro pode ser eliminado em
        um ambiente de rede usando-se RLOCK():

        USE Customer INDEX CustName SHARED NEW
        SEEK "Smith"
        IF FOUND()
           IF RLOCK()
              DELETE
              ? "Smith eliminado"
           ELSE
              ? "Registro em uso"
           ENDIF
        ELSE
           ? "Smith nao esta no arquivo Customer"
        ENDIF
        CLOSE

       Este exemplo ilustra como especificar RLOCK() como uma
        expressao alias para travar um registro em uma área de trabalho nao
        selecionada:

        USE Sales SHARED NEW
        USE Customer SHARED NEW
        //
        IF !Sales->(RLOCK())
           ? "O registro corrente esta em uso"
        ENDIF

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

See Also: FLOCK() APPEND BLANK SET EXCLUSIVE* UNLOCK USE