The matreadu form of the matread statement tests if an item is already locked and locks the item if it is not. The item lock set by matreadu prevents the item from being read using the matreadu statement or updated by other processes while the lock is set.
Syntax
matreadu array.var from {file.var,} ID.exp {locked statement.block} {then|else statement.block} |
Description
This statement can optionally be written matread or read. If mat is omitted, a matrix read can be determined by the definition of the variable, array.var. If no dim statement appears, it is automatically treated as a dynamic array.
If the matreadu form is specified and no locked clause is present, the program pauses (and beeps continuously) at the locked item until it is available. If a locked clause is specified, the statements in the locked clause are executed if the item is already locked by another process or the current process at a different level. system(0) contains the port number that has the item locked. For backwards compatibility, system(0) in the locked clause also returns the port number that has the item locked.
The item lock is only released by a release, delete, or matwrite statement.
NOTE |
|
WARNING |
Using a matreadu from a program that is called from dictionary item is not recommended. |
Example(s)
dim customer.item(20) matreadu customer.item from cust.fv,item-ID locked crt item-ID:’ is locked by port ’:system(0) end then crt ’got it’ end else crt ’not on file’ end |
See Also