Skip to content

Generating and Updating Impact Analysis Data

The default mechanism for hosting impact analysis information is an LDS backed dataspace. This section assumes that this default is used. You can, however, choose to use Db2 to host this information and if this is the case, then 'Db2 table' can be used interchangeably with LDS/dataspace in the following.

The impact analysis LDS contains records that describe relationships among components in ChangeMan ZMF baseline libraries.

Each relationship record in the impact analysis file names two components in a one-toone relationship. One-to-many relationships and many-to-one relationships are expressed in the impact analysis file as multiple one-to-one relationship records.

The Query Impact and Query Component Bill of Materials functions use these relationship records to tell you what other components might be affected if you make a change to a particular component. ChangeMan ZMF audit programs use impact analysis records to validate the change process that is being used for components in a change package.

Types of Impact Analysis Relationships

This table describes the types of component relationships that are stored in impact analysis data:

Relationship Type Component That Contains Object of the Relationship Object of the Relationship
COPYBOOK Like-source component that contains a COPY or similar statement for a like-copy component. Like-copy member that is the object of a COPY or similar statement in source code.
SUBROUTINE Like-load component that contains a statically linked like-load component. Like-load component statically linked in a composite likeload.
JCL-PROCEDURE Component type JCL or PRC (or component type designated in an exit as likeJCL) that contains an EXEC statement for a cataloged procedure. The cataloged procedure following an EXEC statement or following the PROC= parameter in an EXEC statement.
PGM NAME/SYMBOL Component type JCL or PRC (or component type designated in an exit as likeJCL) that contains a PGM= parameter In an EXEC statement. Character string in the PGM= parameter. The string can be a program name, or it might be a symbolic parameter.
DSN NAME/SYMBOL Component type JCL or PRC (or component type designated in an exit as likeJCL) that contains a DSN= parameter in a DD statement. Character string in the DSN= parameter. The string can be a data set name, or it might be a symbolic parameter.

...

Creating / Updating Impact Analysis Data

Impact analysis records are stored in a VSAM LDS. Programs that use impact analysis data create a data space and load it from the LDS. (If you are using Db2, the tables are accessed directly).

When you first implement ChangeMan ZMF, you run the impact analysis data extract. The extract parses members in baseline libraries to find relationships between components, and it creates impact analysis records in three sequential files, BUNSPACE, RELSPACE, and CMPSPACE. The data in these files is loaded to the impact analysis LDS with a separate batch job.

After the initial extract and load, impact analysis data is updated dynamically when a change package is installed and its components are baselined. Package master relationship records that were created when package components were staged are used to update the impact analysis data space and LDS with new or changed relationships.

After the impact analysis LDS is populated, if you use application administration to add or remove applications, change baseline libraries, or change library types, you must run the impact analysis data extract again to recreate the data for the impact analysis LDS.

Caution

There is no "incremental" update for impact analysis data. If you exclude any applications from impact analysis maintenance, relationships for these applications are not created and will be missing from the Impact Analysis LDS.

This is the default processing order used by the impact analysis data extract to create impact analysis relationship records for a component:

  1. Generate relationships from package master relationship records for the last package to baseline the component.

    But if there are no package master relationship records because the component is JCL or PRC, or the last package to baseline the component is archived, or if the component has never been processed through the ChangeMan ZMF package life cycle, then...

  2. Propagate any existing I/A records for the component.

    But if there are no existing I/A records because the component has never been parsed by the impact analysis data extract, then...

  3. Parse the baselined component to discover relationships.

The impact analysis data extract can be initiated through a panel in ChangeMan ZMF global administration, or you can manually submit a batch job to perform the extract.

After you have extracted the impact analysis information, you create and populate the impact analysis LDS through a batch process.

Instructions for executing the impact analysis data extract and loading the impact analysis LDS are provided in the next three topics:

Online Impact Analysis Data Extract

Execute these steps to submit an impact analysis data extract from global administration.

Note

