× 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.



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




As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
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.