Skip to content

Use Case Scenario: Fixing Out-of-Sync Conditions

This use case scenario:

  • Shows you how to request an audit.

  • Explains how to locate the out-of-sync conditions that are flagged in the audit report.

  • Explains why the out-of-sync conditions occurred.

  • Illustrates a step-by-step process for resolving the out-of-sync conditions.

  • Explains why the sequence of steps you take to resolve out-of-sync conditions is important.

  • Gives useful tips.

The Sample Application

This scenario uses a complex package (ACTP000029) that has two participating packages:

  • ACTP000028, which contains components from the sample ACTP application.

  • GENL000006, which contains components from the sample GENL application.

    In this example you have staged the following components in package GENL000006:

  • A copybook named GNLCPY00, which you have modified.

  • A subprogram named GNLSRS00, which you have modified and which also references the copybook GNLCPY00.

Requesting an Audit

Take the following actions:

  1. Bring up the Audit Change Package (CMNAUDIT) panel (=1.7). On the Audit Change Package (CMNAUDIT) panel, you:

    • Specify the complex package ACTP000029 as the Package.
    • Only accept the one option, Include cross appl headings.
    CMNAUDIT            Audit Change Package
    Command ===> ___________________________________________________
    Package . . . . . . . . ACTP000029
    Audit part. pkg . . . . _ (1-As simple,2-As primary,3-By Department)
    Autoresolve parms . . ._______________________________________________
    
    Enter "/" to select option
    _Audit staging libraries only
    _ Include history records
    _Format report for printing
    _ Specify application scope
    _Suppress batch messages
    / Include cross appl headings       Print top line only
    _ Lock package                      Reset lock
    _Auto resolve
    _ Update only this pkg rc
    Job statement information:
    //USER015L JOB (SM-1IKF-SM),'CMN6 AUDIT     ',
    //      CLASS=A,
    //      MSGCLASS=X,
    //      NOTIFY=USER015
    
  2. Press Enter to submit the audit job.

    The system issues MVSSEND messages and also logs the messages in the AUDITRPT DD, which indicate that there are audit errors:

CMN2669I - COMPLEX PACKAGE ACTP000029 FAILED THE AUDIT WITH A RETURN CODE OF 12. CMN2666I - PARTICIPATING PACKAGE ACTP000028 PASSED THE AUDIT WITH A RETURN CODE OF 00.

CMN3060A - This package has failed the audit.

CMN2667I - PARTICIPATING PACKAGE GENL000006 FAILED THE AUDIT WITH A RETURN CODE OF 12.

Examining the Audit Report

Here’s an excerpt from the Legend and Summary Report section of the audit report.

ChangeMan(R) ZMF (8.1.0 - 20141010) Audit TUESDAY JANUARY 6, 2015 (2015/006) 18:18:13           Page 13
                                                Legend and Summary Report
The local level of audit chosen at this point;   4
    4 - Audit is required and the return code must not exceed 4 which implies
    that there are no "out-of-synch" situations within the staging libraries
    nor the baseline libraries but at least one module of a staging library
    is a "duplicate" of its baseline counterpart
Out-of-synch messages (hint - search for "!" marks)
    DUPLIC!  (Staging duplicates baseline)       ===>  0
    SYNCH0!  (Not in scope of audit or unknown)  ===> 22
    SYNCH1!  (Cmpnt statistics not available)     ==>  0
    SYNCH2!  (Compile/designated proc differ)    ===>  0
    SYNCH3!  (Unparsable load module)            ===>  0
    SYNCH4!  (cpy/hdr staging problem)           ===>  1
    SYNCH5!  (cpy/hdr baseline problem)          ===>  6
    SYNCH6!  (Activity file not checked out)     ===>  0
    SYNCH7!  (Static subcomponent stage problem)  ==>  0
    SYNCH8!  (Static subcomponent base problem)  ===>  2
    SYNCH9!  (Source and load discrepancy)       ===>  0
    SYNCH10! (Version regression problem)        ===>  0
    SYNCH11! (Component hash discrepancy)        ===>  0
    SYNCH12! (Orphan module in staging)          ===>  0
    SYNCH13! (Baseline/staging discrepancy)      ===>  0
    SYNCH14! (Components not in active status)   ===>  0
    SYNCH15! (Source to relationship problem)    ===>  0
    SYNCH16! (CPY low-date problem in baseline)  ===>  0
    SYNCH17! (CPY deleted problem in staging)    ===>  0
    SYNCH18! (LOD deleted problem in staging)    ===>  0
    SYNCH19! (Missing module in staging)         ===>  0
    SYNCH20! (Inconsistent subroutine)           ===>  0
    SYNCH21! (Scr/rename pkg component)          ===>  0
    SYNCH22! (Scratch subcmpnt is in use)        ===>  0
    SYNCH23! (Rename subcmpnt is in use)         ===>  0
    SYNCH24! (LOD low-date problem in baseline)  ===>  0
    SYNCH25! (LCT high-date problem in package)  ===>  0
    SYNCH26! (LCT -> missing executable)         ===>  0
    SYNCH27! (Missing LCT for executable)        ===>  0
    SYNCH28! (Same component in multiple pkgs)   ===>  0