This procedure assumes that you have customized skeleton CMN$$IAX according to the instructions in the ChangeMan ZMF Installation Guide.

  1. Access the I/A Data Extraction Job Statements panel (CMNGBIM1) using one of these methods.

    Using the Menu Hierarchy

    1. On the Primary Option Menu (CMN@PRIM), choose option A Admin.

    2. On the Administration Options menu (CMNADMON), choose option G Global.

    3. On the Update Global Administration Options menu (CMNGAMN1), choose option I Impact.

    Using Direct Panel Access

    1. On the Command or Option line of any panel, type =A.G.I and press Enter.

      The I/A Data Extraction Job Statements panel (CMNGBIM1) is displayed.

      CMNGBIM1                 I/A Data Extraction Job Statements 
      Command ===> _____________________________________________________________
      
      Job statement information:
          //USER015S JOB (SM-1IKF-SM),'CHANGEMAN', 
          //        CLASS=A, 
          //        NOTIFY=USER015, 
          //        MSGCLASS=X
      
  2. I/A Data Extraction Job Statements panel (CMNGBIM1) now only allows you define the desired job cards.

  3. Define your job cards, and press ENTER to submit a batch job to perform the impact analysis data extract. The job is file tailored using the CMN$$IAX skeleton.

  4. When the job completes, check the output.

    1. Verify that the impact analysis data extract created three sequential files: BUNSPACE, CMPSPACE, and RELSPACE.

      Tip

      Add a TYPRUN=SCAN to the jobcard and capture the resulting JCL with SDSF or similar to examine and save a copy for later use.

    2. Example of SYSPRINT at job step RUNIA:

      ChangeMan(R) ZMF CMNIA000 - 8.2.0 I/A Synch WEDNESDAY MAY 30, 2018 @ 00:15:32
      CMN2698I - Processed by CMNIA000 version 2018/02/27 07.05
      SYSIN: XTYP=FMT
      SYSIN: XTYP=MFS The following applications will be included in this analysis:
      ACTP
      GENL
      JZFS
      
      B a s e l i n e L i b r a r y                                                       Meta-data    Baseline
      ----------------------------------------------------------------- components         i/a rows    i/a rows 
      CMNTP.S6.V820.BASE.ACTP.CPY                                               51                0           0 
      ...
      CMNTP.S6.V820.BASE.ACTP.LOD                                               26                5           0
      CMNTP.S6.V820.BASE.ACTP.LOS                                                3                0           0
      CMNTP.S6.V820.BASE.ACTP.LST                                                0                0           0
      CMNTP.S6.V820.BASE.ACTP.PRC                                                0                0           0
      CMNTP.S6.V820.BASE.ACTP.SRC                                               26               47           0
      CMNTP.S6.V820.BASE.ACTP.SRS                                                3                6           0 
      CMNTP.S6.V820.BASE.ACTP.TST                                                0                0           0 
      ...
      /cmntp/s6/v820/base/jzfs/lsh/lvl-0                                        11                0           0 
      ...
      CMNTP.S6.V820.BASE.GENL.SRS                                                7               16           0
      MNTP.S6.V820.BASE.GENL.LOD                                                 5                7           0
      MNTP.S6.V820.BASE.GENL.SRC                                                 4                6           0
      /cmntp/s6/actp/base/jvs/lvl-0                                              4                0           0
                                                                 TOTAL         214               90           1
      BUNSPACE records written                   :           101
      CMPSPACE records written                   :           214
      RELSPACE records written                   :            91
      
      CMNIA000 - Execution has completed -  RC : 00
      

      The three counts for each baseline library are derived as follows:

      • Components - Number of components in the baseline library
      • Meta-data i/a rows - Number of I/A rows created from package master relationship records or propagated from rows in the existing impact analysis LDS
      • Baseline i/a rows - Number of I/A rows created by parsing components in the baseline library
    3. If these four DD statements in skeleton CMN$$IAX are customized to send output to SYSOUT, check them for messages about relationships that are discovered by parsing but cannot be resolved.

      DD Statement Message Information
      //LODMISS Subroutine relationships where the subordinate component is not found in any baseline library.
      //LODSAME Subroutine relationship where the subordinate component is found in multiple baseline libraries.
      //CPYMISS Copybook relationships where the subordinate component is not found in any baseline. library
      //CPYSAME Copybook relationship where the subordinate component is found in multiple baseline libraries.

      Example of LODMISS at job step RUNIA:

      ACTP/LOD ACPSRCCA includes COMSRS00. Not found in any relevant baseline.
      ACTP/LOD ACPSRCCC includes COMSRS00. Not found in any relevant baseline.
      ACTP/LOD ACPSRCCE includes COMSRS10. Not found in any relevant baseline.
      ACTP/LOD ACPSRC6A includes ACRSCNU0. Not found in any relevant baseline.
      

      Note

      The LODMISS DD SYSOUT may list relationships that include statically linked system subroutines.
      Example:
        ACTP/LOD ACPSRCD1 includes CEESTART. Not found in any relevant baseline.
      You can eliminate these messages with exit program CMNEX022.

  5. If the data extract job is successful, go to Impact Analysis LDS Load.

