[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 RLOCK()
 Lock the current record in the active work area
------------------------------------------------------------------------------
 Syntax

     RLOCK() --> lSuccess

 Returns

     RLOCK() returns true (.T.) if the record lock is obtained; otherwise, it
     returns false (.F.).

 Description

     RLOCK() is a network function that locks the current record, preventing
     other users from updating the record until the lock is released.
     RLOCK() provides a shared lock, allowing other users read-only access to
     the locked record while allowing only the current user to modify it.  A
     record lock remains until another record is locked, an UNLOCK is
     executed, the current database file is closed, or an FLOCK() is obtained
     on the current database file.

     For each invocation of RLOCK(), there is one attempt to lock the current
     record, and the result is returned as a logical value.  An attempt to
     obtain a record lock fails if another user currently has a file or
     record lock on that particular record, or EXCLUSIVE USE of the database
     file.  An attempt to RLOCK() in an empty database returns true (.T.).

     By default, RLOCK() operates on the currently selected work area.  It
     will operate on an unselected work area if you specify it as part of an
     aliased expression (see example below).  This feature is useful since
     RLOCK() does not automatically attempt a record lock for related files.

     As a general rule, RLOCK() operates solely on the current record.  This
     includes the following commands:

     .  @...GET

     .  DELETE (single record)

     .  RECALL (single record)

     .  REPLACE (single record)

     Refer to the "Network Programming" chapter in the Programming and
     Utilities Guide for more information.

 Notes

     .  SET RELATION: CA-Clipper does not automatically lock all
        records in the relation chain when you lock the current work area
        record.  Also, an UNLOCK has no effect on related work areas.

 Examples

     .  This example deletes a record in a network environment, using
        RLOCK():

        USE Customer INDEX CustName SHARED NEW
        SEEK "Smith"
        IF FOUND()
           IF RLOCK()
              DELETE
              ? "Smith deleted"
           ELSE
              ? "Record in use by another"
           ENDIF
        ELSE
           ? "Smith not in Customer file"
        ENDIF
        CLOSE

     .  This example specifies RLOCK() as an aliased expression to
        lock a record in an unselected work area:

        USE Sales SHARED NEW
        USE Customer SHARED NEW
        //
        IF !Sales->(RLOCK())
           ? "The current Sales record is in use by another"
        ENDIF

 Files   Library is CLIPPER.LIB.


See Also: APPEND BLANK SET EXCLUSIVE* UNLOCK USE
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson