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 .
/*
//