Modifying Skeletons
This chapter tells you how to modify skeletons to enable you to execute key ChangeMan ZMF batch processes.
Introduction
Even if you do not intend to immediately customize ChangeMan ZMF components to fit your change management process, you must modify some delivered skeletons to fit your local conditions or to match the way you set up components in previous chapters in this Installation Guide.
This chapter describes how you must change some skeletons to get your first ChangeMan ZMF test or demonstration instance running.
This chapter does not list all skeletons you might need to modify for remote site processing or advanced functions. For a full discussion of customizing ChangeMan ZMF, see the ChangeMan ZMF Customization Guide.
You should preserve the version of components that are delivered. When you modify a skeleton, copy the skeleton from the delivered library to a custom library, then edit the skeleton in the custom library. Concatenate your custom skeleton library in front of the delivered library in ChangeMan ZMF JCL.
System Library and Data Set Names
Most data set names in batch jobs submitted by ChangeMan ZMF are made available to skeleton file tailoring in ISPF variables. The data set names are entered through the user interface by administrators or users, or they are generated internally by ChangeMan ZMF, and they are stored on the package master.
However, a few ChangeMan ZMF data set names are not stored, and most system library names are not stored.
The data set names that are not stored are hard coded in one ChangeMan ZMF skeleton CMN$$DSN with somnode as a high level qualifier (HLQ). You must customize these as required in order to comply with your local standards. This eliminates the need to manually update the many skeletons that use these definitions.
Each entry or group of entries for the SET statements looks like this:
)CM CICS AND DB2 SYSTEM LIBRARIES
)CM (CMN$$ARE,CMN$$CIC,CMN$$COE,CMN$$MPD,CMN$$MPG,CMN$$PLE)
)CM
)SET SDFHLOD = somnode.CICS.SDFHLOAD
)SET SDFHMAC = somnode.CICS.SDFHMAC
)SET SDSNLOD = somnode.CICS.SDSNLOAD
)SET DB2RNLB = somnode.RUNLIB.LOAD
The second CM line lists all the skeletons that use these variables.
Alternatively you can look at the variable use by the function, per the following table. This table lists skeletons that use the variables defined in CMN$$DSN, and lists the DD name where the variable is used, and the low level nodes of the data set names that must be updated in CMN$$DSN.
Tip
The skeletons in the table are listed by function so that you can customize the variables associated with functions that you intend to use immediately, and you can skip or defer work on the rest.
Function | Skeleton where varable is referenced | DDNAME | Library or Data Set |
---|---|---|---|
Batch job JCL: JOBLIB and STEPLIB concatenation | CMN$$DSN | &JOBLBDD | somnode.CMNZMF.CUSTOM.LOAD |
somnode.SERCOMC.CUSTOM.LOAD | |||
somnode.CMNZMF.LOAD | |||
somnode.SERCOMC.LOAD | |||
Batch job JCL: SER#PARM DSN | CMN$$SPR | SER#PARM | somnode.SERCOMC.TCPIPORT |
Batch job JCL: REXX library concatenation | CMN$$SEX | &REXXDD! | somnode.CMNZMFt.CUSTOM.REX |
somnode.CMNZMFt.REX | |||
somnode.SERCOMCt.CEXEC | |||
&REXXDD! | somnode.CMNZMF.CUSTOM.REX | ||
somnode.CMNZMF.REX | |||
somnode.SERCOMC.CEXEC | |||
Build: COBOL2 source | CMN$$CO2 | STEPLIB | somnode.COB2COM |
Build: IBM Enterprise COBOL source | CMN$$COE | STEPLIB | somnode.SIGYCOMP |
somnode.CICS.SDFHLOAD | |||
Build: CICS precompile | CMN$$CIC | STEPLIB | somnode.CICS.SDFHLOAD |
Build: CICS BMS MAP source | CMN$$MPG | SYSLIB | somnode.CICS.SDFHMAC |
SYS1.MACLIB | |||
Build: CICS BMS MAP source (DESCT) | CMN$$MPD | SYSLIB | somnode.CICS.SDFHMAC |
SYS1.MACLIB | |||
Build: IBM Enterprise PL/I source | CMN$$PLE | STEPLIB | somnode.SIBMZCMP |
somnode.SCEERUN | |||
somnode.CICS.SDFHLOAD | |||
Build: Assembler source | CMN$$ASM | SYSLIB | SYS1.MACLIB |
SYS1.MODGEN | |||
Build: C or C++ source | CMN$$CEE | STEPLIB | somnode.SCCNCMP |
somnode.SCEERUN | |||
somnode.SCEEH.H | |||
somnode.SDSNC.H | |||
Build: SAS C source | CMNSASC | STEPLIB | somnode.SASC.V450F.LOAD |
somnode.SASC.V450F.RDLB.LINKLIB | |||
somnode.SASC.V450F.MACLIBC | |||
Build: ORACLE precompiler | CMN$$ORC | STEPLIB | somnode.ORAV60A.CMNDLOAD |
SYSLIB | somnode.ORAV60A.SRCLIB | ||
Build: C prelink | CMN$$PLK | STEPLIB | somnode.SCEERUN |
SYSMSGS | somnode.SCEEMSGP(EDCPMSGE) | ||
SYSLIB | somnode.SCEECPP | ||
SYSIN | somnode.SCEELIB(C128) | ||
somnode.CBC.SCLBSID(IOC) | |||
somnode.CBC.SCLBSID(IOSTREAM) | |||
somnode.CBC.SCLBSID(COMPLEX) | |||
somnode.CBC.SCLBSID(COLL) | |||
Build: Link edit SYSLIB concatenation | &FIRSTDD! | somnode.SCEESPC | |
somnode.SCEELKED | |||
&FIRSTDD! | somnode.SCEELKED | ||
&FIRSTDD! | somnode.SCEELKED | ||
&FIRSTDD! | somnode.IMS.RESLIB | ||
&FIRSTDD! | somnode.CICS.SDFHLOAD | ||
Promote: Remote promotion | CMN$$RPM | XNODE | somnode.&RPMDSN |
&LIBTYPE | somnode.&STGLIB..&LIBTYPE | ||
SEQ&LIBTYPE | somnode.&STGLIB..&LIBTYPE | ||
SEQXNODE | somnode.&RPMDSN | ||
FRDSN('somnode..&RPMDSN') + | |||
TODSN('somnode..&RMTDSN') + | |||
FRDSN('somnode..&STGLIB..&LIBTYPE') + | |||
TODSN('somnode..&RMTLIB..&LIBTYPE') + | |||
SEQ&LIBTYPE | somnode.&RMTLIB..&LIBTYPE | ||
SEQXNODE | somnode.&RMTDSN | ||
Install: Remote site | CMN11 | CMN11ENQ | somnode.&RMTSITE..&PROJECT..CMN11 |
Installation scheduler: CA-7 | CMN$$CA7 | STEPLIB | somnode.CA7.LINKLIB |
CA7CMDS | somnode.CA7.COMMDS | ||
BATCHIN | somnode.CA7.BATCHIN | ||
BATCHOUT | somnode.CA7.BATCHOUT | ||
Installation scheduler: CA-7 | CMN$$CAS | )SET ENQLIB = somnode.BTIOUPT | |
BTIOUPT | somnode.BTIOUPT | ||
STEPLIB | somnode.CA7.LINKLIB | ||
CA7CMDS | somnode.COMMDS | ||
BATCHIN | somnode.BATCHIN | ||
BATCHOUT | somnode.BATCHOUT | ||
Installation scheduler: CONTROL-M | CMN$$CTM | SYSUT2 | somnode.CONTROLM.DATE(&SCHJBNM) |
SYSUT2 | somnode.CONTROLM.SCHEDLIB(&SCHJBNM) | ||
STEPLIB | somnode.CONTROLM.LINKLIB | ||
DACHK | somnode.CONTROLM.DATE(&SCHJBNM) | ||
DALOG | somnode.CONTROLM.LOG | ||
DAJOB | somnode.CONTROLM.SCHEDLIB(&SCHJBNM) | ||
Installation scheduler: JOBTRAC | CMN$$JBT | SYSUT2 | somnode.JOBTRAC.JCLLIB |
JOBTRACV | somnode.JOBTRAC.CHKPOINT | ||
Transmission vehicle: Connect:Direct | CMN$$NDM | DMMSGFIL | somnode.NDM.MSG |
SYSIN | somnode.NDM.SIGNON | ||
Transmission vehicle: Connect:Direct | CMN$$PND | DMPUBLIB | somnode.NDMPLIB |
DMMSGFIL | somnode.RNDMMID | ||
SYSIN | somnode.NDM.SIGNON | ||
NETMAP=somnode.RNDMMAP,ESF=YES | |||
Transmission vehicle: NETMASTER | CMN$$N10 | XNODE | somnode.&DVSNOD |
RPMNODE | somnode.&RPMDSN | ||
&STGLTYP | somnode.&DVSLIB | ||
SEQ&STGLTYP | somnode.&DVSLIB | ||
SEQXNODE | somnode.&DVSNOD | ||
SEQXRPM | somnode.&RPMDSN | ||
FRDSN('somnode..&DVSNOD') + | |||
TODSN('somnode..&PRSNOD') + | |||
FRDSN('somnode..&RPMDSN') + | |||
TODSN('somnode..&RMTDSN') + | |||
FRDSN('somnode..&DVSLIB') + | |||
TODSN('somnode..&PRSLIB') TODSP(REP) + | |||
Transmission vehicle: NETMASTER | CMN$$N11 | SEQ&STGLTYP | somnode.&PRSLIB |
SEQXNODE | somnode.&PRSNOD | ||
SEQXRPM | somnode.&RMTDSN | ||
Transmission vehicle: NETMASTER | CMN$$NET | SYSTSIN | somnode.NETMASTR.USERID |
Transmission vehicle: XCOM | CMN$$XCD | SYSIN01 | somnode.XCOM.SIGNON |
Transmission vehicle: XCOM | CMN$$XCP | SYSIN01 | somnode.XCOM.SIGNON |
Message API | CMN$$NTF | SYSEXEC | SOMNODE.CMNZMF.SAMPLES |
Execute these steps to change placeholder somnode to the appropriate HLQ.
-
Copy the skeleton CMN$$DSN from your delivered CMNZMF SKELS library to your custom SKELS library.
-
Now CMN$$DSN will allow you to easily change somnode with the appropriate data set or library name in your CMNZMF SKELS, reducing the possibility of error.
Notes
-
The data set name ending in TCPIPORT is the PDS that you allocated in Step 8: Allocate the SER#PARM TCP/IP Address Library.
-
If you will install packages created on a ChangeMan ZMF D or DP instance to production libraries, you must customize skeleton CMN11 to provide a high level qualifier for the data set name at the CMN11ENQ DD statement. This is a temporarily cataloged data set that causes CMN11 jobs for a ZMF instance to single thread.
-
If you license the ChangeMan ZMF IMS Option, you must modify skeletons CMN30I and CMN55I even if you defer installation of the IMS Option until a later time.
CMN$$DSN - JOBLIB
It is recommended not to include ChangeMan ZMF load libraries in the LINKLIST. Skeleton CMN$$DSN also provides a JOBLIB or STEPLIB for all ChangeMan ZMF batch jobs that are generated by file tailoring.
Tip
The delivered skeleton contains selection logic to concatenate "test" libraries in front of "production" libraries for a test instance of ChangeMan ZMF. (The lower case "t" designates a "test" environment and "test" libraries.)
For your first ChangeMan ZMF test or demonstration instance, just code a simple JOBLIB /STEPLIB statement. As you build other ChangeMan instances, you can add selection logic that fits your evolving environment.
Follow these steps to customize your JOBLIB skeleton variables.
-
Copy skeleton CMN$$DSN from your delivered CMNZMF SKELS library to your custom SKELS library.
-
Edit CMN$$DSN in your custom SKELS library. Code the same load library concatenation that you used for the STEPLIB in the SERNET.
Example:
)CM THIS DEFINES THE VARIOUS LOAD LIBRARIES USED TO BUILD THE JOBLIB )CM CONCATENATION. )CM (CMN$$JBL) )CM )SET ZMFCTST = CMNTP.CMN820.C6.LOAD )SET SERCTST = CMNTP.CMN820.C6.LOAD )SET ZMFVTST = CMNTP.CMN820T4.LOAD )SET SERVTST = CMNTP.SER820T4.LOAD )SET ZMFCPRD = CMNTP.CMN820.C7.LOAD )SET SERCPRD = CMNTP.CMN820.C7.LOAD )SET ZMFVPRD = CMNTP.CMN820T4.LOAD )SET SERVPRD = CMNTP.SER820T4.LOAD
CMN$$SEX - REXX SYSEXEC
Skeleton CMN$$SEX is delivered to provide a SYSEXEC library concatenation for ChangeMan ZMF batch jobs that are generated by file tailoring.
Tip
The delivered skeleton contains selection logic to concatenate "test" libraries in front of "production" libraries for a test instance of ChangeMan ZMF. (The lower case "t" designates a "test" environment and "test" libraries.) For your first ChangeMan ZMF test or demonstration instance, just code a simple SYSEXEC statement. As you build other ChangeMan instances, you can add selection logic that fits your evolving environment.
Follow these steps to customize your variables to use in the CMN$$SEX skeleton.
-
Edit CMN$$DSN in your custom SKELS library. Code the desired datasets.
Example:
)CM THIS DEFINES THE VARIOUS REXX LIBRARIES USED TO BUILD THE SYSEXEC )CM CONCATENATION FOR REXX )CM (CMN$$SEX) )CM )SET ZMFCRXT = CMNTP.CMN820.C7.REX )SET SERCRXT = CMNTP.CMN820T4.REX )SET ZMFVRXT = CMNTP.SER820T4.CEXEC )SET ZMFCRXP = CMNTP.CMN820.C7.REX )SET ZMFVRXP = CMNTP.CMN820T4.REX )SET SERVRXP = CMNTP.SER820T4.CEXEC
...
CMN$$IAX - Impact Analysis Data Extract
Skeleton CMN$$IAX builds JCL to run the impact analysis data extract, which creates sequential files BUNSPACE, CMPSPACE, and RELSPACE. These files are then input to the impact analysis LDS (or Db2) load job.
The impact analysis LDS (or Db2 table) is used by the package audit process and by the online Query Impact and Query BofM functions.
It is recommended that you define the BUNSPACE, CMPSPACE, and RELSPACE files as generation data groups (GDG).
Execute these steps to customize skeleton CMN$$IAX.
-
Copy skeleton CMN$$IAX from your delivered CMNZMF SKELS library to your custom SKELS library.
-
If you are using GDGs for the BUNSPACE, CMPSPACE, and RELSPACE files, delete job step DELFILES at the top of the skeleton.
-
If you want to display messages that list relationships in which the subordinate component is found in no baseline library or in multiple baseline libraries, replace DUMMY with SYSOUT=* in these DD statements.
//LODMISS DD DUMMY //LODSAME DD DUMMY //CPYMISS DD DUMMY //CPYSAME DD DUMMY
-
Variable usage from CMN$$DSN
-
You should already have set up CMN$$DSN to ensure the variables used in various skeletons are ready for use. Confirm that the variable &IADXHLQ is set correctly.
-
If you are using GDGs, code a (+1) relative generation.
-
-
If you are using Db2 to host the I/A table, remove the CMNIMPCT DD statement.
-
Change these XTYP= SYSIN control statements to specify your library type(s) for exclusion:
XTYP= Component Type Option Sub-type FMT IMS MFS Load IMS Option library sub-type F MFS IMS MFS Source IMS Option library sub-type M -
If using Db2 to host the I/A table, add the ZMF=&SUBSYS parm to the top of the SYSIN parms (see the suggested alternative in the CMN$$IAX skeleton).
CMN$PARM - Build Parameters
Build parameters are provided for precompile, compile, prelink, and link skeletons in a set of ISPF variables, which are listed in this table.
Variable Name | Description |
---|---|
&DB2PPRM1 | Db2 Precompile Parameters Part 1 |
&DB2PPRM2 | Db2 Precompile Parameters Part 2 |
&DB2PPRM3 | Db2 Precompile Parameters Part 3 |
&CICSPRM1 | CICS Translate Parameters Part 1 |
&CICSPRM2 | CICS Translate Parameters Part 2 |
&CICSPRM3 | CICS Translate Parameters Part 3 |
&MAPDPRM1 | BMS MAP DSECT Parameters Part 1 |
&MAPDPRM2 | BMS MAP DSECT Parameters Part 2 |
&MAPDPRM3 | BMS MAP DSECT Parameters Part 3 |
&COMPPRM1 | Compile Parameters Part 1 |
&COMPPRM2 | Compile Parameters Part 2 |
&COMPPRM3 | Compile Parameters Part 3 |
&PLNKPRM1 | Prelink Parameters Part 1 |
&PLNKPRM2 | Prelink Parameters Part 2 |
&PLNKPRM3 | Prelink Parameters Part 3 |
&LINKPRM1 | Link Parameters Part 1 |
&LINKPRM2 | Link Parameters Part 2 |
&LINKPRM3 | Link Parameters Part 3 |
Values are assigned to these variables in a layered set of skeletons:
-
CMN$$VAR - Initialize build parameter ISPF variables to blank.
-
CMN$PARM - Assign system-wide values to build parameter variables according to component language.
-
PRM$aaaa (where aaaa is an application mnemonic) - Overlay system-wide default values with application specific values in optional application skeletons.
In addition, when you execute build processing for a component, you can enter component-specific parameter values that are retained in component history.
Skeleton CMN$PARM is delivered with common build parameter settings for various component language types.
Execute these steps to set ISPF variables for build parameters.
-
Copy skeleton CMN$PARM from your delivered CMNZMF SKELS library to your custom SKELS library.
-
Assign system-wide values to build parameter variables according to language, or code your own selection logic.
-
If necessary, create an optional application skeleton in your CUSTOM SKELS library. Name the skeleton PRM$aaaa, where aaaa is an application mnemonic. Assign application-level overrides to build parameter variables, only where they are different than system-wide values in skeleton CMN$PARM.
Note
The comments in skeleton CMN$$VAR provide more details about variables used in ChangeMan ZMF build processing.
CA ACF2 LOGONID in JOB Statement Skeletons
If your security system is IBM Security Server RACF or CA Top Secret, skip this step and go to the next skeleton topic.
If you use CA ACF2 as your security system, execute these steps to enable the LOGONID statement in each JOB statement skeleton.
-
Copy these JOB statement skeletons from your delivered CMNZMF SKELS library to your custom SKELS library.
CMN$$D2J CMN$$JCD CMN$$JNM CMN$$NTF CMN$$RPJ CMN$$SJN
-
In the LOGONID statement in each skeleton, delete the )CM operator and the space that follows it so that the LOGONID statement begins in column 1:
----+----1----+----2----+----3----+----4----+----5 //*LOGONID CMNBATCH <--- UNCOMMENT FOR ACF2
...
Note
If you must use a batch user ID different from CMNBATCH, change each JOB statement skeleton and then modify security exit SERLCSEC. See CA ACF2 Batch LOGONID for more information.
Software Conflicts
Some data center utilities from other software vendor include functions that conflict with facilities in ChangeMan ZMF. You may have to adjust ChangeMan ZMF batch JCL and skeletons to suppress the conflicting functions.
See "Software Conflicts" for instructions about changing batch JCL to resolve potential conflicts. Translate those JCL changes into ChangeMan ZMF skeleton modifications.