Lock files are used in Elliott to prevent users from entering transactions when other users are posting, to prevent users from entering transactions when invoices are printed, or to prevent multiple people from printing purchase orders at the same time. For the lock file to work, it must meet the following conditions:
It should be an indexed file with the lock mode set to manual:
ASSIGN TO RANDOM SYLCKFIL-PATH
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
LOCK MODE IS MANUAL
RECORD KEY IS LOCK-KEY
FILE STATUS IS LOCK-FILE-STATUS.
The declarative should be coded like the following example so the application code can intercept a lock condition and give the user the appropriate error message:
USE AFTER STANDARD ERROR PROCEDURE ON
Notice that there is no error procedure.
To lock the file exclusively, the file should be opened I-O with lock. This is the same as using LOCK MODE IS EXCLUSIVE in the Select statement.
MOVE PASSING-DATA-PATH TO SYLCKFIL-PATH.
OPEN I-O LOCK-FILE WITH LOCK.
The file naming convention must be ??LCK??? and the length of the record must be 24 bytes for the file handler to recognize that a lock file is being processed.