Alternatives to Clear Physical File Member
February 1, 2006 Ted Holt
Suppose a file of summary figures is used for inquiry throughout the day and is repopulated with the latest information on the hour. How do you clear the file, a process which requires an exclusive lock, while the inquiry program is in use? This is the type of problem I have faced several times, and here are a couple of ways I have addressed it.
One method is to place an activity code field in the file, with values of A and D, for example, to indicate active and deleted records. The inquiry program uses a logical file to select active records only.
A R SOMEREC PFILE(SOMEPF) A K CUSTNO A K TRANSDATE A S RECCODE CMP(EQ 'A')
Reloading the file is a two-step process: First, change the activity code to the deletion value. Second, write new data to the file.
The other method I have used is similar, but does not require the file to have an activity field. This method is also a two-step process. First, delete all the records in the file. You might use a generic program, like this one:
* Delete all records in a file FDBFile UF F 80 DISK DDS DS 80 C DOU *INLR C READ DBFile DS LR C IF NOT *INLR C DELETE DBFile C ENDIF C ENDDO
Or, if you prefer shorter programs, this one:
* Delete all records in a file FDBFile up f 80 disk IDBFile ns 01 ODBFile ddel 01
Before calling the program, override to the file whose records are to be deleted.
OVRDBF FILE(DBFILE) TOFILE(SALES) CALL PGM(DLTRCDS) DLTOVR FILE(DBFILE)
Second, write new data to the file.
In either case, the file accumulates more and more physically or logically deleted records throughout the day. At some point, such as during nightly or weekend processing, the file will need to be cleared.