Highest return code encountered                  ===> 12

It shows the following conditions:

  • Twenty two SYNCH0! conditions.

    A SYNCH0! condition identifies a component that cannot be found in the scope of the audit (that is, in the baseline or staging libraries that are examined). These components are typically runtime language environment modules to which the compiler automatically generates references and which the binder includes in the load modules that are generated for the application. SYNCH0! conditions generate a return code of 0. You can typically ignore them; they do not prevent a package from passing the audit.

    Resolving the SYNCH0! Conditions in the Example provides more details about these SYNCH0! conditions.

  • One SYNCH4! condition.

    Here we have a component GNLSRS00 in the package that has used the copybook GNLCPY00 (also in the package), but the copybook GNLCPY00 has been changed since. Recompile the GNLSRS00 component.

  • Six SYNCH5! conditions.

    When you stage a copybook into a package, the source components that reference the copybook but that are not also staged into the package receive a SYNCH5! condition. This makes sense, because those non-staged source components now reference an obsolete version of the copybook. You typically have to recompile those source components from their baseline libraries to remove the SYNCH5! flags.

  • Two SYNCH8! conditions.

When you stage the source code for a statically linked subprogram into a package and change it, the composite load modules that call this subprogram but that are not also staged into the package receive a SYNCH8! condition. This also makes sense, because those non-staged composite load modules now call an obsolete version of the subprogram. You typically have to relink these composite load modules from their baseline libraries to remove the SYNCH8! flags.

We examine the SYNCH8! conditions that are generated in this sample audit, and show you how to resolve them in Resolving the SYNCH8! Conditions in the Example

Sequencing Considerations

You should plan a sync-resolution strategy before you start to resolve the out-of-sync conditions. The sequence in which you correct the conditions is important. In general, you should recompile and relink subprograms that reference obsolete versions of a copybook before you relink the composite modules that call those subprograms.

This makes sense if you think about it. If you relink a composite module first, and then recompile the subprograms that it calls, you will have to relink the composite module all over again because the subprograms will have a more recent link date than their caller.

Resolving the SYNCH0! Conditions in the Example

We have twenty two SYNCH0! conditions flagged in the sample audit report. If you search the sample report for the text SYNCH0!, you reach the following report section:

ChangeMan(R) ZMF (8.1.0 - 20141010) Audit TUESDAY JANUARY 6, 2015 (2015/006) 18:18:13           Page 11
***************************************************************************************
*Complex/Super Package      ===> ACTP000029 Created 2015/01/06 at 17:56:43 by USER015 *
*Participating Packages     ===> 2              Package Status: OPN                   *
*Component Analysis Type    ===> Static subroutines called within Load members        *
******************************************************************************************************
*--------- B a s e l i n e ---------*       *------------------ S t a g i n g ------------------*
*************************************       *****************************************************
Called Module                         Calling     Called                  Module
Module   Size      Linkdate  Setssi   Module      Module  Package  Dept   Size    Linkdate    Setssi
________ ________ __________ ________ ________ ________ __________ ____ ________ __________  ________
         00001080 2015/01/05 677A9E06 ACPSRC91          ACTP000028 IDD  00001080  2015/01/06  677C168B
CEEARLU  --  Not found or unknown      SYNCH0!
CEEBETBL --  Not found or unknown      SYNCH0!
CEEBINT  --  Not found or unknown      SYNCH0!
CEEBLLST --  Not found or unknown      SYNCH0!
CEEBPIRA --  Not found or unknown      SYNCH0!
CEEBPUBT --  Not found or unknown      SYNCH0!
CEEBTRM  --  Not found or unknown      SYNCH0!
CEECPYRT --  Not found or unknown      SYNCH0!
CEESG005 --  Not found or unknown      SYNCH0!
CEESTART --  Not found or unknown      SYNCH0!
IGZCBSO  --  Not found or unknown      SYNCH0!
        00001080  2015/01/05 677A9E3C ACPSRC99          ACTP000028 IDD   00001080 2015/01/06  677C1D97
CEEARLU  --  Not found or unknown      SYNCH0!
CEEBETBL --  Not found or unknown      SYNCH0!
CEEBINT  --  Not found or unknown      SYNCH0!
CEEBLLST --  Not found or unknown      SYNCH0!
CEEBPIRA --  Not found or unknown      SYNCH0!
CEEBPUBT --  Not found or unknown      SYNCH0!
CEEBTRM  --  Not found or unknown      SYNCH0!
CEECPYRT --  Not found or unknown      SYNCH0!
CEESG005 --  Not found or unknown      SYNCH0!
CEESTART --  Not found or unknown      SYNCH0!
IGZCBSO  --  Not found or unknown      SYNCH0!

