Page 1 of 1

Finding the loadlib of a program

PostPosted: Fri Nov 27, 2015 6:49 pm
by Aki88
Hello,

My apologies for a redundant query.

We have a need to find the load library name from where the CICS program load is being picked.
I am aware of DFHRPL concatenations, and the 'CEMT I PROG' command, both of which give what I am looking for; same returns the below when invoked for one test program:

  I PROG(XXXXXXXX)                     
  RESULT - OVERTYPE TO MODIFY       
    Program(XXXXXXXX)                 
 +  Runtime( Lenv )                 
    Remotename()                     
    Library(DFHRPL)                 
    Librarydsn(ABC.XYZ.DEF)


We have multiple PDS/E concatenated in DFHRPL, at times multiple copies of the same load program can be present in the PDS/E depending upon the development phase; load being picked from the one which is at the top of the concatenation (i.e. latest changes to the source).

The point where I am stuck is, I have around 500+ components, for which I need to find the PDS/E from where the load is being picked, doing so manually by individually checking DFHRPL or doing a 'CEMT I PROG' is cumbersome.
Query: Is there a DFH* utility which can give me what I am looking for (I am not sure if DFHEISUP will give me the desired result); or if there is a way to extract the Librarydsn information of all the load modules that are currently loaded to CICS (loaded to CICS meaning, they have been accessed in CICS at least once or are NEWCd).

'Librarydsn' is populated when a CICS program is NEWCd or accessed/loaded for the first time in CICS.

Any pointers to do this would be very helpful.

Thank you.

Re: Finding the loadlib of a program

PostPosted: Sun Nov 29, 2015 7:37 am
by Robert Sample
One way to do this would be to write a program in the language of your choice (if SAS is licensed at your site, the SAS code would be fairly simple since there are sample programs to do it already) to read the PDS/E directory for each load library in the DFHRPL concatenation and either generate a list of which programs come from which load library, or if you have a list of programs you are interested in you could match the load library list against your list to find which programs come from which load library.

Re: Finding the loadlib of a program

PostPosted: Sun Nov 29, 2015 9:48 am
by Aki88
Hello,

Thank you Robert; this is the solution I've employed for now - a REXX, that checks the DFHRPL concatenations for the load member names, holds the PDS name where found first and writes an entry into a dataset with the member and loadlib name.

There is a problem with this approach though; scenario - this is a case of bad source management, there are a few loads which though are at the top/higher-level of the DFHRPL concatenation hierarchy, but were not NEWCd/PHASEINd, and/also a few CICS regions have not been recycled for a while, which means that the load is being picked from a different layer, even though it is present at multiple higher layers. The DFHRPL check fails for such loads (the number of these cases is less, but it is difficult to spot them amongst the larger total).

Can you kindly guide me as to how we can find the DFHFCT BDAM dataset, I somehow feel it might contain the information we're looking for; I tried figuring out as to from where the Librarydsn info is picked for a CEMT execution, but it so appears I'm not looking at the right CICS manual. Any pointers would be really-really helpful.

Thank you.

Re: Finding the loadlib of a program

PostPosted: Sat Dec 05, 2015 6:02 am
by Robert Sample
If I understand you correctly, you want to write a program to go into an executing CICS region and extract the program name and the data set name of the load library from which that program was loaded. What you want to do might be possible using the system programming (SP) functions of the EXEC CICS API; check the manual in the CICS bookshelf for your version of CICS to verify that. If so, write a program using the SP functions (you may need assistance from your site support group to compile the program) to retrieve the data you want.

If the SP functions do not provide what you want, or you cannot use them (for whatever reason), then you'll have to use your manual CEMT method on each program. There is no file CICS maintains with data about programs -- all that data is kept in memory control blocks by CICS. And since those control blocks are kept internal to CICS, there is NOT any form of API to access them. IBM does not release information about them, and therefore it is difficult to use them for anything. And since they are internal, IBM may (and probably does) change them from release to release (of CICS as well as z/OS) without any notification to anyone.