Batch Impact Analysis Data Extract

Sample JCL for running an impact analysis data extract as a batch job is delivered in CNTL member IMPACT. This batch job can run with the ChangeMan ZMF instance running or stopped.

Execute these steps to customize and run job IMPACT:

Note

Customization of the IMPACT JCL should parallel the customization of skeleton CMN$$IAX that is described in the ChangeMan ZMF Installation Guide.

  1. Copy member IMPACT from the delivered CMNZMF CNTL library to your custom CMNZMF CNTL library. Edit member IMPACT in your custom CMNZMF CNTL library. If using Db2, use member IMPACTD2.

  2. Code your JOB statement at the top.

  3. In the JOBLIB statement, concatenate your CUSTOM LOAD libraries ahead of the delivered LOAD libraries. You can customize exit programs to modify the behavior of impact analysis data extract program CMNIA000.

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

  5. 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
    
  6. At DD names BUNSPACE, CMPSPACE, and RELSPACE:

    1. Replace the somnode placeholder with the high level qualifier that conforms to your standard for permanent ChangeMan ZMF sequential data sets.
  7. 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 you are using Db2, you must also ensure to code a ZMF=x sysin parameter, where x is the target ZMF subsystem identifier.

  8. Submit job IMPACT. The ChangeMan ZMF instance can be running or stopped.

  9. When the job completes, check the output.

    1. Verify that the impact analysis data extract created three sequential files: BUNSPACE, CMPSPACE, and RELSPACE.

    2. Examine job output for problems. See 4b. and 4c. in Online Impact Analysis Data Extract for sample output.

  10. If the data extract job is successful, go to the next topic.

Impact Analysis LDS Load

Sample job LDSLOAD creates a new impact analysis LDS and loads it with data from the three sequential files created by the impact analysis data extract. If you are using Db2, replace sample job LDSLOAD with sample job CMNDB2IL in these instructions. Steps 5, 6, 7, and 10 do not apply to Db2.