In this section of the report:

  • The section heading indicates that this section of the report analyzes statically linked subprograms that are called by main program modules in the LOD library type of the ACTP application.

  • The twenty two subroutines that are flagged with the SYNCH0! condition are all called by main programs ACPSRC91 and ACPSRC99 (which you staged into package ACTP000028).

  • You did not stage these twenty two subroutines into the package (the Staging side of the report has no entries for these routines).

  • ChangeMan ZMF cannot locate these subroutines in the baseline LOD library of the ACTP application (that’s what SYNCH0! means).

  • Upon closer inspection of the subroutine names, you realize that the routines are all IBM language environment runtime modules. The compiler automatically generates a reference to them at the time you compile the caller (ACPSRC91 and ACPSRC99).

  • The return code of a SYNCH0! condition is zero, which means that you can ignore the condition: it does not prevent your package from passing the audit.

Note

You can suppress the appearance of SYNCH0! conditions in an audit report with user exit program CMNEX022. Refer to the ChangeMan ZMF Customization Guide for details.

Resolving the SYNCH5! Conditions in the Example

There are six SYNCH5! conditions in the sample audit report:

Resolving a SYNCH5! Condition for a Statically Linked Subroutine

A search on the text SYNCH5! brings up the section of the audit report that describes Copybooks Found within Source Code for the SRS library type of the GENL application.

This section lists the baselined copybooks that each subroutine that is listed in the Source Name column references (see the Baseline side of the report section).

    ChangeMan(R) ZMF (8.1.0 - 20141010) Audit TUESDAY JANUARY 6, 2015 (2015/006) 18:18:13                   Page 9
***************************************************************************************
*Complex/Super Package      ===> ACTP000029 Created 2015/01/06 at 17:56:43 by USER015 *
*Participating Packages     ===> 2 Package Status: OPN                                *
*Component Analysis Type    ===> Copybooks found within Source code                   *
************************************************************************************************************************************
*--------------------- B a s e l i n e ---------------------*       *---------------------- S t a g i n g ----------------------*
*************************************************************       *************************************************************
Copybook                                    Source Copybook
Name     VV.MM Created    Changed          Size Init Tso-id   Name     Name     VV.MM   Package     Changed       Size  Dept Tso-id
________ _____ __________ ________________ ____ ____ ________ ________ ________ _____  __________ ________________ ____ ____ ________
         01.02 2014/12/19 2015/01/04 19:34 23   21   USER015 GNLSRS00           02.01 GENL000006  2015/01/06 17:21 24   IDD  USER015
GNLCPY00 03.01 2002/05/07 2015/01/01 21:43 5     1   USER015 SYNCH4! GNLCPY00   04.01 GENL000006  2015/01/06 18:03  6   IDD  USER015
         01.01 2015/01/01 2015/01/04 19:48 29   29   USER015 GNLSRS1B
GNLCPY00 03.01 2002/05/07 2015/01/01 21:43 5     1   USER015 SYNCH5! GNLCPY00   04.01 GENL000006  2015/01/06 18:03  6   IDD  USER015
GNLCPY1B 01.01 2014/12/23 2014/12/23 17:41 4     4   USER015
GNLCPY1C 01.01 2014/12/23 2014/12/23 17:38 4     4   USER015
         01.02 2014/12/23 2014/12/23 18:09 26   26   USER015 GNLSRS1C
GNLCPY00 03.01 2002/05/07 2015/01/01 21:43 5     1   USER015 SYNCH5! GNLCPY00   04.01 GENL000006  2015/01/06 18:03  6   IDD  USER015
GNLCPY1C 01.01 2014/12/23 2014/12/23 17:38 4     4   USER015
         01.04 2002/05/07 2014/12/23 18:09 29   23   USER015 GNLSRS5A
GNLCPY00 03.01 2002/05/07 2015/01/01 21:43 5     1   USER015 SYNCH5! GNLCPY00   04.01 GENL000006  2015/01/06 18:03  6   IDD  USER015
GNLCPY1X 01.02 2002/05/07 2014/12/23 17:56 4     1   USER015
GNLCPY5A 01.02 2002/05/07 2014/12/23 17:56 5     1   USER015
GNLCPY5B 01.02 2002/05/07 2014/12/23 17:57 4     1   USER015
         01.02 2002/05/07 2014/12/23 18:05 27   15   USER015 GNLSRS5B
GNLCPY00 03.01 2002/05/07 2015/01/01 21:43 5     1   USER015 SYNCH5! GNLCPY00   04.01 GENL000006  2015/01/06 18:03  6   IDD  USER015
GNLCPY5B 01.02 2002/05/07 2014/12/23 17:57 4     1   USER015
GNLCPY5C 01.02 2002/05/07 2014/12/23 18:00 4     1   USER015
         01.02 2002/05/07 2014/12/23 18:06 25   15   USER015 GNLSRS5C
GNLCPY00 03.01 2002/05/07 2015/01/01 21:43 5     1   USER015 SYNCH5! GNLCPY00   04.01 GENL000006  2015/01/06 18:03  6   IDD  USER015
GNLCPY5C 01.02 2002/05/07 2014/12/23 18:00 4     1   USER015

