× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



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.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 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 [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.