Execute these steps to customize and run job LDSLOAD:

  1. Copy member LDSLOAD from the delivered CMNZMF CNTL library to your custom CMNZMF CNTL library. Edit member LDSLOAD in your custom CMNZMF CNTL library.

  2. Code your JOB statement at the top.

  3. In the JOBLIB statement, concatenate the delivered CMNZMF LOAD library and SERCOMC LOAD library.

  4. Change all occurrences of these placeholder file names to the output files names from the impact analysis data extract job. See Online Impact Analysis Data Extract or Batch Impact Analysis Data Extract.

    somnode.BUNSPACE 
    somnode.CMPSPACE 
    somnode.RELSPACE
    
  5. Change all occurrences of somnode.CMNZMF.IADSP to the VSAM LDS name that is coded in the ChangeMan ZMF started procedure at DD statement CMNIMPCT.

  6. Change the MEGABYTES parameter of the IDCAMS DEFINE CLUSTER statement according to the JCL comments near the parameter.

    Tip

    Change all the somnode values so the resulting dataset names are correct for your installation.

  7. Shut down your ChangeMan ZMF instance, or close the impact analysis LDS by issuing a DETACH modify command.

    See the ChangeMan ZMF Installation Guide for DETACH command syntax and cautions.

  8. Submit job LDSLOAD.

  9. Examine job LDSLOAD output for problems.

    1. Example of CMNPRINT from job step CMNIALC0:

      ChangeMan(R) ZMF Impact Analysis Component Table Preparation
                    -- CMNIALC0 - 8.1.0 20141010 12.30
      20141021 09325969 7,777 Component records Read
      20141021 09325969 7,777 Component records written
      20141021 09325969 21,069 Component records added
      20141021 09325969 21,069 Relation records read
      20141021 09325969 21,069 Relation records written
      
      20141021 09325969 End of run
      
    2. Example of CMNPRINT from job step CMNIAIN0:

      ChangeMan(R) ZMF Impact Analysis Dataspace Analysis and Initialization
                            -- CMNIAIN0 - 8.1.0 20141010 12.29
      20141021 09330845       77 BUN records read
      20141021 09330885   18,044 component records read
      20141021 09330980   21,069 relation records read
      20141021 09331042 I/A dataspace initialization complete
      
    3. Example of CMNPRINT from job step CMNIALB0:

      ChangeMan(R) ZMF Impact Analysis Baseline Unique Number Table Load
                    -- CMNIALB0 - 8.1.0 20141010 12.27
      20141021 09332044 I/A baseline load start
      20141021 09332045           77 BUN Input records read
      20141021 09332045           77 BUN Records loaded
      20141021 09332045 I/A baseline load complete
      20141021 09332045
      20141021 09332045 I/A appl / libtype index create start
      20141021 09332046 I/A appl / libtype index create complete
      20141021 09332046 I/A libtype / appl index create start
      20141021 09332047 I/A libtype / appl index create complete
      20141021 09332047 I/A DSNAME/bun index create start
      20141021 09332056 I/A DSNAME/bun index create complete
      
      20141021 09332059 End of run
      
    4. Example of CMNPRINT from job step CMNIALR0:

      ChangeMan(R) ZMF Impact Analysis Relation Table Load
                    -- CMNIALR0 - 8.1.0 20141010 11.21
      20141021 09332613 I/A component table load start
      20141021 09332663       18,044 component records read
      20141021 09332663       18,044 component entries built
      20141021 09332663 I/A component table load complete
      20141021 09332663 I/A relation table load start
      20141021 09332983       20,540 relation records read
      20141021 09332983       20,540 relation entries built
      20141021 09332983 I/A relation table load complete
      20141021 09333006 I/A table load complete
      
      20141021 09333011 End of run
      
    5. Example of CMNPRINT from job step CMNIALX0:

      ...

      ```
      ChangeMan(R) ZMF Impact Analysis Relation Index Load
                  CMNIALX0 - 8.1.0 20141010 12.30
      20141021 09333822 begin relation table index load
      20141021 09334055       20,540 relation index records read
      20141021 09334055       20,540 superior component relation index entries loaded
      20141021 09334055       20,540 subordinate component relation index entries loaded
      20141021 09334058 end relation table index load
      
      20141021 09334058 End of run
      ```
      
    6. Example of CMNIADSX from job step CMNIAIXC:

      ...

      ```
      ChangeMan(R) ZMF (8.1.0 - 20141010) Impact Analysis Dataspace Index Integrity Rep 
      A return code of zero indicates that the I/A dataspace is structurally correct.
      2014102109334118 Data space at Level 1.0.5  
      2014102109334118 Usage___ _Starts_ __Next__ __Size__ __Free__  
      2014102109334118 BUN      00001000 00001738 00007000 000068C8  
      2014102109334118 BUN  X   00008000 00008134 00001000 00000ECC  
      2014102109334118 DSN   X  00009000 00009134 00001000 00000ECC  
      2014102109334118 ATB   X  0000A000 0000A134 00001000 00000ECC  
      2014102109334118 TAB   X  0000B000 0000B134 00002000 00001ECC  
      2014102109334118 B FREE   0000D000 0000D000 00002000 00002000 
      
      2014102109334118 COMP T   0000F000 000557C0 000A2000 0005B840  
      2014102109334118 CMPX  X  000B1000 000C29F0 00024000 00012610  
      
      2014102109334118 RLN  T   000D5000 001C5B40 00237000 001464C0  
      2014102109334118 RLN  P X 0030C000 003200F0 00030000 0001BF10  
      2014102109334118 RLN  B X 0033C000 003500F0 00030000 0001BF10  
      2014102109334118 RLN  T F 0036C000 0036C000 00002000 00002000    
      
      2014102109334118 UPDB     0036E000 0036E000 00030000 00030000  
      2014102109334118 NMBLK    0039E000 003C545C 000A8000 00080BA4  
      2014102109334118 BUN index check starts  
      2014102109334118 BUN index check ends  
      2014102109334118 DsName index check starts  
      2014102109334118 DsName index check ends  
      2014102109334118 Appl / LibType index check start  
      2014102109334118 Appl / LibType index check ends  
      2014102109334118 LibType / Appl index check start  
      2014102109334119 LibType / Appl index check ends  
      2014102109334119 Component Name index check starts  
      2014102109334136     18,044 component table indexes examined  
      2014102109334136 Component Table Index name/BUN check ends  
      2014102109334136 Relation Table SupComp index chck starts  
      2014102109334160     20,540 relation supcomp indexes examined  
      2014102109334160 Relation Table SupComp index check ends  
      2014102109334160 Relation Table SubComp index chek starts  
      2014102109334162     20,540 relation subcomp indexes examined  
      2014102109334162 Relation Table SubComp index check ends   
                          All checks completed, return code is 00
      ```
      
  10. Start ChangeMan ZMF, or open the impact analysis LDS by issuing an ATTACH modify command.

    This is an example of the ATTACH command for ZMF instance SERT3:

    /F SERT3,CMN,ATTACH,IADS
    

    See the ChangeMan ZMF 8.1 Installation Guide for ATTACH command details.