The GNLCPY00 copybook is flagged with a SYNCH5! condition for the following statically linked subroutines:

  • GNLSRS1B

  • GNLSRS1C

  • GNLSRS5A

  • GNLSRS5B

  • GNLSRS5C

The line item for each of these subroutines on the Staging side of the report is blank, which means that you did not stage the subroutine into a package. However, because you changed copybook GNLCPY00 and staged it into the package, these five baselined subroutines now reference an obsolete copy of the GNLCPY00 copybook.

To resolve the SYNCH5! conditions, you need to recompile and relink each subroutine from baseline (option =1.8, Recompile Source Code from Baseline or Production). This action will place a new load module of each subroutine into your package. This action does not stage the corresponding source module into the package. You don’t need the source modules in the package because you are not changing them. That is, you only need a new load module to ensure that the modules reference the latest version of the copybook when you baseline the package.

Compare the entries for these subroutines with the entry for the GNLSRS00 subroutine (the first entry on the report), which shows staging information because you checked that subroutine out to the package and changed, recompiled, and relinked it. Therefore, it

references the latest version of the GNLCPY00 copybook and the reference is not flagged with a SYNCH5! condition.

To resolve these SYNCH5! conditions:

  1. Select the Recompile option (=1.8) from the Build Options menu. The Recompile Source panel (CMNRCMPR) panel appears.

    CMNRCMPR Recompile Source
    Option ===>
    blank Member selection list L List libraries containing component
    Package . . . . . . . . . GENL000006
    Component name . . . . . +
    Source library type . . . SRS (Blank for list)
    Library level . . . . . . 0 (Baseline 0, Promotion 1 to nn)
    Recompile mode . . . . . 1 (1-Online, 2-Batch)
    Enter "/" to select option
    Search release areas
    Specify release areas
    
  2. Fill in the panel as follows:

    a. You get the Package Id (GENL000006, in this example) from the Copybooks Found within Source Code section of the audit report.

    b. The Source Library Type (SRS, in this example) is also identified in the Copybooks Found with Source Code section of the audit report.

    c. The Library Level is 0 (you want to recompile the baseline image of the subroutines in this example).

    d. You can take the action in online or batch mode. (We choose online in this example.)

  3. If you have multiple subroutines to recompile, you can leave the Component Name blank to display the Recompile Member List (CMNRCMP2) panel, from which you can select the subroutines that you want to recompile. In this example, the five subroutines that were associated with the SYNCH5! condition are selected (with the S line command in the line command field for each line item):

    CMNRCMP2 Recompile Member List          Row 1 to 7 of 7
    Command ===>__________________________ Scroll ===> CSR
                                                         ID
    Input library:
    CMNTP.S6.V810.BASE.GENL.SRS
    
       Name     Function vv.mm Created    Changed          Size Init User
    __ GNLSRS00          01.02 2014/12/19 2015/01/04 19:34 23   21   USER015
    __ GNLSRS01          01.03 2008/09/08 2014/12/23 18:08 23   22   USER015
    s  GNLSRS1B          01.01 2015/01/01 2015/01/04 19:48 29   29   USER015
    s  GNLSRS1C          01.02 2014/12/23 2014/12/23 18:09 26   26   USER015
    s  GNLSRS5A          01.04 2002/05/07 2014/12/23 18:09 29   23   USER015
    s  GNLSRS5B          01.02 2002/05/07 2014/12/23 18:05 27   15   USER015
    s  GNLSRS5C          01.02 2002/05/07 2014/12/23 18:06 25   15   USER015
    ******************************* Bottom of data  ********************************
    
  4. Press Enter to submit the recompile requests. The Confirm Recompile Request (CMNRCMPC) panel is displayed for each subroutine that you have selected. Press Enter to confirm each request and continue.

    CMNRCMPC                Confirm RECOMPILE Request
    Command ===>______________________________________________
    Package:        GENL000006
    Component name: GNLSRS1B +
              type: SRS
    Language:       COBOL2
    Changed date:   20150104
            time:   19:48
    Procedure:      CMNCOB2
    User:           USER015
    Site:           BASELINE
    Level:
    
  5. The Online Recompile Job Information (CMNRCMP1) panel appears. The fields on this panel will be filled in with the values used the last time you recompiled and relinked the target subroutine. You should not need to change these values.

    CMNRCMP1    ONLINE Recompile Job Information        HISTORY ASSUMED
    Command ===>_________________________________________
    
    Package: GENL000006     Status: DEV     Install date: 20150228
    
    Component:      GNLSRS1B                                            +
    Library type: SRS - Source for subprograms to be Linked NCAL
    Dataset name: CMNTP.S6.V810.BASE.GENL.SRS                           +
    
    Language . . . . . . . COBOL2 (Blank for list)
    Compile procedure . . CMNCOB2 (Blank for list; ? for designated procedure)
    Compile parms . . . . _________________________________________
    Pgm binder parms . . . NCAL
    
    Enter "/" to select option
    __ Db2 precompile
    __ Precompile variables
    __ Display Other options
    __ Suppress batch messages
    
    Job statement information:
    //USER0151 JOB (SM-1IKF-SM),'GENL06',
    //      CLASS=A,
    //      MSGCLASS=X,
    //      NOTIFY=USER015
    
  6. Press Enter to submit the job.

  7. You will repeat the steps described here for each subroutine that you have selected to recompile and relink on the Recompile Member List panel shown in Step 3.

