QMReadl()

Top  Previous  Next

 

The QMReadl() function reads a record with a shareable read lock.

 

 

Format

 

VBQMReadl(ByVal FileNo as Integer, ByVal Id as String, ByVal Wait as Boolean, ByRef Errno as Integer) as String

 

Cchar * QMReadl(int FileNo, char * Id, int Wait, int * Errno)

 

ObjStr = Session->Readl(FileNo, Id, Wait, Errno)

 

where

 

FileNois the file number returned by a previous QMOpen() call.

 

Idis the id of the record to be read.

 

Waitis a boolean value indicating the action to be taken if the record is currently locked by another user:
Truewait for the record to become available
Falsereturn an error code of SV_LOCKED

 

Errnois an integer variable to receive status information.

 

 

The QMReadl() function requests the server to return the record with key Id from the file opened as FileNo. A shareable read lock is applied to the record. Any number of users may hold a shareable read lock on the same record at one time but, while any user has a shareable read lock, no other user can establish an update lock or a file lock.

 

If the action is blocked by a lock held by another user, the function returns a null string and the Errno variable is set to SV_LOCKED. The QMStatus() function can be used to retrieve the user number of the process holding the lock.

 

If successful, the function returns the record as a dynamic array string and the Errno variable is set to SV_OK. The record is locked by the server process.

 

If the record cannot be found, the function returns a null string and the Errno variable is set to SV_ELSE. The QMStatus() function can be used to retrieve the error number. The record is locked by the server process. If the lock is not required, it should be released using the QMRelease() function.

 

Conditions that would normally cause a QMBasic program to abort or to take the ON ERROR clause of a READ statement return a null string and the Errno variable is set to SV_ON_ERROR. The QMStatus() function can be used to retrieve the error number.

 

In the C API library, the dynamic memory allocated for the returned string must subsequently be freed by the calling program.