READL |
![]() ![]() ![]() |
The READL statement reads a record from a previously opened file, setting a read lock.
Format
READL var FROM file.var, record.id {ON ERROR statement(s)} {LOCKED statement(s)} {THEN statement(s)} {ELSE statement(s)}
where
At least one of the THEN and ELSE clauses must be present.
The specified record is read into the named variable and a read lock is set. See Locks for full details of QM's locking mechanism.
The LOCKED clause is executed if the file or record is exclusively locked by another process. The STATUS() function will return the user id of a process holding a lock on this file or record. If the LOCKED clause is omitted and the file or record is locked, the program will wait for the lock to be released.
The THEN clause is executed if the READL is successful.
The ELSE clause is executed if the READL fails because no record with the given id is present on the file. If the PICK.READ mode of the $MODE directive is used var will be left unchanged, otherwise it will be set to a null string. The STATUS() function will indicate the cause of the error.
The ON ERROR clause is executed for serious fault conditions such as errors in a file's internal control structures. The STATUS() function will return an error number. If no ON ERROR clause is present, an abort would occur.
Example
READL ITEM FROM STOCK, ITEM.ID THEN ...processing statements... WRITE ITEM TO STOCK, ITEM.ID END ELSE DISPLAY "Record " : ITEM.ID : " not found" RELEASE STOCK, ITEM.ID END
This program fragment reads a record from the a file previously opened to file variable. STOCK into variable ITEM, setting a read lock on the record. If successful, the processing statements are executed. If the record is not found, a message is displayed and the lock is released. |