You can often introduce more out-of-sync conditions in your packages by submitting jobs to resolve the existing ones in the incorrect sequence. To avoid this problem, wait until you have received notification that the like-load library members for each of the subroutines are active in your package before you continue resolving the out-of-sync conditions that are flagged in the audit.

Tip

If you are unsure of the status of the components in a package, you can display all of the component statuses by selecting option 5 (List) from the Primary Options menu then select the package with an S2, and observe the Status column.

Resolving the SYNCH5! Condition for a Main Program

The reference to copybook GNLCPY00 in module GNLSRC1A is flagged with the remaining SYNCH5! condition. In our sample application, GNLSRC1A is a main program. In the audit report, this SYNCH5! appears in the Copybooks Found within Source Code section for the SRC library type of the GENL application.

...

ChangeMan(R) ZMF (8.1.0 - 20141010) Audit TUESDAY JANUARY 6, 2015 (2015/006) 18:18:13       Page 10
**************************************************************************************
*Complex/Super Package   ===> ACTP000029 Created 2015/01/06 at 17:56:43 by USER015   *
*Participating Packages  ===> 2 Package Status: OPN                                  *
*Component Analysis Type ===> Copybooks found within Source code                     *
************************************************************************************************************************************
*--------------------- B a s e l i n e ---------------------*   *---------------------- S t a g i n g ----------------------*
*************************************************************   *************************************************************
Copybook                                                       Source Copybook
Name      VV.MM Created  Changed           Size Init Tso-id    Name    Name    VV.MM  Package    Changed          Size Dept Tso-id
________ _____ __________ ________________ ____ ____ ________ ________ ________ _____ __________ ________________ ____ ____ ________
         01.01 2002/05/07 2015/01/05 01:22 28   23    USER015 GNLSRC1A
GNLCPY00 03.01 2002/05/07 2015/01/01 21:43 5     1    USER015 SYNCH5! GNLCPY00 04.01 GENL000006   2015/01/06 18:03 6   IDD   USER015
GNLCPY1A 01.02 2002/05/07 2014/12/23 17:55 5     1    USER015
GNLCPY1B 01.01 2014/12/23 2014/12/23 17:41 4     4    USER015
GNLCPY1X 01.02 2002/05/07 2014/12/23 17:56 4     1    USER015

The line item for main program GNLSRC1A on the Staging side of the report is blank, which indicates that you did not stage the main program into a package. Because you did change copybook GNLCPY00 and stage it into the package, this main program now references an obsolete copy of the GNLCPY00 copybook and is therefore flagged with a SYNCH5! condition.

To resolve this condition, you need to recompile and relink the main program from baseline (option =1.8, Recompile). This action will place a new load image of the main program into your package. However, the corresponding source program is not staged into the package. You do not need the source program in your package because you are not changing it. You only need a new load image to ensure that the module references the latest version of the copybook when you baseline the package.

You followed the same procedure described in Resolving a SYNCH5! Condition for a Statically Linked Subroutine, so we will not repeat the procedure here.

Running Another Audit

All the SYNCH5! conditions that were flagged in the preceding audit report should now be resolved. You can rerun the audit at any time to check your progress. Here’s the Legend and Summary Report section from a new audit report:

    ChangeMan(R) ZMF (8.1.0 - 20141010) Audit TUESDAY JANUARY 6, 2015   (2015/006) 19:49:46         Page 14

                                              Legend and Summary Report
The local level of audit chosen at this point; 4
     4 - Audit is required and the return code must not exceed 4 which implies
         that there are no "out-of-synch" situations within the staging libraries
         nor the baseline libraries but at least one module of a staging library
         is a "duplicate" of its baseline counterpart
