What to do when a wrong PDS member is used
Upgrading a software version or applying maintenance fixes often results in new versions of PDS control members or load modules. Because different companies have deployment methodologies, a particular PDS member may be placed into a different library than expected, and a software function could fail because a wrong version of the PDS member was used.
This article will show how to use the SYSVIEW, DISK and PDSMAN products to help identify the duplicate members.
Members can be found in unexpected libraries when methodologies change, resulting in a combination of old-style and new-style files being used together. Another possibility is that a single member is copied to a special testing PDS, or to a commonly-used PDS for special usage, and is forgotten when a new upgrade is made. These–and many other–circumstances can result in duplicate members being found in multiple libraries in a list of concatenated datasets, causing confusion or errors in processing.
While a job or task is running, you can use SYSVIEW to review different files allocated to that job/task, and you can find a specific module or all duplicate modules.
In SYSVIEW, use these commands once you know which DD statement you want to query:
Command | Description/Notes |
DDLIST ddname,asid | Where ddname is the DD to process, and asid is the job/task name. |
WHERE member | Where member is the name of the PDS member you want to find |
DUPLICAT | This will show all members that exist in two or more PDS files allocated to the DD name |
For example, to find any duplicate load modules in the DFHRPL for a CICS region, here is the output of my command:
DDLIST DFHRPL,DIDECICS;DUPLICAT (the semi-colon allows these two commands to be stacked and executed serially):
Here you can see that the DBCVTPR member is in two different loadlibs: IDLT.DIDECICS.MOD.LOAD and DCMPS.DBC150.DEV.CAB1LOAD.
If I want to find out where the DBSIDPR module is found in the CICS region DFHRPL, I would issue
DDLIST DFHRPL,DIDECICS;WHERE DBSIDPR
This shows that the DBSIDPR module is found only in IDLT.DIDAUPG.DB151.CUSLIB.
If a batch job has failed, and you suspect that a member has come from the wrong PDS, there are two different utilities with samples below that show the duplicates.
Using the same 17 loadlibs as found in the DFHRPL above, here is a JCL example:
//DUPRPT0 EXEC PGM=PDSM27
//PDSMRPT DD SYSOUT=*
//PDSMPDS DD DISP=SHR,DSN=CICSSYS.CTS560.GA.CICS.RSU2106.SDFHLOAD
// DD DISP=SHR,DSN=IDLT.CICSLOAD
. . .
// DD DISP=SHR,DSN=IDLT.BL1100.I090325.CAILIB
Running this without parms will produce an overall report of duplicate members (left side of the report shown):
PDSMAN r7.70 DUPLICATE MEMBER REPORTING UTILITY...
** PDSM27 ** CA32
Member Update Date/Time Vers. Job Name S Volser Found In Library
DBCVTPR No Control Information Available IDL001 IDLT.DIDECICS.MOD.LOAD
DBCVTPR No Control Information Available DCMSPC DCMPS.DBC150.DEV.CAB1LOAD
DBURSPR No Control Information Available DCMSP8 IDLT.DIDAUPG.DB151.CUSLIB
DBURSPR No Control Information Available DCMSPD DCMPS.DATCM151.DEV.CABDLOAD
DBUSRPR No Control Information Available DCMSP6 DCMLV1.JOHDO10.TEST.LOADLIB
DBURT002 No Control Information Available IDL003 IDLT.DIDECICS.FIX.LOAD
DBURT002 No Control Information Available DCMSP8 IDLT.DIDAUPG.DB151.CUSLIB
. . .
// JCLLIB ORDER=YOUR.CADISK.PROCLIB
//*
//REPORT1 EXEC DMS
//SYSIN DD *
FIND DSN=DSN=CICSSYS.CTS560.GA.CICS.RSU2106.SDFHLOAD
FIND DSN=DSN=IDLT.CICSLOAD
. . .
FIND DSN=DSN=IDLT.BL1100.I090325.CAILIB
REPORT PO2REF
/*
This will produce a report like this (left side):
2021.253 SEP 10, 2021 PDS CROSS REFERENCE FOR MEMBERS IN TWO OR MORE DATA SETS ...
FRIDAY 2.47 PM
MEMBER DATA SET NAME VOLUME DATA SET NAME
-------- -------------------------------------------- ------ -----------------------------
DBCVTPR DCMPS.DBC150.DEV.CAB1LOAD DCMSPC IDLT.DIDECICS.MOD.LOAD ...
DBURSPR DCMPS.DATCM151.DEV.CABDLOAD DCMSPD IDLT.DIDAUPG.DB151.CUSLIB ...
DCMLV1.JOHDO10.TEST.LOADLIB DCMSP6
DBURT002 IDLT.DIDAUPG.DB151.CUSLIB DCMSP8 IDLT.DIDECICS.FIX.LOAD ...
. . .
When a load module could be in the STEPLIB/JOBLIB of a job as well as in the Linklist, this could cause confusion and require a great deal of effort to search all of the Linklist-defined loadlibs. However, using the PDSMAN utility, you can easily add the Linklist into the process without specifying each loadlib separately. In the test system used to produce this sample output, there are 125 Linklist-defined loadlibs, but only one DD statement is needed. Because of the number of files, there could be a much higher likelihood of duplicates, so it it recommended to specify one or more distinct member names to search.
//DUPRPT1 EXEC PGM=PDSM27
//PDSMRPT DD SYSOUT=*
//PDSMPDS DD DISP=SHR,DSN=CICSSYS.CTS560.GA.CICS.RSU2106.SDFHLOAD
// DD DISP=SHR,DSN=IDLT.CICSLOAD
. . .
// DD DISP=SHR,DSN=IDLT.BL1100.I090325.CAILIB
//LINKLIST DD DUMMY
//PDSMSEL DD *
DB*
DD*
DQ*
/*
Running this step produces:
PDSMAN r7.70 DUPLICATE MEMBER REPORTING UTILITY 10 September 2021.253
** PDSM27 ** CA11
Member Update Date/Time Vers. Job Name S Volser Found In Library Concat
DBESPPR No Control Information Available MVCA11 SYS2.CA11.LINKLIB LINKLIST
DBESPPR No Control Information Available LNKD01 SYSDEV.DATACOM.SVCS.LINKLIST LINKLIST
DBSSIPR No Control Information Available DCMSP6 DCMLV1.JOHDO10.TEST.LOADLIB PDSMPDS
DBSSIPR No Control Information Available MVCA11 SYS2.CA11.LINKLIB LINKLIST
DBSSIPR No Control Information Available LNKD01 SYSDEV.DATACOM.SVCS.LINKLIST LINKLIST
. . .
In this excerpt, you can see that member DBESPPR exists in two different Linklist loadlibs, and member DBSSIPR exists in two Linklist loadlibs as well as DCMLV1.JOHDO10.TEST.LOADLIB.
The above tools can help you answer the questions about where a particular module or PDS member is found, so that you can more quickly resolve errors due to mixed versions, wrong settings, etc.
Please refer to the CA PDSMAN® PDS LIBRARY MANAGEMENT 7.7 documentation for the PDSM27 program for Duplicate Member Reporting.
Please refer to the CA DISK™ BACKUP AND RESTORE 12.5 documentation for the use of the DMS proc and the reporting functions.
Please refer to the CA SYSVIEW® PERFORMANCE MANAGEMENT 16.0 documentation for the DDLIST command.
As always, please contact Broadcom support for the above products if you have further questions.