Search for the key using DSPPFM. There's the RRN.
Leo
-----Original Message-----
From: RPG400-L On Behalf Of Kyle Lawson
Sent: Friday, May 7, 2021 11:43 AM
To: RPG programming on IBM i <rpg400-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: Accessing the RRN of a locked record
We actually just worked this at our shop.
We created a service program to check for a record lock on a file. It
returns an indicator and we pass the key value of the record we want to
access and a data structure that will contain the job name of the job
locking the record.
I have included a simple use of the procedure checking for a lock on a file
named ttlmas and its key field is named seqno. I also included the copybook
and module code. Now, I am not very familiar with OPM programs so I don't
know if this work for you, but might benefit others. We would only use this
in an interactive program and not batch.
// Example
dcl-ds jobInfo likeds(jobInfo_t) inz(*likeds);
if ttlmasLocked(333333:jobinfo);
// DO SOMETHING (send message)
else;
// Process on as normal (chain to ttlmas)
endif;
// Copy Book
**free
dcl-ds jobInfo_t qualified template;
jobNumber packed(6:0) inz(0);
jobUser char(10) inz('');
jobName char(10) inz('');
end-ds;
dcl-pr ttlmasLocked ind extproc(*dclcase);
seqno packed(9:0) const;
jobInfo likeds(jobInfo_t);
end-pr;
// Module Code
**free
ctl-opt nomain option(*srcstmt);
/copy qcpysrc,p.reclock
dcl-proc ttlmasLocked export;
dcl-pi *n ind;
seqno packed(9:0) const;
jobInfo likeds(jobInfo_t);
end-pi;
dcl-s hasLock ind inz(*off);
exec sql
select case when count(distinct job_name) > 0 then 1 else 0 end,
coalesce(
max(case when ordinal_position = 1 then element else '' end
),
''),
coalesce(
max(case when ordinal_position = 2 then element else '' end
),
''),
coalesce(
max(case when ordinal_position = 3 then element else '' end
),
'')
into :hasLock, :jobInfo
from qsys2.record_lock_info a
join pfiles.ttlmas b on a.rrn = rrn(b) and b.seqno = :seqno,
table(systools.split(job_name,'/'))
where table_name = 'TTLMAS'
and table_schema = 'PFILES';
return hasLock;
end-proc;
On Fri, May 7, 2021 at 10:27 AM Peter Dow <petercdow@xxxxxxxxx> wrote:
There is a pretty old (1999) discussion of this in the midrange.com
archives. Chris Bipes wrote the bit that I think is relevant:
https://archive.midrange.com/rpg400-l/199906/msg00507.html
Basically, if you're getting a record-locked error, the message
contains the job that locked the record (so you don't need to do the
extra call), and that info is in the program status data structure.
--
*Peter Dow* /
Dow Software Services, Inc.
909 793-9050
petercdow@xxxxxxxxx <mailto:petercdow@xxxxxxxxx> pdow@xxxxxxxxxxxxxx
<mailto:pdow@xxxxxxxxxxxxxx> /
On 5/7/2021 8:03 AM, dfreinkel@xxxxxxxxxxxxxxxxx wrote:
Here's another challenge.
Again it's a RPG/400 OPM program.
I need to get the RRN (relative record number) of a record locked by
another
job.
I added the INFDS for the file, but when I CHAIN to the record, the
RRN
is
not populated into the data structure because the record was not read.
Does anyone know of a method to get the RRN of the locked record?
I use the RRN to call another utility program that uses SELECT *
FROM QSYS2.RECORD_LOCK_INFO which gives me the job that is locking the
record.
Thanks
Darryl Freinkel
A4G
Telephone: 770.321.8562 Mobile: 678.355.8562
--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a
message email: RPG400-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe,
or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com
--
Kyle Lawson
--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a
message email: RPG400-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe, or
change list options,
visit:
https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate link:
https://amazon.midrange.com
As an Amazon Associate we earn from qualifying purchases.