Skip to content

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.

  1. Copy the skeleton CMN$$DSN from your delivered CMNZMF SKELS library to your custom SKELS library.

  2. 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.

  1. Copy skeleton CMN$$DSN from your delivered CMNZMF SKELS library to your custom SKELS library.

  2. 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.

  1. 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.

  1. Copy skeleton CMN$$IAX from your delivered CMNZMF SKELS library to your custom SKELS library.

  2. If you are using GDGs for the BUNSPACE, CMPSPACE, and RELSPACE files, delete job step DELFILES at the top of the skeleton.

  3. 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
    
  4. Variable usage from CMN$$DSN

    1. 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.

    2. If you are using GDGs, code a (+1) relative generation.

  5. If you are using Db2 to host the I/A table, remove the CMNIMPCT DD statement.

  6. 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
  7. 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.

  1. Copy skeleton CMN$PARM from your delivered CMNZMF SKELS library to your custom SKELS library.

  2. Assign system-wide values to build parameter variables according to language, or code your own selection logic.

  3. 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.

  1. 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
    
  2. 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.