How to verify a PTF is applied for the Database Management Solutions for DB2 for z/OS products
search cancel

How to verify a PTF is applied for the Database Management Solutions for DB2 for z/OS products

book

Article ID: 9521

calendar_today

Updated On:

Products

Database Management for DB2 for z/OS - Administration Suite Database Management for DB2 for z/OS - Performance Suite Database Management for DB2 for z/OS - Recovery Suite Database Management for DB2 for z/OS - SQL Performance Suite Database Management for DB2 for z/OS - Utilities Suite DATABASE MANAGEMENT SOLUTIONS FOR DB2 FOR Z/OS

Issue/Introduction

How to verify a PTF is applied for the Database Management Solutions for Db2 for z/OS products.

Resolution

A- Check if a PTF is applied over the SMP/E CSI.

To verify if a PTF is applied to your target zone, use the following JCL. It will list all PTFs applied in the Target zone:

//SMPE    EXEC PGM=GIMSMP                     
//SMPCSI DD DISP=SHR,DSN=broadcom.db2.products.csi ** Update with site specific CSI **
//SMPCNTL DD *
SET BOUNDARY((TargetZone) .    <-- Update with Target Zone
LIST PTFS.
/*
//

The  problem with the SMP/E LIST PTFS generated with the JCL above is that it is only a report of the SMP/E CSI.
For instance if you are working with a copy of the Target LOADLIB, the SMP/E Target LOADLIB may be different than
the actual runtime LOADLIB used for execution.

 

B- Check if a PTF is applied over a load module in a LOADLIB.

This requires several steps:

  1. Review the ++MOD statements in the PTF, a ++MOD in SMP/E is a CSECT name in the load module.
    For example with Detector PTF you may find a ++MOD statement ++MOD(DT$DIIC0), this is a reference to CSECT DT$DIIC0.
  2. With TSO/ISPF Search-For (Option 3.14), find the load modules with this CSECT included. For example in this case you will find load module PDTDIIC0.
    An alternative to 3.14 Search-For is to use an SMP/E dialog 3 Query, 1 CSI QUERY, and enter the target zone name for the Zone Name,
    SYSMOD for the Entry Type, and PTF for the Entry Name. SMP/E will display the load modules affected by the PTF under the MOD entry.
  3. In the LOADLIB locate load module PDTDIIC0 and browse the module. You should see the PTF number in the RMID eye catcher for CSECT DT$DIIC0.

 

Something to bear in mind working with this method is in this case you are actually checking a RMID value, the RIMD value is last SMP/E
function that updated the CSECT. You may see a PTF number that might be higher, since this higher PTF will have the PTF being searched
for as a PREREQ you can consider the PTF as applied.

 

 

C- Check if a PTF is applied over a load module in a LOADLIB thru an AMASPZAP or AMBLIST utility.

Another method is to list the CSECT with a AMASPZAP JCL of the load module, in the output of the listed CSECTs on the right
column you can see the date, timestamp, and RMID values.

//AMAZAP  EXEC PGM=AMASPZAP,PARM=IGNIDRFULL    
//SYSLIB DD DISP=SHR,DSN=ca.db2.products.loadlib ** Update with site specific LOADLIB **
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DUMPT PDTDIIC0 ALL
/*
//

 

There are sites where program AMASPZAP is restricted so with program AMBLIST you can check PTFs with a list of the IDRs in the load module. 

//AMBLIST EXEC PGM=AMBLIST                        
//SYSLIB DD DISP=SHR,DSN=ca.db2.products.loadlib ** Update with site specific LOADLIB **
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
LISTIDR MEMBER=PDTDIIC0
/*
//

 


D- Check a load module in a LOADLIB during a TSO/ISPF session thru TSO ISRDDN command.

Sometimes it may be required to check that TSO/ISPF is functioning with the appropriate maintenance and the correct PTFs are applied.
In this case steps 1 and 2 are the same as before, then use command TSO ISRDDN to display the dataset allocations:

  1. Review the ++MOD statements in the PTF, a ++MOD in SMP/E is a CSECT name in the load module.
    For example with Detector PTF you may find a ++MOD statement ++MOD(DT$DIIC0), this is a reference to CSECT DT$DIIC0.
  2. With TSO/ISPF Search-For (Option 3.14), find the load modules with this CSECT included. For example in this case you will find load module PDTDIIC0.
    An alternative to 3.14 Search-For is to use an SMP/E dialog 3 Query, 1 CSI QUERY, and enter the target zone name for the Zone Name,
    SYSMOD for the Entry Type, a PTF for the Entry Name. SMP/E will display the load modules affected by the PTF under the MOD entry.
  3. Now when you are in 'Database Management Solutions for DB2 for z/OS' main menu, type TSO ISRDDN on the OPTION line.
  4. You will see the 'Current Data Set Allocations'. Locate and browse the Loadlib with a B PTILIB DB2.PRODUCTS.LOADLIB

Locate load module PDTDIIC0 and browse it. With Find command search the CSECT name until you find the CSECT name with the RMID eye catcher.
The PTF in the RMID eye catcher is the highest PTF applied over the CSECT.

 

 

E- Check with Load Module Service Analyzer.

The CAMODID utility is packaged in the Common Services stack and can be used to report on the applied maintenance for a load library. 

The utility replaces other methods that are often used:

  • ISPF Search-For method
  • AMASPZAP or AMBLIST utilities
  • ISPSF Browse

The utility works for all Broadcom mainframe products that are CAMODID enabled.  It can be invoked interactively in ISPF or in batch.

//STEP1    EXEC PGM=IKJEFT01                                   
//SYSPROC DD DISP=SHR,DSN=SYS2.SYSEXEC
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
CAMODID DSNAME(PTIPROD.RD190.DEV.CDBALOAD) DETAIL LMOD(PDTDIIC0)

 

Identifying the last applied maintenance for each object module. The generated report can be easily captured and sent to support for review.
It provides consolidated summaries:

  • Identifying all maintenance applied to the load module. 

The report confirms that RO95038 has indeed been applied to this load library:

        PROCESSING DATASET=PTIPROD.RD190.DEV.CDBALOAD                     

MODULE FMID RMID DATE TIME PRODUCT
-------- ------- ------- -------- ----- --------------------

===========================================================================
LMOD=PDTDIIC0
DT$DIIC0 CPDTJ00 TR95149 20170321 17.14 CA Database Management R19.0
DT$DI8C0 CPDTJ00 RO94732 20170228 08.55 CA Database Management R19.0
DT$DI9C0 CPDTJ00 TR95149 20170321 17.20 CA Database Management R19.0
DT$DIPC0 CPDTJ00 RO95038 20170314 19.16 CA Database Management R19.0

CA LOAD MODULE SERVICE SUMMARY

RMID FMID RMID FMID RMID FMID RMID FMID

TR95149 CPDTJ00 RO95038 CPDTJ00 RO94732 CPDTJ00

 

In contrast to the prior example, the following example shows what a base release looks like before any maintenance has been applied. 
Each module has an RMID that has been initialized to its FMID name.  In addition, the Service Summary reports no maintenance:

        PROCESSING DATASET=PTIPROD.RD200.DEV.CDBALOAD                      

MODULE FMID RMID DATE TIME PRODUCT
-------- ------- ------- -------- ----- --------------------

===========================================================================
LMOD=PDTDIIC0
DT$DIIC0 CPDTK00 CPDTK00 20170328 12.47 CA Database Management R20.0
DT$DI8C0 CPDTK00 CPDTK00 20170327 21.51 CA Database Management R20.0
DT$DI9C0 CPDTK00 CPDTK00 20170327 21.51 CA Database Management R20.0
DT$DIPC0 CPDTK00 CPDTK00 20170327 21.50 CA Database Management R20.0

CA LOAD MODULE SERVICE SUMMARY

NO SERVICE MAINTENANCE FOUND

 

The utility supports more use cases which have not been illustrated in this report. Hopefully you can see the power and the
simplicity of the CAMODID utility.  Point it to the runtime load library to determine the latest maintenance that has been applied.