*!********************************************************
*! Function: REC_LOCK
*!
*! Calls: ABORTRLOCK
*!
*!*******************************************************
FUNCTION rec_lock
PUBLIC abort_rlock
STORE 0 TO retries
STORE .F. TO islocked
STORE .F. TO abort_rlock
SET ESCAPE ON
ON ESCAPE DO abortrlock
DO WHILE retries <= 10 .AND. !abort_rlock
IF RLOCK()
STORE .T. TO islocked
EXIT
ELSE
retries = retries + 1
WAIT WINDOW 'Attempting to lock record...' + LTRIM(STR(retries)) + '/10'NOWAIT
STORE .F. TO islocked
ENDIF ( RLOCK() )
ENDDO ( retries <= 10 .AND. !abort_rlock )
IF !islocked
WAIT WINDOW "Unable to lock record' TIMEOUT 3
ENDIF
SET ESCAPE OFF
RETURN islocked
*: end proc
*!*********************************************************
*! Procedure: ABORTRLOCK
*!
*! Called by: REC_LOCK() (function in STRATPRC.PRG)
*!
*!*********************************************************
PROCEDURE abortrlock
ON ESCAPE
SET ESCAPE OFF
abort_rlock = .T.
WAIT WINDOW "Lock request aborted." TIMEOUT 2
RETURN
*: end proc