Hi, Rob and Vern, and all,

Great discussion ...
Program cross-reference information for a *MODULE, *PGM or *SRVPGM is stored in the "OIR" (object information repository), a space within each library (*LIB) containing that object.  This information is updated in the OIR by the system, in XPF (OS/400 or IBM i) by the QPRROOTP or QPRCRTPG APIs, for the OPM compilers, or by QBNCRTPG, QBNUPDPG, QBNCRTSP or QBNUPDSP for CRTPGM, UPDPGM, CRTSRVPGM or UPDSRVPGM, respectively.

DSPPGMREF extracts this information for each program or service program, "on demand" when requested (when you run the DSPPGMREF command) from the *OIR space in the corresponding *LIB object.
This information is updated when you compile an OPM *PGM or a module and bind it into a bound *PGM or a *SRVPGM (via CRTPGM, CRTSRVPGM, UPDPGM or UPDSRVPGM), in case the record layouts and/or record format level IDs have changed for one or more of the *FILEs used by the program/module in question.  

Rather than having to do a nightly "refresh" of this for *ALL programs in all application libraries, we need only to do a DSPPGMREF for any new or changed programs or service programs, for each library that is "of concern" to a small *OUTFILE, and then merge that information into your own "master" DSPPGMREF database table (to make it easier to query).

The desired information is already residing in the centralized *OIR (object information repository) for each *LIB; but that *OIR is not a database table; it is just a space object, possibly with a machine index, etc.

It should be possible to enhance IBM_i to create a system-wide "OIR" database table that is automatically maintained and updated, similar to how the system maintains and updates QADBXREF -- whenever any of the *OIRs in any library are updated, those new or changed records need to be reflected in a timely manner to this new centralized system-wide OIR database table.   (In fact, the XPF routine QLIMROIR is the place to do that.)

Once this is implemented, it should be easy to provide Db2i services to interrogate this new *OIR "database."

Who wants to type up some new RFEs?  :-)
Mark S. Waterbury





On Wednesday, March 3, 2021, 8:30:46 AM EST, Vern Hamberg <vhamberg@xxxxxxxxxxxxxxx> wrote:





This is a great list - I took a look and have to ask, which of these
gives you the results of DSPPGMREF? I looked at several of the
program-related services and see nothing that lists what references to
other objects are included in the output of them. These will not, so far
as I can see, will not give Gad what they need for change impact.

I'm happy to be proved wrong on this, as I love that IBM are providing
these several services. Is there, in fact, already a service that
provides the information that DSPPGMREF does? That would be great. Of
course, that is not the only thing, as Gad has shown, needed to know
what is affected by program changes. I'm not sure Abstract or Hawkeye
have objects used in menus - I'll look at Abstract, which we use.

Cheers
Vern

On 3/3/2021 6:14 AM, Rob Berendt wrote:
As far as querying some big cross reference for DSPPGMREF why not look at these?
https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/rzajq/rzajqservicesappsys.htm
They are always up to date and include all the mods up to the minute.

Rob Berendt
-- IBM Certified System Administrator - IBM i 6.1 Group Dekko Dept
1600 Mail to: 7310 Innovation Blvd, Suite 104 Ft. Wayne, IN 46818 Ship
to: 7310 Innovation Blvd, Dock 9C Ft. Wayne, IN 46818
http://www.dekko.com -----Original Message----- From: MIDRANGE-L
<midrange-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Gad Miron Sent:
Wednesday, March 3, 2021 3:26 AM To: midrange-l@xxxxxxxxxxxxxxxxxx
Subject: Re: List PGMs Called from MENUs CAUTION: This email
originated from outside of the organization. Do not click links or
open attachments unless you recognize the sender and know the content
is safe. Hello Vern, Rob, Mark, Bryan THANKS for your input & advice I
guess Rob's QSYS2.MESSAGE_FILE_DATA is what I'm looking for. This will
let me compile a list of Menu items and the PGMs they execute and add
those to the table listing calls between PGMs As for the purpose of
this listing, it is not for audits I'm glad to say. This listing is an
indispensable tool for our developers it lets them find what PGMs are
affected when a change is made to a certain PGM. (change to parameters
comes to mind) Actually this small util is a piggy riding on the back
of an old public domain utility (FILESCAN?) that maps files to PGMs
and lets you compile all relevant PGMs when a change to a file is
made. Each night we run DSPPGMREF (into a file) for all PGMs in our
software libraries thus keeping the cross reference current. I aim to
add Menu items to this cross reference Thanks again to all of you Gad
On 3/2/2021 8:52 AM, Rob Berendt wrote:
For querying the message files associated with a menu look at:

https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/rzajq/rzajqviewmessagefiledata.htm
Here is a sample:
SELECT
    MESSAGE_FILE_LIBRARY,
    MESSAGE_FILE,
    MESSAGE_ID,
    MESSAGE_TEXT
FROM QSYS2.MESSAGE_FILE_DATA
WHERE MESSAGE_FILE_LIBRARY CONCAT MESSAGE_FILE IN(
SELECT OBJLIB CONCAT OBJNAME
FROM table(OBJECT_STATISTICS('*ALLUSR', '*MENU', '*ALLSIMPLE'))
);
You can parse out the menu option from MESSAGE_ID.
The command is in MESSAGE_TEXT.

Add the following to the where clause:
And UPPER(message_text) like('%MYPGM%')

Rob Berendt
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email:MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:https://lists.midrange.com/mailman/listinfo/midrange-l
or email:MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
athttps://archive.midrange.com/midrange-l.

Please contactsupport@xxxxxxxxxxxxxxxxxxxx  for any subscription related questions.

Help support midrange.com by shopping at amazon.com with our affiliate link:https://amazon.midrange.com

-- This is the Midrange Systems Technical Discussion (MIDRANGE-L)
mailing list To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx To
subscribe, unsubscribe, or change list options, visit:
https://lists.midrange.com/mailman/listinfo/midrange-l or email:
MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx Before posting, please take a
moment to review the archives at
https://archive.midrange.com/midrange-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 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.