How to verify a PTF is applied for the Database Management Solutions for Db2 for z/OS products.
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:
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:
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:
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:
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.