ARGUMENTS dbn (optional)The number of the database containing the record
DESCRIPTION Function d_rlbset is called to set the record lock bit of the current record. The data file which contains the record need not be locked. The db_VISTA runtime will automatically synchronize access to the record. The current record is accessed directly without using the cashe so that upon successfull completion of the call bit is physically set in the record on the disk. Function d_rlbset will return status S_UNAVAIL if the system cannot gain access to the data file (due to its being write or exclusive locked). Status S_LOCKED is returned if the current record's lock bit is already set. Status S_OKAY is returned when the function has succesfully set the lock bit If db_rlbset is called witin a transaction , the operation still goes directly to the file, bypassing use uf cashe.Thus, a d_trabort call does not undo any record lock bit settings which were performed within the transaction.
No records which have been locked by the programm should remain locked after the database is closed. The DATABASE CONSISTENCY CHECK utility. dbcheck, can be used to report all record occurences which have the lock bit set.
This function is present in the single user version of db_VISTA, but performs no action.This allows multi-user applications to link with the single user version for operation on stand-alone computer.
────────────────────────────────────────────────────────────────────────────── NOTE The setting of a record's lock bit will not automatically prevent another process from updating the locked record. It is the responsibility of the application to chek to see if a record occurence is locked before allowing updates to it either calling d_rlbset or d_rlbtst or cheking global integer variable rlb_status after reading the record's contens. ──────────────────────────────────────────────────────────────────────────────
CURRENCY CHANGES None.
RETURN CODES
0 S_OKAY The lock bit has been successfully set.
5 S_UNAVAIL System unable to get access to the current record's data file .Try again later.
8 S_LOCKED Current record's lock bit is already set.
-7 S_NOCR The cuurent record is null.
EXAMPLE /*fetch record to be modified*/ ... if(d_rblset()!=S_OKEY) /* unable to access record*/ ... else{ /*display record and allow user to edit it*/ ... d_trbegin("mod"); while(d_reclock(REC,"w")==S_UNAVAIL) ;/*wait for file's become available */ d_recwrite(&rec); /*update record*/ d_rlbclr(); /*unlock record*/ d_trend(); /*end transaction*/ }