I've used Buck's method as well (with our EDI processes)... have you considered using a data queue?
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Buck Calabro
Sent: Thursday, October 18, 2018 6:29 AM
To: RPG programming on the IBM i (AS/400 and iSeries) <rpg400-l@xxxxxxxxxxxx>
Subject: Re: Exclusive locks at the record level?
On Thu, 18 Oct 2018 at 01:14, Roger Harman <roger.harman@xxxxxxxxxxx> wrote:
Another process trying to read that record will wait until the timeout (WAITRCD value on the file) and then throw a message. Of course, you can monitor for that in the program.
Amplifying Roger's comment, I don't believe there is a 'read next unlocked' operation in RPG RLA. Essentially, the proposed design would do a READ and if the record is locked by a different process, the program will get a read timeout exception. The program can, of course, trap that error, but I don't see how the program can get past it - issuing another READ will attempt to read the same, locked, record. If all the processes READ using the same access path, the second one must necessarily attempt to read an 'in use' record.
The last time I did this, I added a column to the table that indicated if the row was 'in work'. Build a LF that omits these rows, and READ through the LF. The program only sees rows that are available. The first step is to set the 'in work' column.
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l
Please contact support@xxxxxxxxxxxx for any subscription related questions.
Help support midrange.com by shopping at amazon.com with our affiliate link: http://amzn.to/2dEadiD