Out-of-synch messages (hint - search for "!" marks)
    DUPLIC!  (Staging duplicates baseline)       ===> 0
    SYNCH0!  (Not in scope of audit or unknown)  ===> 33
    SYNCH1!  (Cmpnt statistics not available)    ===> 0
    SYNCH2!  (Compile/designated proc differ)    ===> 0
    SYNCH3!  (Unparsable load module)            ===> 0
    SYNCH4!  (cpy/hdr staging problem)           ===> 0
    SYNCH5!  (cpy/hdr baseline problem)          ===> 0
    SYNCH6!  (Activity file not checked out)     ===> 0
    SYNCH7!  (Static subcomponent stage problem) ==>  1
    SYNCH8!  (Static subcomponent base problem)  ===> 4
    SYNCH9!  (Source and load discrepancy)       ===> 0
    SYNCH10! (Version regression problem)        ===> 0
    SYNCH11! (Component hash discrepancy)        ===> 0
    SYNCH12! (Orphan module in staging)          ===> 0
    SYNCH13! (Baseline/staging discrepancy)      ===> 0
    SYNCH14! (Components not in active status)   ===> 0
    SYNCH15! (Source to relationship problem)    ===> 0
    SYNCH16! (CPY low-date problem in baseline)  ===> 0
    SYNCH17! (CPY deleted problem in staging)    ===> 0
    SYNCH18! (LOD deleted problem in staging)    ===> 0
    SYNCH19! (Missing module in staging)         ===> 0
    SYNCH20! (Inconsistent subroutine)           ===> 0
    SYNCH21! (Scr/rename pkg component)          ===> 0
    SYNCH22! (Scratch subcmpnt is in use)        ===> 0
    SYNCH23! (Rename subcmpnt is in use)         ===> 0
    SYNCH24! (LOD low-date problem in baseline)  ===> 0
    SYNCH25! (LCT high-date problem in package)  ===> 0
    SYNCH26! (LCT -> missing executable)         ===> 0
    SYNCH27! (Missing LCT for executable)        ===> 0
    SYNCH28! (Same component in multiple pkgs)   ===> 0

Highest return code encountered           ===>12

Note that:

  • All the SYNCH5! conditions have been fixed (which you expect).

  • There are eleven new SYNCH0! conditions. Thirty-three SYNCH0! conditions are now flagged instead of the original twenty-two. This is to be expected. Here’s why: During the recompile of main program GNLSRC1A, the compiler automatically generated references to more IBM Language Environment routines that ChangeMan ZMF knows nothing about.

  • You can ignore the SYNCH0! messages. They result in a zero return code and do not prevent the package from passing the audit.

Note

Your ChangeMan ZMF administrator can suppress the appearance of SYNCH0!conditions in an audit report with a user exit modification. Refer to the ChangeMan ZMF Customization Guide for details.

  • One SYNCH7! condition. This was a result of doing the recompile for one of the subroutines without later recompiling the GNLSRC1A component which statically links it. A quick recompile resolved that.

  • Four SYNCH8! conditions are flagged instead of the original two. Here’s why: Recompiling main program GNLSRC1A in a preceding step to resolve a SYNCH5! condition also resolved one of the original SYNCH8! conditions. The process of

recompiling the GNLSRC5A, GNLSRC5B, and GNLSRC5C subroutines, however, introduced three new SYNCH8! conditions.

Tip

The act of resolving one type of out-of-sync condition frequently introduces other out-of-sync conditions. You can expect this to happen. If you have carefully planned the sequence of actions to resolve the out-of-sync conditions, you will eventually get a clean audit. See Sequencing Considerations for guidance.

Resolving the SYNCH7! condition in the example

This excerpt shows the SYNCH7! condition in the audit:

ChangeMan(R) ZMF (8.1.0 - 20141010) Audit TUESDAY JANUARY 6, 2015 (2015/006) 19:49:46 Page 13
***************************************************************************************
*Participating Package      ===> GENL000006 Created 2015/01/06 at 17:18:12 by USER015 *
*Package Installation Date  ===> 2015/02/28 Package Status: DEV Department IDD        *
*Component Analysis Type    ===> Static subroutines called within Load members        *
*Load member Appl:Libtype   ===> GENL:LOD                                             *
******************************************************************************************************
*--------- B a s e l i n e ---------*        *------------------ S t a g i n g ------------------*
************************************* *****************************************************
Called   Module                       Calling  Called    Module
Module   Size      Linkdate   Setssi   Module   Module   Package     Dept Size     Linkdate   Setssi
________ ________ __________  ________ ________ ________ __________ ____ ________ __________ ________

          00001EB0 2015/01/05 6779DECC GNLSRC1A           GENL000006 IDD 00001EB0 2015/01/06 677C2F59
CEEARLU  -- Not found or unknown SYNCH0!
CEEBETBL -- Not found or unknown SYNCH0!
CEEBINT  -- Not found or unknown SYNCH0!
CEEBLLST -- Not found or unknown SYNCH0!
CEEBPIRA -- Not found or unknown SYNCH0!
CEEBPUBT -- Not found or unknown SYNCH0!
CEEBTRM  -- Not found or unknown SYNCH0!
CEECPYRT -- Not found or unknown SYNCH0!
CEESG005 -- Not found or unknown SYNCH0!
CEESTART -- Not found or unknown SYNCH0!
GNLSRS00 00000458 2015/01/05 6779D8A9  SYNCH7!  GNLSRS00  GENL000006 IDD 00000458 2015/01/06 677C1124
GNLSRS1B 000004C8 2015/01/05 6779D8A9           GNLSRS1B  GENL000006 IDD 000004C8 2015/01/06 677C2D02
GNLSRS1C 00000498 2015/01/05 6779D8A9           GNLSRS1C  GENL000006 IDD 00000498 2015/01/06 677C2D11
IGZCBSO  -- Not found or unknown SYNCH0!

         00001EB0 2015/01/05 6779D9B2  GNLSRC50
