Here are a few ideas:
1. Journal the file. Depending on OS version there are options to not record
"non-changes". This would arguably perform the fastest. Refer to Chuck's
answer for other details.
2. Write a "trigger program generator", which would perform reasonably well
as long as not in *NEW activation group and doesn't seton LR, which would
a) A skeleton with the invariant bits, and place markers for the variant
b) A mechanism for replacing parts of lines and inserting whole lines that
could be run from an input parameter of the file name and library name, and
could involve reading in a DSPFFD outfile, or calling a slightly complex
c) Regenerating the trigger program each time the file was changed
3. Write a "one size fits all" trigger program which would query the above
mentioned API on the fly, and could use character arrays on the record
buffers and do character comparisons based on the lengths in bytes. This
would perform more poorly based on the API call possibly needed.
From: tim [mailto:tim2006@xxxxxxxxxxx]
Sent: Thursday, 28 August 2008 10:34 AM
To: 'RPG programming on the AS400 / iSeries'
Subject: trigger program question
I have a trigger program to log any changes in a file. Here is snippit:
D OldRecord E DS ExtName(filea)
D NewRecord E DS ExtName(filea)
if n_name <> o_name;
if n_salut <> o_SALUT ;
writediff('Salutation' : o_SALUT );
I repeat this logic for each field in the file. If I have a file with many
fields, it can be quite tedious.
I was wondering if this could be done a different way so that as I add more
files to this logging process, all I would have to do is change a file name
or something. I was thinking it would have something to do with pointer
logic, but not sure where to start.
This mailing list archive is Copyright 1997-2019 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact