IBM Z and LinuxONE - IBM Z

IBM Z

The enterprise platform for mission-critical applications brings next-level data privacy, security, and resiliency to your hybrid multicloud.

 View Only

Code for SMP / E Dummy Delete - Successfully Tested with MQ NPREs

By Lionel Dyck posted Wed April 03, 2024 02:20 PM

  
Written by Bill Smith (e-mail sfowjs@sonic.net)

This is an example of how to code a SMP/E Dummy Delete for two function sysmods that are NPREs of one another. In this case, MQ Series 9.3 CD (Continuous Delivery) is a NPRE of MQ Series 9.3 LTS (Long Term Support).  I fine-tuned this job (successfully executed it at Kohl's last week) and wish to share the "process" with fellow SYSPROGS.  SMP/E Dummy Deletes are rarely undertaken (and for good reasons).  Frankly speaking, few system programmers are aware of the capability. 

//DUMYDELE JOB (1),'SMP/E Dummy Delete ',CLASS=A,MSGCLASS=H,      
//      REGION=0M,TIME=1439,NOTIFY=&SYSUID                            
/*JOBPARM L=999999,SYSAFF=SYSZ                                        
//*                                                                    
//* *******************************************************************
//*                                                                    
//* A Sample/Skeleton "Dummy Delete" FUNCTION SYSMOD                  
//*                                                                    
//* *******************************************************************
//*                                                                    
//* This example illustrates switching between MQ Series 9.3 Continuous
//* Delivery (CD) to MQ Series 9.3 Long Term Support (LTS) in the same
//* Global Zone.                                                      
//*                                                                    
//* WARNING!  This is NOT a complete job!  It MUST be inspected,      
//* altered, and executed with care.  Otherwise, you risk injecting    
//* irreparable changes to your SMP/E environment.  Consider taking    
//* backups of your SMP/E zones, target, and DLIB data sets along with
//* SMP/E infrastructure service data sets.                            
//*                                                                    
//* Use this jobstream to delete a FMID / product from a set of SMP    
//* zones and libraries.  It will also delete any SYSMODs for the      
//* FMID(s) you are deleting from the GLOBAL zone and SMPPTS data set.
//* Additionally, it will delete the FMID from the GLOBAL zone index  
//* and prevent service for that FMID from being received from future  
//* or subsequent RFN/Receive Orders.                                  
//*                                                                    
//* This capability is useful when replacing a product which is/was    
//* configured as a "NPRE" (negative pre-requisite).  If the NPRE      
//* operand is specified on a the ++VER statement for a SYSMOD, the    
//* specified SYSMOD must not already be installed, must not be        
//* installed concurrently, and must not be superseded by a SYSMOD    
//* being installed concurrently.                                      
//*                                                                    
//* The NPRE operand is valid only in function SYSMODs and is used to  
//* specify one or more mutually exclusive functions.                  
//*                                                                    
//* -------------------------------------------------------------------
//*                                                                    
//* NOTE: If the product TGT/DLIB libraries are NOT in DDDEFs, you must
//*       add them to this JCL!  Ensure all USS file systems are      
//*       mounted at your /Service mountpoint (for example, and in this
//*       case:  /Service/usr/lpp/mqm/V9R1MX).                        
//*                                                                    
//* REF: SC23-3695-10, Page 57, Chapter 7 Using MCS to Define Products
//*      "The IBM Standard Packaging Rules for z/OS-Based Products"    
//*      https://publibz.boulder.ibm.com/epubs/pdf/gimpkg80.pdf        
//*                                                                    
//*      SA23-2276-60, Page 96, Example 4: Deleting a function without
//*      replacing it (dummy delete), Chapter 2. SMP/E modification    
//*      control statements, ++VER MCS, page 92.                      
//*                                                                    
//* -------------------------------------------------------------------
//*                                                                    
//* IBM FINALLY documented this w/z-OS 3.1. (concatenate all 3 parts of
//* the URL for the complete expansion on the browser command line)    
//*                                                                    
//* Last Updated: 2023-04-05                                          
//* https://www.ibm.com/docs/en/zos/3.1.0?topic=                      
//*         vm-example-4-deleting-function-without-                    
//*         replacing-it-dummy-delete                                  
//*                                                                    
//* -------------------------------------------------------------------
//*                                                                    
//* Updated 25Mar2024, William J. Smith, TEKsystems, Inc.              
//* . Corrected DEL SYSMOD syntax error.  You may only specify one    
//*   SYSMOD name per DEL SYSMOD statement.                            
//* . All filesystems (/Service) owned by the functions should be      
//*   mounted.                                                        
//*                                                                    
//* Updated 11Nov2023, William J. Smith, TEKsystems, Inc.              
//* . Added URL for new z/OS 3.1 online documentation that provides an
//*   explanation and sample JCL.                                      
//*                                                                    
//* Updated 31Aug2023, William J. Smith, TEKsystems, Inc.              
//* . Added URL for download of the Packaging Rules Guide as it is not
//*   part of the standard SMP/E documentation library.                
//* . Eliminated PARM field on GIMSMP EXEC statement                  
//* > Make note of the REWORK statement                                
//*                                                                    
//* *******************************************************************
//*                                                                    
//*  Globally change "Z25TGT" to be the correct target zone name      
//*  Globally change "Z25DLZ" to be the correct DLIB   zone name      
//*                                                                    
//* *******************************************************************
//*                                                                    
//DMYDELET EXEC PGM=GIMSMP,                                            
//         DYNAMNBR=120                                                
//SMPCSI    DD  DISP=SHR,DSN=TKMS.ZOS.V2R5.GLOBAL.CSI                  
//SMPHOLD   DD  DUMMY                                                  
//SMPLIST   DD  SYSOUT=*                                              
//SMPLOG    DD  SYSOUT=*                                              
//SMPOUT    DD  SYSOUT=*                                              
//SMPRPT    DD  SYSOUT=*                                              
//SYSPRINT  DD  SYSOUT=*                                              
//SMPPTFIN  DD  *                                                      
++FUNCTION (DELMQ93) REWORK(2024085)                                  
 /* **************************************************************** */
 /*                                                                  */
 /* Delete MQ 9.3 CD from all zones to be replaced by MQ 9.3 LTR.    */
 /* All of these FMIDs were included with the z/OS 2.5 ServerPac.    */
 /*                                                                  */
 /* H prefix = base function sysmod                                  */
 /* J prefix = dependent function sysmod (check to see if installed) */
 /*                                                                  */
 /* HMS9CD0 MQ z/OS Base            ---                              */
 /* JMS9CD1 US English Lang            ¦                             */
 /* JMS9CD2 Japanese Lang              ¦      Purge all 9 of the CD  */
 /* JMS9CD3 Simplified Chinese         ¦      FUNCTION SYSMODs both  */
 /* JMS9CD4 Uppercase US English       -----> base and 8 dependents. */
 /* JMS9CD5 French Language            ¦      Replace with MQ 9.3LTS */
 /* JMS9CD6 USS Web Components Feature ¦                             */                      
 /* JMS9CD7 MQ MFT                     ¦                             */                      
 /* JMS9CD8 USS Component           ---                              */
 /*                                                                  */
 /* **************************************************************** */
 .                                                                    
++VER (Z038) DELETE(HMS9CD0,JMS9CD1,JMS9CD2,JMS9CD3,JMS9CD4,JMS9CD5,  
                    JMS9CD6,JMS9CD7,JMS9CD8) .                        
/*                                                                    
//SMPCNTL   DD  *                                                      
  SET BDY(GLOBAL) OPTIONS(GOPT) .                                      
    RECEIVE S(DELMQ93) SYSMOD   .                                      
  SET BDY(Z25TGT) OPTIONS(GOPT) .                                      
    APPLY S(DELMQ93) CHECK      .                                      
  SET BDY(Z25DLZ) OPTIONS(GOPT) .                                      
    ACCEPT S(DELMQ93) CHECK     .                                      
  SET BDY(Z25TGT) OPTIONS(GOPT) .                                      
    UCLIN .                                                            
    DEL SYSMOD(DELMQ93) .                                           
    DEL SYSMOD(HMS9CD0) .                                              
    DEL SYSMOD(JMS9CD1) .                                              
    DEL SYSMOD(JMS9CD2) .                                              
    DEL SYSMOD(JMS9CD3) .                                              
    DEL SYSMOD(JMS9CD4) .                                              
    DEL SYSMOD(JMS9CD5) .                                              
    DEL SYSMOD(JMS9CD6) .                                              
    DEL SYSMOD(JMS9CD7) .                                              
    DEL SYSMOD(JMS9CD8) .                                              
    ENDUCL .                                                          
  SET BDY(Z25DLZ) OPTIONS(GOPT) .                                      
    UCLIN .                                                            
    DEL SYSMOD(DELMQ93) .                                              
    DEL SYSMOD(HMS9CD0) .                                              
    DEL SYSMOD(JMS9CD1) .                                              
    DEL SYSMOD(JMS9CD2) .                                              
    DEL SYSMOD(JMS9CD3) .                                              
    DEL SYSMOD(JMS9CD4) .                                              
    DEL SYSMOD(JMS9CD5) .                                              
    DEL SYSMOD(JMS9CD6) .                                              
    DEL SYSMOD(JMS9CD7) .                                              
    DEL SYSMOD(JMS9CD8) .                                              
    ENDUCL .                                                          
  SET BDY(GLOBAL) OPTIONS(GOPT) .                                      
    REJECT HOLDDATA NOFMID PRODUCT                                    
      DELETEFMID(DELMQ93,                                              
                 HMS9CD0,JMS9CD1,JMS9CD2,JMS9CD3,JMS9CD4,              
                 JMS9CD5,JMS9CD6,JMS9CD7,JMS9CD8)                      
      CHECK .                                                          
/*                                                                    
// 
                                                                   


0 comments
10 views

Permalink