GNLSRS00 00000458 2015/01/05 6779D8A9  SYNCH8!  GNLSRS00  GENL000006 IDD 00000458 2015/01/06 677C338E
GNLSRS5A 000004C8 2015/01/05 6779D8A9  SYNCH8!  GNLSRS5A  GENL000006 IDD 000004C8 2015/01/06 677C2D11
GNLSRS5B 000004C8 2015/01/05 6779D8B6  SYNCH8!  GNLSRS5B  GENL000006 IDD 000004C8 2015/01/06 677C2D1F
GNLSRS5C 00000498 2015/01/05 6779D8B6  SYNCH8!  GNLSRS5C  GENL000006 IDD 00000498 2015/01/06 677C2D2C

Note

The setssi values for GNLSRS00 both in the GNLSRC1A module and in the GNLSRC50 module - they are different and the one in the GNLSRC1A module is earlier than the setssi value for GNLSRS00 in GNLSRC50. To resolve that, all that is needed is to recompile GNLSRC1A.

Resolving the SYNCH8! Conditions in the Example

The following excerpt from the next audit report shows the four SYNCH8! conditions.

ChangeMan(R) ZMF (8.1.0 - 20141010) Audit TUESDAY JANUARY 6, 2015 (2015/006) 19:55:16             Page 13
**************************************************************************************
*Participating Package      ===> GENL000006 Created 2015/01/06 at 17:18:12 by USER015 *
*Package Installation Date  ===> 2015/02/28 Package Status: DEV Department IDD        *
*Component Analysis Type    ===> Static subroutines called within Load members        *
*Load member Appl:Libtype   ===> GENL:LOD                                             *
******************************************************************************************************
*--------- B a s e l i n e ---------*           *------------------ S t a g i n g ------------------*
************************************* *****************************************************
Called   Module                       Calling   Called   Module
Module   Size     Linkdate   Setssi   Module    Module   Package   Dept Size     Linkdate   Setssi
________ ________ __________ ________ ________ ________ __________ ____ ________ __________ ________
         00001EB0 2015/01/05 6779DECC GNLSRC1A          GENL000006 IDD  00001EB0 2015/01/06 677C34D6
CEEARLU  -- Not found or unknown SYNCH0!
CEEBETBL -- Not found or unknown SYNCH0!
CEEBINT  -- Not found or unknown SYNCH0!
CEEBLLST -- Not found or unknown SYNCH0!
CEEBPIRA -- Not found or unknown SYNCH0!
CEEBPUBT -- Not found or unknown SYNCH0!
CEEBTRM  -- Not found or unknown SYNCH0!
CEECPYRT -- Not found or unknown SYNCH0!
CEESG005 -- Not found or unknown SYNCH0!
CEESTART -- Not found or unknown SYNCH0!
GNLSRS00 00000458 2015/01/05 6779D8A9 GNLSRS00          GENL000006 IDD 00000458  2015/01/06 677C338E
GNLSRS1B 000004C8 2015/01/05 6779D8A9 GNLSRS1B          GENL000006 IDD 000004C8  2015/01/06 677C2D02
GNLSRS1C 00000498 2015/01/05 6779D8A9 GNLSRS1C          GENL000006 IDD 00000498  2015/01/06 677C2D11
IGZCBSO  -- Not found or unknown SYNCH0!
         00001EB0 2015/01/05 6779D9B2 GNLSRC50
GNLSRS00 00000458 2015/01/05 6779D8A9 SYNCH8!  GNLSRS00 GENL000006 IDD 00000458  2015/01/06 677C338E
GNLSRS5A 000004C8 2015/01/05 6779D8A9 SYNCH8!  GNLSRS5A GENL000006 IDD 000004C8  2015/01/06 677C2D11
GNLSRS5B 000004C8 2015/01/05 6779D8B6 SYNCH8!  GNLSRS5B GENL000006 IDD 000004C8  2015/01/06 677C2D1F
GNLSRS5C 00000498 2015/01/05 6779D8B6 SYNCH8!  GNLSRS5C GENL000006 IDD 00000498  2015/01/06 677C2D2C

A SYNCH8! condition occurs when statically linked subroutines in a staging library are changed more recently than a composite load module in baseline that calls them. That is what happened here:

  • You originally staged GNLSRS00 into the sample GENL000006 change package.

  • You staged load components for GNLSRS5A, GNLSRS5B, and GNLSRS5C when you recompiled and relinked these subroutines to fix the SYNCH5! conditions described in Resolving the SYNCH5! Conditions in the Example.

  • The composite load module GNLSRC50, which resides in a baseline library and which you did not stage into the sample packages used in this example, refers to these four subroutines. Thus, GNLSRC50 now calls obsolete versions of these statically linked subroutines.