Forcing Component Parsing

While it is preferable to generate impact analysis records from package master relationship records that are created in the component build process, some customers may discover that their package master relationship records are unsuitable.

Program CMNIA000 in the impact analysis data extract and program CMNDSPTM in the baseline ripple process accept SYSIN keyword parameters to force component parsing to create impact analysis relationship records.

  • CMNIA000 - Use the following SYSIN keyword parameters in skeleton CMN$$IAX or CNTL member IMPACT to force component parsing for the impact analysis data extract.

    Keyword Parameter Source for Impact Analysis Relationships
    (default) 1 - Generate from package master relationship records for the last package to baseline the component. But if there are no package master relationship records because the last package to baseline the component is archived, or if the component has never been through the ZMF package life cycle, then...
    2 - Propagate any existing I/A records. But if there are no existing I/A records because the component has never been analyzed by CMNIA000, then...
    3 - Parse the baseline component.
    PARSE=ALL Ignore existing impact analysis relationship records:
    1 - Generate from package master relationship records for the last package to baseline the component.
    2 - Parse the baseline component.
    PARSE=ALL,NOPMAST Parse the baseline component.
    PARSE=ALL,NOPMCPY Ignore package master ISIC records and all prior I/A information:
    1 - Generate from package master relationship records for the last package to baseline the component, but ignore copybook-to-source (ISIC) records.
    2 - Parse the baseline component.
    PARSE=ALL,NOPMLOD Ignore package master ILIC records and all prior I/A information:
    1 - Generate from package master relationship records for the last package to baseline the component, but ignore subroutine-to-composite load (ILIC) records.
    2 - Parse the baseline component.

...

  • CMNDSPTM - Use the following SYSIN keyword parameter in the CMN30 job to force component parsing for impact analysis data update.

    Keyword Parameter Generate I/A Records
    (default) Generate from package master relationship records for the package currently being baselined.
    PRS=NOPMLOD Parse baseline like-load members

    ...

Fixing Unsuitable Package Master Relationship Records

Missing or invalid package master relationship records often result from errors in customizing component build processing. After build processes are fixed, valid relationship records are created on the package master going forward.

However, the impact analysis data extract cannot be run most efficiently until the existing relationship data on the package master is repaired.

An analysis and repair facility is available that can detect and fix missing package master relationship records for baselined components. If you think you need to use this facility, contact Customer Support.

Increasing I/A Data Space Freespace

When the impact analysis data space is initialized, the space allocated is 12.5% more than what is requested. When the data space is loaded, 1/4 of the relationship rows are allocated as freelist.

Mass delete of relationship rows using XML Services depletes freelist and freespace. You should always reorganize the impact analysis LDS after each such operation.

If you run out of freespace, you can manually increase the allocation with the FREEPCT execution parameter for program CMNIAIN0. Examples:

  • Add another 20% of the total request to freespace, and increase the proportion of freelist rows by 20%:

    //CMNIAIN0 EXEC PGM=CMNIAIN0,PARM='FREEPCT=20'
    
  • Add another 100% of the total request to freespace, and increase the proportion of freelist rows by 100%:

    //CMNIAIN0 EXEC PGM=CMNIAIN0,PARM='FREEPCT=100'
    

...