SMP/E (System Modification Program/Extended) "is a tool designed to manage the installation of software products on [a] z/OS system and to track the modifications" to those products.:p.1
SMP/E manages multiple software versions, helps apply patches and updates (PTFs), facilitates orderly testing and, if necessary, reversion to a previous state, allows a "trial run" pseudo-installation to verify that actual installation will work, keeps audit and security records to assure only approved software updates occur, and otherwise provides highly evolved, centralized control over all software installation on z/OS.
Although it is possible to design and ship software products that install on z/OS without SMP/E, most mainframe administrators prefer SMP/E-enabled products, at least for non-trivial packages. Using SMP/E typically requires some working knowledge of Job Control Language (JCL), although most products supply sample JCL. The rigorous software management discipline associated with SMP/E typically extends to product documentation as well, with IBM and other vendors supplying a standardized "Program Directory" manual for each software product that precisely aligns with the SMP/E work processes. The Program Directory provides detailed information on pre-requisites and co-requisites, for example.
Previously called SMP — System Modification Program — SMP/E evolved from OSMP (OS Maintenance Program) on OS/360. SMP Version 4 was a major revision with new syntax. SMP/E was introduced with MVS and introduced the use of VSAM datasets. The concept was extended to other IBM operating systems with DOS/VS Maintain System History Program (MSHP) and VM/SP SES (Virtual Machine Serviceability Enhancements Staged, now VMSES/E).
All IBM and most non-IBM software is assigned at least one seven character FMID (Function Module ID) that identifies the piece of software and its release number. This first FMID is called the Base FMID. For Example DB2 Version 9's Base FMID is HDB9910. Separately installable features also have FMIDs (called Dependent FMIDs) that relate in some way to the base product — DB2 English language panels for Version 9's Dependent FMID is JDB9910.
A software package is composed of elements, individual components such as object files (MOD), macros (MAC), sample programs (SAMP), etc.:p.37
The CSI (Consolidated Software Inventory) is a dataset containing the information that SMP/E needs to track the contents of the distribution and target libraries. The CSI contains "metadata" identifying the installed FMIDs and elements, the ID of the most recent update, and pointers to the associated libraries.
A SYSMOD (System Modification) is any modification to the system. This includes::p.38
- Function SYSMODS install a new product, version or release.
- PTF SYSMODS are official IBM fixes for reported problems.
- APAR FIXES are less formal fixes from IBM.
- USERMODS are user modifications to a product, such as installation-specific "exits."
Each SYSMOD is assigned a seven character SYSMOD ID to uniquely identify it. When the SYSMOD is installed this ID is recorded in the CSI entry for the element being added or replaced, and is called the RMID (replacement module id).
A simple declarative language called MCS (Modification Control Statements) provides the information to SMP/E identifying the SYSMOD and providing information on how to install it. Each SYSMOD is prefixed with a number of MCS statements that, for example, identify it as an APAR fix or PTF, supply the SYSMOD ID, identify the applicable FMID, etc. :pp.5ff
Prerequisites or prereqs are SYSMODS that are required to be installed before a second can be installed. Corequisites or coreqs are two or more SYSMODS that must be installed together, none can be installed without the others. A SYSMOD supresedes, or sups another if it functionally replaces the first. This prereq, coreq, and sup information is provided in the MCS. A requisite chain is the "sequence of SYSMODs that are directly or indirectly identified as requisites for a given SYSMOD," for example, if A is a prereq for B, and B is a prereq for C, then A and B are the requisite chain for C and both need to be installed before C, although not necessarily in a separate run of SMP/E.:pp.231,226,236,232 Requisite chains can frequently become extremely involved and comprise hundreds of SYSMODS.
HOLDDATA is a set of MCS statements that indicate that specific SYSMODS contain errors or require manual processing outside the scope of SMP/E before they can be installed.:p.229 The user is required to take action to fix the problem, if possible, before installing held SYSMODS.
SMP/E manages two types of libraries. Target libraries (TLIBS) contain the executable code and other information used to run the system. Originally there were a limited number of target libraries: SYS1.LINKLIB for executable programs, SYS1.MACLIB for standard macros, etc., but as of 2012 each software product usually has its own set of target libraries. Distribution Libraries (DLIBS) contain the master copy of each element for a system. Each product (FMID) has its own set of distribution libraries which are normally used only by SMP/E. Libraries in OS/360 and successors, unlike directories in unix, usually contain only one type and format of data. A software package may have object libraries (MOD), ISPF panels (PNL), macro libraries (MAC) and many more.
One common sequence of steps is called RECEIVE-APPLY-ACCEPT from the commands used for each step.
The SMP/E RECEIVE command processes SYSMODs from a source outside of SMP. Previously this might have been a PUT tape distributed by IBM roughly monthly. More recently it might be a collection of SYSMODS downloaded over the internet. The RECEIVE process uses the MCS to create an entry in the CSI for each SYSMOD, marking its status as "RECEIVED", and stores the MCS information and the actual SYSMOD data.
The REJECT command can be used to delete SYSMODS in "RECEIVED" status.
The APPLY command installs one or more received SYSMODS into the appropriate target libraries. The SYSMODS to be applied can be selected by various criteria, for example a single SYSMOD can be selected by SYSMOD ID, all SYSMODS received in a group can be selected by SOURCEID, or all un-applied SYSMODS that have been received can be applied. The requisite chains for the specified SYSMODS are checked and SYSMODS without the proper requisites, in hold status, or that have been superseded are flagged as errors and are not installed. Commonly SMP/E is instructed to also automatically apply any requisites in "RECEIVE" status to minimize these errors. SYSMODS installed have their status changed to "APPLIED" in the CSI. APPLY CHECK can be used to check the SYSMODS to be installed without actually performing the installation.
The RESTORE command can be used to remove an applied SYSMOD that has not been accepted.
The ACCEPT command installs SYSMODS permanently into the distribution libraries and marks their status as "ACCEPTED" in the CSI. Normally ACCEPT is done once the SYSMODS are known to be performing correctly before the next APPLY of service. There is no way in SMP/E to undo an ACCEPT operation.
- CSI — Consolidated Software Inventory. The CSI contains all the information SMP/E needs to track the distribution and target libraries.
- PTS — PTF Temporary Storage. The PTS data set is used to hold PTFs as received.
- MTS — Macro Temporary Storage. The MTS data set is a target library for macros that exist only in a distribution library, allowing the current version of these macros to be used for assemblies during APPLY processing.
- STS — Source Temporary Storage. The STS data set is a target library for source that exists only in a distribution library, allowing the current version of these modules to be used for assemblies during APPLY processing.
- IBM Corporation (2010). SMP/E for z/OS User's Guide (PDF).
- Morton, Dave. "IBM Mainframe Operating Systems: Timeline and Brief Explanation for the IBM System/360 and Beyond" (PDF). Retrieved October 23, 2012.
- IBM Corporation (2010). SMP/E for z/OS Reference (PDF).