If you're adding records to an indexed file, it's a common practice to check
for the existence of a key before you attempt to add a new record. If you're
also processing the same file sequentially by key, the routine that checks for
the existence of a key can cause your program to loose the record pointer used
to process the file sequentially.
I've created a solution for this type of situation. It works by defining the
file twice in the program. For instance, if the file that you want to process
is called FILE1 and the HLL is RPG, do the following.
On a command line or using a CL program, override a file name such as FILE2 to
FILE1. In the RPG program, specify FILE1 as you normally would and add a second
F-spec with file name FILE2. If FILE1 is externally described, add an F-spec
continuation specification to rename the record format of FILE2 to something
like NEWFMT. As you read FILE1, check for the existence of the new record in
FILE2. If it doesn't exist, delete the record from FILE1 and write a record to
FILE2 (record format NEWFMT). Both input and output will be happening to the
same file. Since you're using two different access paths to the same data, you
don't have to worry about the file pointer being affected. (You must override
FILE2 to FILE1 before you can compile the program.)
--Mike Midkiff
LATEST COMMENTS
MC Press Online