You should be familiar with the components of the applications you work with so you know what to look for when you resolve an out-of-sync condition. In our sample application, GNLSRC50 consists of link-edit control statements that gather these subroutines together into a composite load module named GNLSRC50. GNLSRC50 is a member of the LCT library associated with the sample GENL application. Here’s a listing of the contents of this component:

BROWSE CMNTP.S6.V810.BASE.GENL.LCT(GNLSRC50) - 01.01 Line 00000000 Col 001 080
Command ===> ________________________________________________ Scroll ===> CSR
********************************* Top of Data **********************************
INCLUDE SYSLIB(GNLSRS5A)
INCLUDE SYSLIB(GNLSRS5B)
INCLUDE SYSLIB(GNLSRS5C)
INCLUDE SYSLIB(GNLSRS00)
    NAME GNLSRC50(R)
******************************** Bottom of Data ********************************

You need to relink this composite load module to resolve the SYNCH8! conditions. Take the following steps:

  1. Select Relink (=1.9) and the Relink Load Modules (CMNRLNK0) panel is displayed.

    CMNRLNKR                Rebind Load Modules
    Command ===>____________________________________________
    Package . . . . . . . . . GENL000006
    Rebind from . . . . . . . B                  (S(tage),B(aseline),R(elease))
    Input library type . . .  LOS                (Blank for list)
    Target library type . . . LOD                (Blank for list)
    Member name . . . . . . . _________________+ (Blank/Pattern for list)
    
    Enter "/" to select option
    __ Specify release area
    /  LCT member list
    
  2. Fill in the panel as shown above:

    a. Package GENL000006 contains load images of the statically linked subroutines that are to be relinked into the GNLSRC50 composite.

    b. You want to relink from the Baseline library because the target LCT member has not been staged into the package.

    c. Select LCT Member List because the LCT member (GNLSRC50) exists.

    d. Specify the library type of the subroutines to be relinked in response to the Input Library Type prompt. The library type associated with the load images of these subroutines is LOS in this example.

    e. Specify the library type of the composite load module that will be created during the relink operation in response to the Output Library Type prompt. The library type associated with composite load modules is LOD in this example.

    f. You can leave the member name blank and press Enter to get a list of LCT library members to choose from. If you do, the CMNRMLST panel is displayed. Select LCT member GNLSRC50.

    CMNRMLST        Library Member List         Row 1 to 1 of 1
    Command ===>______________________________ Scroll ===> CSR
    
    Input library:
    CMNTP.S6.V810.BASE.GENL.LCT
    
    Name        +   Function Created        Changed          Size     User
    s GNLSRC50               2015/01/01     2015/01/01 22:32 00000005 USER015
    ******************************* Bottom of data ********************************
    
  3. Type the letter S in the line command field to select the desired member and press Enter.

    An informational panel appears that lists all currently active packages that include the target LCT member as a component (if any). If this panel appears, you need to check with the user specified in the Notify user field of the packages to be sure you understand how the component is being treated in those packages before you continue with the relink operation.

  4. The Relink Job Information (CMNRLNK1) panel appears.

    CMNRLNK1                Rebind Job Information
    Command ===> ____________________________________________________
    
    Package:         GENL000006         Status: BAS          Install date:
    
    Member name:     GNLSRC50                                               +
    Dataset name:    CMNTP.S6.V810.BASE.GENL.LCT                            +
    LCT member list: YES Input library type: LOS Target library type: LOD
    
    Language . . . . . . . . COBOL2 (Blank for list)
    Compile procedure . . .  CMNCOB2 (Blank for list)
    Pgm binder parms . . . . _________________________________
    
    Enter "/" to select option
    _ Db2 processing    _ Other Db2 options
    _ Other options     _ User variables
    _ Suppress batch messages
    
    Job statement information:
    //USER015R JOB (SM-1IKF-SM),'GENL06',
    //      CLASS=A,
    //      MSGCLASS=X,
    //      NOTIFY=USER015
    

    ...

    The fields are primed with the values that you specified on the Relink Load Modules (CMNRLNK0) panel above and with values that were specified the last time you relinked the module. You should not have to change the field values.

  5. Press Enter to submit the job.

  6. Examine the job’s output to ensure that the target composite load module was created without error.

  7. Run another audit. All the out-of-sync conditions in this scenario should now be resolved. The following messages are displayed after the audit completes, indicating that the complex package and its two participating packages passed the audit with zero return codes:

CMN2668I - COMPLEX PACKAGE ACTP000029 PASSED THE AUDIT WITH A RETURN CODE OF 00. CN(INTERNAL) 
CMN2666I - PARTICIPATING PACKAGE ACTP000028 PASSED THE AUDIT WITH A RETURN CODE OF 00. CN(INTERNAL) 
CMN2666I - PARTICIPATING PACKAGE GENL000006 PASSED THE AUDIT WITH A RETURN CODE OF 00. CN(INTERNAL)
\*\*\*