Skip to content

Complex Sample Session

For this session, the base member is called ASMBLBAS and the three derivatives are:

  • ASMBLDV1

  • ASMBLDV2

  • ASMBLDV3

We assume that all four members exist in somnode.CMNZMF.SAMPLES.

Here are the tasks associated with this session:

The Scenario

Summary: Vendor software has been modified before being deployed into production, and you want to incorporate a new release of the vendor software while maintaining the inhouse customization.

In detail:

  • A couple of years ago, the Accounts Receivable Department of A.B.C. Company required a daily transaction report. The Trivial Software Company offered a package, PROGNAME, that reads an input file and produces that kind of report.

  • The Information Services Department of A.B.C. Company bought PROGNAME and modified the report's default format.

  • The Accounts Payable Department wanted to use the package. Understandably, it had different requirements for the report format, so a modified version called PGMACPAY was also installed.

  • The Accounts Payable users were not as accurate as their colleagues in preparing the input file to run the daily transaction report. When PGMACPAY crashed, the support programmer decided to include code to test whether the input file had been opened successfully. If not, the new code would terminate the program with a non-zero return code and display a message to the operator console.

  • The Trivial Software Company has just announced a new release of its PROGNAME package that is reentrant and accepts a start parameter. It has also announced that the support of the previous release will soon end.

  • The A.B.C. Company has decided to upgrade to the new release, because it now ensures that both departments use only one copy of the package. A programmer has been assigned to install the new release while keeping all the customizations intact.

The following discussion shows you how that programmer can use M+R to accomplish the code reconciliation.

Establishing Your Profile

You need to select 0 (PROFILE) from the Member Reconciliation menu, then 1 (COMPARE options). Ensure that TEXT Type is either a period (wildcard character) or BAL. Press [PF3] END and select 3 (EDITING). Set the Include Prefix to YES. Press [PF3] END and select 5 (DATA SETS), then fill in the profile data sets as suggested below using your TSO user ID instead of CDFUSER.

SERDSNML ---------------------- PROFILE DATA SETS ----------------------------

WIS DSNAME          ===> CDFUSER.CDF.WIS_______________________

Print DSNAME        ===> CDFUSER.CDF.PRINT_____________________

Export DSNAME       ===> CDFUSER.CDF.EXPORT____________________

Export DSORG        ===> PDS_____ (PDS, SEQ, PAN, LIB, or blank)

Export Member Mask  ===> ________ (Mask to rename Base members on export)

LIB Module Name     ===> LIBR____ (LIBrarian update module name: LIBR, LIBRARY)

Press ENTER to validate and stay; END to register and exit; CANCEL to exit.

Enter [PF3] END to return to the Member Reconciliation menu.

Defining the Base and Derivatives to M+R

From the Member Reconciliation menu, select 1 (VERSIONS). The Versions panel displays. Fill in the data set names, members, nicknames, and IDs. You may leave the Type blank.

SERCDFCM ------------------------- VERSIONS ----------------------------------
Command ===> _________________________________________________________________

    CMN Export Package: __________  LibType: ___  
                                                   -MEMBER--- TYPE NICKNAME ID  
Base: somnode.CMNZMF.SAMPLES___________________    asmblbas__ ___  original -
                                    Last Member: __________ 
        or CMN Appl/Pkg: __________ LibType: ___  
Drv1: somnode.CMNZMF.SAMPLES______________________ asmbldv1__ ___  receivbl r 
        or CMN Appl/Pkg: __________ LibType: ___  
Drv2: somnode.CMNZMF.SAMPLES______________________ asmbldv2__ ___  payable_ p 
        or CMN Appl/Pkg: __________ LibType: ___  
Drv3: somnode.CMNZMF.SAMPLES______________________ asmbldv3__ ___  new_rels n 
        or CMN Appl/Pkg: __________ LibType: ___  
Drv4: ____________________________________________ __________ ___  ________ _ 
        or CMN Appl/Pkg: __________ LibType: ___  
Drv5: ____________________________________________ __________ ___  ________ _ 
        or CMN Appl/Pkg: __________ LibType: ___  
Drv6: ____________________________________________ __________ ___  ________ _ 
        or CMN Appl/Pkg: __________ LibType: ___  
Drv7: ____________________________________________ __________ ___  ________ _ 
        or CMN Appl/Pkg: __________ LibType: ___  

Press ENTER to validate and stay; END to register and exit; CANCEL to exit.

Press [PF3] END to register the specifications and return to the Member Reconciliation menu.

Running M+R

From the Member Reconciliation menu, select 2 (EXECUTE). As M+R executes, the In Progress panel displays, followed then by the Reconcile panel, shown below.

View All ------------------------- RECONCILE -------------- ROW 1 TO 20 OF 213  
COMMAND ===>                                                  SCROLL ===> CSR 
R:RECEIVBL P:PAYABLE N:NEW_RELS  
******************************** TOP OF DATA **********************************  
000000 ********/* 2000/12/04 17:12:21 somnode.CMNZMF.SAMPLES 
Records in Exported File:  
                |------------------------------------------------ 
                |DEGREE OF COMPLEXITY: 9 HIGH  
                |-------------------------------------------------  
                |        RECORDS |   CONFLICTS   |SINGLE CHANGES |  
                |----------------|---------------|---------------|  
                |NICKNAMES       |PREV CURR DIFF |PREV CURR DIFF |  
                |----------------|---------------|---------------|  
                |ORIGINAL     68 |        3   0% |       30   0% |  
                |----------------|---------------|---------------|  
                |RECEIVBL     70 |        3   0% |        0   0% |  
                |----------------|---------------|---------------|  
                |PAYABLE      85 |       13   0% |        9   0% |  
                |----------------|---------------|---------------|  
                |NEW_RELS    131 |        9   0% |       81   0% |  
                |----------------|---------------|---------------|  
                |RECONCIL        |        0   0% |        0   0% |  
                |----------------|---------------|---------------|  
                |         TOTAL: |       28   0% |      120   0% |  

With this panel, M+R has initially analyzed the complexity of the reconciliation work ahead. It has classified the complexity as 9 HIGH on a scale from 1 to 10. The analysis table also indicates the following:

  • The current release of PROGNAME (nicknamed original) has 68 lines of code, 30 of which were changed by 81 records in the new release nicknamed new_rels and by 9 records in the payable derivative. These changes, however, do not overlap; that is, they are single changes. The derivative nicknamed receivbl made no single changes.

  • Three records of original were changed by more than one derivative. A total of 25 records of receivbl, payable, and new_rels are in conflict; that is, they are competing changes to the same 3 records in original. Because payable contributes 13 records in conflict (roughly half of the total number of conflicting records), it will probably be the most difficult to reconcile.

  • Almost half of the original records, 33 out of 68, have been changed.

This explains why the reconciliation is rated complex.

Note

Although these initial analysis records appear only once, you can export/print them as part of the consolidated versions: 6 (EXPORT) and 6P(PRINT). You can prevent their display by setting the Include Prefix to NO—see 3 (EDITING options) on the Profile panel.

Scroll down [PF8] to see the next page of the Reconcile panel.

View All ------------------------- RECONCILE ------------- ROW 21 TO 41 OF 213
COMMAND ===>                                                  SCROLL ===> CSR 
  R:RECEIVBL P:PAYABLE N:NEW_RELS  
                  |-------------------------------------------------
                         Reconciliation Scope:
        NICKNAME MEMBER    LAST MODIFIED    USER ID DATA    SET    NAME
        ------------------------------------------------------------------
        ORIGINAL ASMBLBAS  2000/11/21 15:52 SERENA  somnode.CMNZMF.SAMPLES 
        RECEIVBL ASMBLDV1  2000/11/21 15:52 SERENA  somnode.CMNZMF.SAMPLES
        PAYABLE  ASMBLDV2  2000/11/21 15:52 SERENA  somnode.CMNZMF.SAMPLES
        NEW_RELS ASMBLDV3  2000/11/21 15:52 SERENA  somnode.CMNZMF.SAMPLES
        RECONCIL           2000/12/04 17:12 CDFUSER Current Work
        ------------------------------------------------------------------
< 0001 PROGNAME CSECT
<>_P__ PGMACPAY CSECT
000002          STM     R14,R12,12(R13)     save caller's registers
000003          LR      R12,R15             get program address
< 0004          USING   PROGNAME,R12        addressability
<>_P__          USING   PGMACPAY,R12        addressability
000005          B       AROUND              go around label
< 0006          DC      CL8'PROGNAME'         program name
<>_P__          DC      CL8'PGMACPAY'         program name
000007          DC      CL8'&SYSDATE'         date assembled
000008          DC      CL6'&SYSTIME'         time assembled

The line following the command line (R:RECEIVBL P:PAYABLE N:NEW_RELS) relates the derivatives' IDs (R, P and N) with their nicknames. The "Reconciliation Scope" section of the analysis table associates the nicknames with the data set names. 

  • -: ORIGINAL - somnode.CMNZMF.SAMPLES(ASMBLBAS)

  • R: RECEIVBL - somnode.CMNZMF.SAMPLES(ASMBLDV1)

  • P: PAYABLE - somnode.CMNZMF.SAMPLES(ASMBLDV2)

  • N: NEW_RELS - somnode.CMNZMF.SAMPLES(ASMBLDV3)

In the line command area above, the composition <>P is an M+R visual clue of the change that has been made. It implies that these base records have been replaced in payable; that is, are different from the base records above them. The base records themselves are marked with a "<" (less than sign) to show that they are missing in the derivative P.

Investigating the Versions

From the Reconcile panel, you can issue M+R primary commands to evaluate the versions and their relationships with each other:

  • Use the M+R VIEW and EXCLUDE commands to generate different views from the M+R database.
  • Use the M+R command pair EXCLUDE/RESET for the base and any derivative while within any of the contexts.

A short recap of the M+R Version Browser main contexts (views) follows:

  • V $ - displays the conflicts: i.e., base records changed differently by more than one derivative and those changes.

  • X $ - excludes the conflicts and displays base records changed by one derivative only and those changes.

    Note

    If the profile setting is AUTOOVERRIDE=YES, these base records will be overridden by their single changes in the consolidated version.

  • V # - displays the consolidated version at that moment in time—the so- called remaining code (i.e., the not deleted, not overridden and not overtyped records).

  • X # - excludes the remaining code and displays the deleted base/derivative records and the overridden base records so that you can check whether or not it is OK to leave that code aside from the consolidated version; note the cut and pasted base/ derivative records are not included in that view as they are not actually deleted but just moved around.

  • V * - displays all records, including the deleted and overtyped base/derivative records.

  • X * - excludes everything so that you can use RESET command to view either the base or one or more derivatives; note that the same effect can be achieved by one of the next two commands.

  • V @ - displays all base records that are not deleted or overtyped.

  • V letter - displays all not deleted/overtyped records of a derivative with that letter as an ID; note that the next V command(s) will add the changes made by the second and subsequent derivatives to those already displayed.

While in any of the above main contexts, the base and/or one or more derivatives can be excluded/included through the commands X @, R @, X letter, and R letter.

V P (View Payable derivative)

On the Reconcile panel, let's enter VIEW P, view p, or V P (view payable) to see changes to the original base from the second derivative. (Recall that P is the derivative ID of payable.) The Reconcile panel, shown below, appears.

View Id P ------------------------ RECONCILE -------------- ROW 1 TO 20 OF 121
COMMAND ===>                                                  SCROLL ===> CSR
  R:RECEIVBL P:PAYABLE N:NEW_RELS

******************************** TOP OF DATA **********************************
000000 ********/* 2000/12/04 17:12:21 somnode.CMNZMF.SAMPLES
< 0001 PROGNAME CSECT
<>_P__ PGMACPAY CSECT
000002          STM     R14,R12,12(R13)     save caller's registers
000003          LR      R12,R15             get program address
< 0004          USING PROGNAME,R12          addressability
<>_P__          USING PGMACPAY,R12          addressability
000005          B       AROUND              go around label
< 0006          DC      CL8'PROGNAME'         program name
<>_P__          DC      CL8'PGMACPAY'         program name
000007          DC      CL8'&SYSDATE'         date assembled
000008          DC      CL6'&SYSTIME'         time assembled
000009 COPYRITE DC      C' COPYRIGHT (C)'
000010          DC      C' TRIVIAL SOFTWARE CO. '
000011 AROUND   EQU     *
000012          SPACE   1
- - - - - - - - - - - - - - - - - - - - - - - - - - 1 Lines NOT Displayed 
000013 * Chain Save Areas
- - - - - - - - - - - - - - - - - - - - - - - - - - 1 Lines NOT Displayed
000014          ST      R13,SAVEAREA+4      save caller's save area

The NOT Displayed lines indicate that other derivatives have changed the base code in this code fragment.

Fn/Ln (Include First/Last)

You can browse the second derivative, as well as include in view some of the excluded lines by using the M+R line commands First and Last. For example, to include the first excluded lines in view, enter the command First (F) on the line that says "1 Lines NOT Displayed" after the Base record "000012". The Reconcile panel, shown below, appears.

...

View Id P ------------------------ RECONCILE -------------- ROW 1 TO 20 OF 121
COMMAND ===>                                                  SCROLL ===> CSR
  R:RECEIVBL P:PAYABLE N:NEW_RELS
******************************** TOP OF DATA **********************************
000000 ********/* 2000/12/04 17:12:21 somnode.CMNZMF.SAMPLES
< 0001 PROGNAME CSECT
<>_P__ PGMACPAY CSECT
000002          STM     R14,R12,12(R13)     save caller's registers
000003          LR      R12,R15             get program address
< 0004          USING PROGNAME,R12          addressability
<>_P__          USING PGMACPAY,R12          addressability
000005          B       AROUND              go around label
< 0006          DC      CL8'PROGNAME'         program name
<>_P__          DC      CL8'PGMACPAY'         program name
000007          DC      CL8'&SYSDATE'         date assembled
000008          DC      CL6'&SYSTIME'         time assembled
000009 COPYRITE DC      C' COPYRIGHT (C)'
000010          DC      C' TRIVIAL SOFTWARE CO. '
000011 AROUND   EQU     *
< 0012          SPACE   1
<>__N_          L       R5,0(,R1)           save passed parameter
000013 * Chain Save Areas
- - - - - - - - - - - - - - - - - - - - - - - - - - 1 Lines NOT Displayed
000014          ST      R13,SAVEAREA+4      save caller's save area

To include the last excluded lines in view, enter the command Last (L) on the "1 Lines NOT Displayed" line after Base record "000013". The Reconcile panel, shown below, appears.

...

View Id P ------------------------ RECONCILE -------------- ROW 1 TO 20 OF 121
COMMAND ===>                                                  SCROLL ===> CSR
  R:RECEIVBL P:PAYABLE N:NEW_RELS
******************************** TOP OF DATA **********************************
000000 ********/* 2000/12/04 17:12:21 somnode.CMNZMF.SAMPLES
< 0001 PROGNAME CSECT
<>_P__ PGMACPAY CSECT
000002          STM     R14,R12,12(R13)     save caller's registers
000003          LR      R12,R15             get program address
< 0004          USING PROGNAME,R12          addressability
<>_P__          USING PGMACPAY,R12          addressability
000005          B       AROUND              go around label
< 0006          DC      CL8'PROGNAME'         program name
<>_P__          DC      CL8'PGMACPAY'         program name
000007          DC      CL8'&SYSDATE'         date assembled
000008          DC      CL6'&SYSTIME'         time assembled
000009 COPYRITE DC      C' COPYRIGHT (C)'
000010          DC      C' TRIVIAL SOFTWARE CO. '
000011 AROUND   EQU     *
< 0012          SPACE   1
<>__N_          L       R5,0(,R1)           save passed parameter
< 0013 * Chain Save Areas
<>__N_          SPACE 1
000014          ST      R13,SAVEAREA+4      save caller's save area

...

X @ (Exclude Base)

To display only the changes, use the X @ command. The Reconcile panel, shown below, appears.

View Id P Base eXcluded----------- RECONCILE --------------- ROW 1 TO 20 OF 40
COMMAND ===>                                                  SCROLL ===> CSR
  R:RECEIVBL P:PAYABLE N:NEW_RELS
******************************** TOP OF DATA **********************************
  - - - - - - - - - - - - - - - - - - - - - - - - - -  1 Lines NOT Displayed
< 0001 PROGNAME CSECT
<>_P__ PGMACPAY CSECT
  - - - - - - - - - - - - - - - - - - - - - - - - - -  2 Lines NOT Displayed
< 0004          USING PROGNAME,R12          addressability
<>_P__          USING PGMACPAY,R12          addressability
  - - - - - - - - - - - - - - - - - - - - - - - - - -  1 Lines NOT Displayed
< 0006          DC    CL8'PROGNAME'             program name
<>_P__          DC    CL8'PGMACPAY'             program name
  - - - - - - - - - - - - - - - - - - - - - - - - - - 19 Lines NOT Displayed
000019          OPEN (INFILE,INPUT,PRINTER,OUTPUT)
  - - - - - - - - - - - - - - - - - - - - - - - - - -  1 Lines NOT Displayed
> _P__          LA      R1,INFILE           get address of input DCB
> _P__          USING   IHADCB,R1           addressability
> _P__          TM      DCBOFLGS,X'10'      ? successful open
> _P__          BZ      OPENERR             no...open failure
> _P__          LA      R1,PRINTER          get address of output DCB
> _P__          TM      DCBOFLGS,X'10'      ? successful open
> _P__          BZ      OPENERR             no...open failure
> _P__          PUT     PRINTER,RPRTITLE    write report title

You can enter View R or V R (View receivbl) to see the changes that the first derivative made to the original base, or enter VIEW N or V N (View new_rels) to see the changes made by the new release.

...

R N (Reset New_rels derivative)

To display previously excluded derivative records, enter the Reset command. For example, if you issued R N (Reset new_rels) on the previous screen, you would display the changes made by both payable and new_rels derivatives. The Reconcile panel, shown below, appears.

View Id P N Base eXcluded--------- RECONCILE -------------- ROW 1 TO 20 OF 162
COMMAND ===>                                                  SCROLL ===> CSR
  R:RECEIVBL P:PAYABLE N:NEW_RELS
******************************** TOP OF DATA **********************************
  - - - - - - - - - - - - - - - - - - - - - - - - - -  1 Lines NOT Displayed
< 0001 PROGNAME CSECT
<>_P__ PGMACPAY CSECT
  - - - - - - - - - - - - - - - - - - - - - - - - - -  2 Lines NOT Displayed
< 0004          USING PROGNAME,R12          addressability
<>_P__          USING PGMACPAY,R12          addressability
  - - - - - - - - - - - - - - - - - - - - - - - - - -  1 Lines NOT Displayed
< 0006          DC    CL8'PROGNAME'             program name
<>_P__          DC    CL8'PGMACPAY'             program name
< 0012          SPACE 1
<>__N_          L     R5,0(,R1)             save passed parameter
<0013 *         Chain Save Areas
<>__N_          SPACE 1
< 0014          ST    R13,SAVEAREA+4        save caller's save area
<>__N_ *        Getmain pgm dynamic area
< 0015          LA    R2,SAVEAREA           get address of program save area
<>__N_          LA    R2,DYNAREND-PGMDSECT  size of pgm dynamic area
< 0016          ST    R2,8(R13)             save it in caller's save area
<>__N_          LA    R2,1024(,R2)          bump for rounding

As this panel illustrates, use of the eXclude/Reset command pair with a derivative ID argument provides decremental/incremental handling of the version view. Each command acts on its argument only; it does not override a previously issued eXclude/Reset command.

Reconciling Conflicts

You can reconcile any text in PDS, SEQ, PAN, or LIB format. To resolve a conflict, you need to see how multiple derivatives have changed a particular base record.

V $ (Viewing the Conflicts)

To view the conflicts together, enter V conflicts, V CO, or V $ from the current Reconcile panel. The Reconcile panel, shown below, appears (although here it is a combination of two screens).

View Conflicts ------------------- RECONCILE --------------- ROW 1 TO 20 OF 32
COMMAND ===>                                                  SCROLL ===> CSR
  R:RECEIVBL P:PAYABLE N:NEW_RELS
******************************** TOP OF DATA **********************************
  - - - - - - - - - - - - - - - - - - - - - - - - - - 29 Lines NOT Displayed
< 00019         OPEN   (INFILE,INPUT,PRINTER,OUTPUT)
> R___          PUT     PRINTER,COMPANY         write Company name
> _P__          LA      R1,INFILE               get address of input DCB
> _P__          USING IHADCB,R1                 addressability
> _P__          TM      DCBOFLGS,X'10'          ? successful open
> _P__          BZ      OPENERR                 no...open failure
> _P__          LA      R1,PRINTER              get address of output DCB
> _P__          TM      DCBOFLGS,X'10'          ? successful open
> _P__          BZ      OPENERR                 no...open failure
> _P__          PUT     PRINTER,RPRTITLE        write report title
<>__N_          LR      R0,R2 R0                needs the size
  - - - - - - - - - - - - - - - - - - - - - - - - - - 106 Lines NOT Displayed
< 0053 HEADLINE DC      CL133'1 * * * RECORD LISTING  * * *'
<>R___ COMPANY  DC      CL133'1 * * * A.B.C. COMPANY  * * *'
> R___ HEADLINE DC      CL133'1 * * ACCOUNTS RECEIVABLE * *'
<>_P__ RPRTITLE DC      CL133'1 * * * * ABC COMPANY * * * *'
> _P__ HEADLINE DC      CL133'1 * * * ACCOUNTS PAYABLE  * *'
<>__N_ HEADLINE DS      CL133               "1 * * * RECORD LISTING * * *"
  - - - - - - - - - - - - - - - - - - - - - - - - - - 17 Lines NOT Displayed
000065                  EODAD=ENDDATA
> _P__ *        Data    Control Block Dummy Section (IHADCB)
> _P__          PRINT   ON,NOGEN
> _P__          DCBD    DEVD=DA,DSORG=PS
> __N_ *        Data    Constants
> __N_ ZERO     DC      P'0'                    packed zero
> __N_ ONE      DC      P'1'                    packed one
> __N_ P50      DC      P'50'                   packed fifty
> __N_ SPACES   DC      CL80' '                 eighty blanks
> __N_ HEADER   DC      CL133'1 * * * RECORD LISTING * * * '
> __N_ ENDER    DC      CL133'1 * * * END OF REPORT * * * '
  - - - - - - - - - - - - - - - - - - - - - - - - - - 4 Lines NOT Displayed

What does this panel reveal?

  1. The lines under base record "000019" indicate that this line has been changed by all three derivatives as follows:

    Derivative R - receivbl has added a line of code that prints the A.B.C. Company name on the report.

    Derivative P - payable has added a block of code that checks for the successful opening of the input/output files. It also adds a single line that prints the report title.

    Derivative N - this base record has been replaced with an instruction that looks "out of context" here—a sure sign that the new_rels derivative structurally differs from the base code.

  2. The lines under Base record "000053" indicate that it has been changed by all three derivatives as follows:

    Derivative R - receivbl has changed the page heading to "A.B.C. COMPANY" and added its own heading "ACCOUNTS RECEIVABLE".

    Derivative P - payable has changed the page heading to "A.B.C. COMPANY" and added its own page heading "ACCOUNTS PAYABLE".

    Derivative N - this base record is not a character constant at all—it is a variable name; this confirms the assumption of structural differences between the base and new_rels.

  3. The lines under base record "000065" indicate that it has been changed by two derivatives as follows:

    Derivative P - payable has added a DSECT (dummy section) that checks for the successful opening of the input/output files.

    Derivative N - new_rels has added a block of data constants, including the page heading and the end-of-report lines (visible if you page down).

Now that you are familiar with the changes made by each derivative, you can begin the reconciliation work, but first, some planning.

Planning the Reconciliation Work

Here is a summary of the conflicts and how you can resolve them:

All changes to base record "000019" made by payable (marked P__) will be used in the consolidated version. Before they can be used, however, they must be moved after the OPEN statements of new_rels (marked __N). Then, the base record and code line added by R must be deleted.

The changes to the original page heading (base record "000053") from the customizations in both receivbl and payable should stay. Furthermore, code is required to pick up the proper page heading depending on the value of the start parameter.

The last conflict "000065" looks acceptable; both derivatives add data areas that should remain in the consolidated version. In this scenario, the last conflict will not be resolved because the changes do not appear to be mutually exclusive.

Now that you have summarized the conflicts, you can start resolving them by performing the following:

  • Moving (Cut and Paste) the conflicting blocks of code to their proper place in the new consolidated version.

  • Editing conflicting lines of code to incorporate the changes into a workable program.

You can handle conflicts through a combination of edit line commands such as Delete, Undelete, Insert, Repeat, Copy, and Move.

Resolving the First Conflict

Resolving the first conflict on the panel below consists of two actions:

  • Block delete the base record "000019" and the PUT statement from receivbl.

  • Move (Cut and Paste) the remaining lines of payable after the OPEN statements of new_rels for data sets PRINTER and INFILE.

Before you issue the Cut command, your screen should look like the following:

View Conflicts ------------------- RECONCILE --------------- ROW 1 TO 20 OF 31  
COMMAND ===> cut                                              SCROLL ===> CSR
  R:RECEIVBL P:PAYABLE N:NEW_RELS
******************************** TOP OF DATA **********************************
  ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 Lines DELETED 
  - - - - - - - - - - - - - - - - - - - - - - - - - - 29 Lines NOT Displayed 
mm_P__          LA  R1,INFILE           get address of input DCB  
> _P__          USING IHADCB,R1         addressability  
> _P__          TM  DCBOFLGS,X'10'      ? successful open  
> _P__          BZ  OPENERR             no...open failure  
> _P__          LA  R1,PRINTER          get address of output DCB  
> _P__          TM  DCBOFLGS,X'10'      ? successful open 
> _P__          BZ  OPENERR             no...open failure 
mm_P__          PUT PRINTER,RPRTITLE    write report title  
<>__N_          LR  R0,R2 R0            needs the size 
  - - - - - - - - - - - - - - - - - - - - - - - - - 106 Lines NOT Displayed  
< 0053 HEADLINE DC  CL133'1 * * * RECORD LISTING * * *'  
<>R___ COMPANY  DC  CL133'1 * * * A.B.C. COMPANY * * *'  
> R___ HEADLINE DC  CL133'1 * * ACCOUNTS RECEIVABLE * *'  
<>_P__ RPRTITLE DC  CL133'1 * * * * ABC COMPANY * * * *'  
> _P__ HEADLINE DC  CL133'1 * * * ACCOUNTS PAYABLE * * *'  
<>__N_ HEADLINE DS  CL133               "1 * * * RECORD LISTING * * *" 
  - - - - - - - - - - - - - - - - - - - - - - - - - 17 Lines NOT Displayed 
000065              EODAD=ENDDATA

Press [Enter] and issue the V N (View new_rels) primary command to switch to the new_rels view. On the resulting panel, issue the find infile command. The first occurrences of INFILE are on the just-deleted base line marked with (/*), that is commented out. Issue a Repeat FIND (PF5/17) to find the opening of the INFILE data set within the new_rels code and place the After line command on the following line:

>__N_ OPEN MF=[E,(1)] execute form of OPEN

Then place the cursor on the command line using the "Home" key, and issue the PASte command. After issuing this command, your screen will look like the panel below. The pasted records are marked with the (>>) symbol to emphasize their type as not simply inserted but copied or moved from some other place.

View Id N ------------------------ RECONCILE ------------- ROW 68 TO 88 OF 175
COMMAND ===>                                                  SCROLL ===> CSR
  R:RECEIVBL P:PAYABLE N:NEW_RELS
> __N_ *
> __N_          MVC DCBINPUT,INFILE         get model DCB for input file
> __N_          LA R1,DCBINPUT              its address in pgm dynamic area
> __N_          ST R1,FULLWORD              stash it
> __N_          OI FULLWORD,X'8F'           indicate output
> __N_          LA R1,FULLWORD              address DCB list
> __N_          OPEN MF=(E,(1))             execute form of OPEN
>>___+          LA R1,INFILE                get address of input DCB
>>___+          USING IHADCB,R1             addressability
>>___+          TM DCBOFLGS,X'10'           ? successful open
>>___+          BZ OPENERR                  no...open failure
>>___+          LA R1,PRINTER               get address of output DCB
>>___+          TM DCBOFLGS,X'10'           ? successful open
>>___+          BZ OPENERR                  no...open failure
>>___+          PUT PRINTER,RPRTITLE        write report title
> __N_          PUT DCBPRINT,HEADLINE       write page header
000021          SPACE 1
000022 *        Main  Line Processing
000023 MAINLINE EQU *
< 0024          GET INFILE,INAREA           read a record
<>__N_          GET DCBINPUT,INAREA         read a record

You are now ready to resolve the second conflict.

Resolving the Second Conflict

Before proceeding to resolve the second conflict, verify that the first conflict has been resolved. To do this, issue the V conflicts, V CO, or V $ primary command from the current Reconcile panel and press [Enter]. The Reconcile panel, shown below, appears. You should not see a conflict at the base record "000019".

View Conflicts ------------------- RECONCILE --------------- ROW 1 TO 21 OF 21
COMMAND ===>                                                  SCROLL ===> CSR
  R:RECEIVBL P:PAYABLE N:NEW_RELS
******************************** TOP OF DATA **********************************
  ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - 10 Lines DELETED
  - - - - - - - - - - - - - - - - - - - - - - - - - - 144 Lines NOT Displayed
< 0053 HEADLINE DC      CL133'1 * * * RECORD LISTING * * *'
<>R___ COMPANY  DC      CL133'1 * * * A.B.C. COMPANY * * *'
> R___ HEADLINE DC      CL133'1 * * ACCOUNTS RECEIVABLE * *'
<>_P__ RPRTITLE DC      CL133'1 * * * * ABC COMPANY * * * *'
> _P__ HEADLINE DC      CL133'1 * * * ACCOUNTS PAYABLE * * *'
<>__N_ HEADLINE DS      CL133               "1 * * * RECORD LISTING * * *"
  - - - - - - - - - - - - - - - - - - - - - - - - - - 17 Lines NOT Displayed
000065                  EODAD=ENDDATA
> _P__ *        Data    Control Block Dummy Section (IHADCB)
> _P__          PRINT   ON,NOGEN
> _P__          DCBD    DEVD=DA,DSORG=PS
> __N_ *        Data    Constants
> __N_ ZERO     DC      P'0'                packed zero
> __N_ ONE      DC      P'1'                packed one
> __N_ P50      DC      P'50'               packed fifty
> __N_ SPACES   DC      CL80' '             eighty blanks
> __N_ HEADER   DC      CL133'1 * * * RECORD LISTING * * * '
> __N_ ENDER    DC      CL133'1 * * * END OF REPORT * * * '

Resolving the second conflict consists of two actions:

  • Block delete the base record "000053' and the COMPANY statement from receivbl.

  • Rename the page header constants to HEADLIN1 and HEADLIN2 by overtyping, and enter the block Move command against those lines. The destination command can be Before placed on the line below containing the ZERO constant.

Your screen should now appear like the panel below.

View Conflicts ------------------- RECONCILE --------------- ROW 1 TO 19 OF 19  
COMMAND ===>                                                  SCROLL ===> CSR
  R:RECEIVBL P:PAYABLE N:NEW_RELS
******************************** TOP OF DATA **********************************
  ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - 12 Lines DELETED
  - - - - - - - - - - - - - - - - - - - - - - - - - - 144 Lines NOT Displayed
mmR___ HEADLIN1 DC      CL133'1 * * ACCOUNTS RECEIVABLE * *' 
<>_P__ RPRTITLE DC      CL133'1 * * * * ABC COMPANY * * * *' 
mm_P__ HEADLIN2 DC      CL133'1 * * * ACCOUNTS PAYABLE * * *'  
<>__N_ HEADLINE DS      CL133 "1 * * * RECORD LISTING * * *"  
  - - - - - - - - - - - - - - - - - - - - - - - - - - 17 Lines NOT Displayed  
000065                  EODAD=ENDDATA  
> _P__ *        Data    Control Block Dummy Section (IHADCB)  
> _P__          PRINT   ON,NOGEN  
> _P__          DCBD    DEVD=DA,DSORG=PS 
> __N_ *        Data    Constants 
b __N_ ZERO     DC      P'0'                packed zero 
> __N_ ONE      DC      P'1'                packed one  
> __N_ P50      DC      P'50'               packed fifty  
> __N_ SPACES   DC      CL80' '             eighty blanks  
> __N_ HEADER   DC      CL133'1 * * * RECORD LISTING * * * '  
> __N_ ENDER    DC      CL133'1 * * * END OF REPORT * * * '
  - - - - - - - - - - - - - - - - - - - - - - - - - - 4 Lines NOT Displayed  
******************************* BOTTOM OF DATA ********************************

Press [Enter] to execute the overtyped changes and the block Move command. The Reconcile panel, shown below, appears.

View Conflicts ------------------- RECONCILE --------------- ROW 1 TO 19 OF 19  
COMMAND ===>                                                  SCROLL ===> CSR
  R:RECEIVBL P:PAYABLE N:NEW_RELS
******************************** TOP OF DATA **********************************
  ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - 15 Lines DELETED
  - - - - - - - - - - - - - - - - - - - - - - - - - - 144 Lines NOT Displayed
<>__N_ HEADLINE DS      CL133 "1 * * * RECORD LISTING * * *"  
  - - - - - - - - - - - - - - - - - - - - - - - - - - 17 Lines NOT Displayed  
000065                  EODAD=ENDDATA  
> _P__ *        Data    Control Block Dummy Section (IHADCB)  
> _P__          PRINT   ON,NOGEN  
> _P__          DCBD    DEVD=DA,DSORG=PS 
> __N_ *        Data    Constants 
> ___+ HEADLIN1 DC      CL133'1 * * ACCOUNTS RECEIVABLE * *'
>>___+ RPRTITLE DC      CL133'1 * * * * ABC COMPANY * * * *'
> ___+ HEADLIN2 DC      CL133'1 * * * ACCOUNTS PAYABLE * * *'
> __N_ ZERO     DC      P'0'                packed zero 
> __N_ ONE      DC      P'1'                packed one  
> __N_ P50      DC      P'50'               packed fifty  
> __N_ SPACES   DC      CL80' '             eighty blanks  
> __N_ HEADER   DC      CL133'1 * * * RECORD LISTING * * * '  
> __N_ ENDER    DC      CL133'1 * * * END OF REPORT * * * '
  - - - - - - - - - - - - - - - - - - - - - - - - - - 4 Lines NOT Displayed  
******************************* BOTTOM OF DATA ********************************

Notice the different marking of the three lines you just moved: the middle one is marked with (>>) that was pasted, while the other two are shown as user inserted, marked with (- >). Considering the origin of the moved lines—the middle one is an unchanged line from payable which has been cut and pasted. The other two are edited lines from receivbl and payable; in other words, they "originate" from the user. Incidentally, the derivative lines are commented out; that is, they are deleted by the user (i.e., overtype = repeat + delete).

Moving overtyped lines to a new place makes them inserted lines. However, if you first overtype the two HEADLINE lines, press [Enter], and then block-move the three lines; all of them will be marked as user moved, that is with >>___+.

Although you have resolved the conflicts, you still need to provide the code for the page heading; the following describes how:

  • Issue the V N primary command to switch to the new_rels view.

  • On the resultant panel, issue find headline then a FIND/RFIND ([PF5/17]) to find it within the new_rels code.

  • In front of the previous line, insert 12 lines and fill them (as shown in the panel below).

  • After the same found line, insert the label HEAD003.

    View Id N ------------------- RECONCILE -------------- ROW 55 TO 75 OF 182
    COMMAND ===>                                              SCROLL ===> CSR
      R:RECEIVBL P:PAYABLE N:NEW_RELS
    > __N_          MVC     DATA+80(36),SPACES      clean up to line end
    > ___+ *        Determine Report Type
    > ___+          LH      R1,0(,R5)               get start parameter
    > ___+          CH      R1,H4                   ? Acc Receivable Dept
    > ___+          BNE     HEAD0010                no...check next
    > ___+          MVC     HEADLINE,HEADLIN1       yes..set its header
    > ___+          B       HEAD0030 cont
    > ___+ HEAD0010 EQU     *
    > ___+          CH      R1,H8                   ? Acc Payable Dept
    > ___+          BNE     HEAD0020                no...set default header
    > ___+          MVC     HEADLINE,HEADLIN2       yes..set its header
    > ___+          B       HEAD0030                    cont
    > ___+ HEAD0020 EQU     *
    > __N_          MVC     HEADLINE(133),HEADER    initialize page header
      '''' HEAD0030 EQU     *
    > __N_          MVC     ENDLINE(133),ENDER      initialize end-of-report line
    > __N_          ZAP     RECNUM,ZERO             initialize record counter
    > __N_          ZAP     LINECT,ZERO             initialize line counter
    > __N_          SPACE   1
    > __N_ *        Open Files
    > __N_          MVC     DCBPRINT,PRINTER        get model DCB for output file
    

    Because you have written the page heading initialization code using two constants, H4 and H8, you need to define them. The appropriate place for this code is the third conflict, because that is the context where the changes that are different between receivbl and payable are displayed. Here is what you need to do:

  • Issue V $ to display the records in conflict, then press [Enter].

  • On the resulting panel, specify the line command r2 at the constant ONE.

Define the new constants, as shown below.

View Conflicts ------------------- RECONCILE --------------- ROW 1 TO 17 OF 17
COMMAND ===>                                                  SCROLL ===> CSR
  R:RECEIVBL P:PAYABLE N:NEW_RELS
******************************** TOP OF DATA *********************************
  ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - 15 Lines DELETED
  - - - - - - - - - - - - - - - - - - - - - - - - - - 175 Lines NOT Displayed
000065                EODAD=ENDDATA
> _P__ *        Data  Control Block Dummy Section (IHADCB)
> _P__          PRINT ON,NOGEN
> _P__          DCBD  DEVD=DA,DSORG=PS
> __N_ *        Data  Constants
  - - - - - - - - - - - - - - - - - - - - - - - - - - 3   Lines NOT Displayed
> __N_ ZERO     DC    P'0'              packed zero
> __N_ ONE      DC    P'1'              packed one
> ___+ H4       DC    H'4'              halfword four
> ___+ H8       DC    H'8'              halfword eight
> __N_ P50      DC    P'50'             packed fifty
> __N_ SPACES   DC    CL80' '           eighty blanks
> __N_ HEADER   DC    CL133'1 * * * RECORD LISTING * * * '
> __N_ ENDER    DC    CL133'1 * * * END OF REPORT * * * '
- - - - - - - - - - - - - - - - - - - - - - - - - - 4     Lines NOT Displayed
******************************* BOTTOM OF DATA *******************************

Note

The three constants we have moved (in this section of the program) are excluded from view because editing base/derivatives lines makes them user-inserted code lines. By definition, such lines do not create conflicts, so they are not displayed on the new panel.

The second conflict is now resolved. Because we decided to ignore the third conflict for now, you can focus on the single changes.

Managing Single Changes

Once you have resolved the conflicts, you need to incorporate the single changes. Be aware that single changes are not always simple changes. Provided your profile setting is AUTOOVERRIDE=YES, you should consider the following:

Each base record that has been changed (replaced or erased) in only one derivative, or has been changed in the same way in all derivatives, will be substituted with these changes during the export of the consolidated version.

To export base records replaced in only one derivative, you must explicitly delete those replacements with the Dn line command or the DD block command, or set in your profile AUTOOVERRIDE=NO. The same rule applies when all derivatives replace a base record with the same code line.

To export base records erased in only one derivative, you must explicitly repeat those base records with the Rn line command or the RR block command, or set AUTOOVERRIDE to NO. The same rule applies when all derivatives erase a base record.

When records are added after a base record in only one derivative or all derivatives, they do not "drop" the corresponding base record from the consolidated version.

Note

The reference "all derivatives" above means "all derivatives that replace or erase" a particular base record, not all derivatives specified in the Versions panel. If more than one derivative ID appears after a base record, the changes are in conflict, rather than single changes; thus no override is performed by M+R.

To check the impact of single changes, enter the V # (View REmaining) primary command.

The Reconcile panel, shown below, appears.

View Remaining code lines --------- RECONCILE -------------- ROW 1 TO 20 OF 199 
COMMAND ===>                                                   SCROLL ===> CSR 
R:RECEIVBL P:PAYABLE N:NEW_RELS  
******************************** TOP OF DATA ********************************** 
000000 ********/* 2000/12/04 17:12:21 somnode.CMNZMF.SAMPLES 
  - - - - - - - - - - - - - - - - - - - - - - - - - 1 Lines NOT Displayed 
<>_P__ PGMACPAY CSECT  
000002          STM     R14,R12,12(R13)         save caller's registers  
000003          LR      R12,R15                 get program address 
  - - - - - - - - - - - - - - - - - - - - - - - - - 1 Lines NOT Displayed  
<>_P__          USING   PGMACPAY,R12            addressability  
000005          B       AROUND                  go around label 
  - - - - - - - - - - - - - - - - - - - - - - - - - 1 Lines NOT Displayed  
<>_P__          DC      CL8'PGMACPAY'           program name  
000007          DC      CL8'&SYSDATE'           date assembled  
000008          DC      CL6'&SYSTIME'           time assembled  
000009 COPYRITE DC      C' COPYRIGHT (C)'  
000010          DC      C' TRIVIAL SOFTWARE CO. '  
000011 AROUND   EQU     * 
  - - - - - - - - - - - - - - - - - - - - - - - - 1   Lines NOT Displayed
<>__N_          L       R5,0(,R1)               save passed parameter 
  - - - - - - - - - - - - - - - - - - - - - - - - 1   Lines NOT Displayed
<>__N_          SPACE   1 
  - - - - - - - - - - - - - - - - - - - - - - - - 1   Lines NOT Displayed

To understand this panel, you should compare it with this Reconcile panel. Notice that this one does not display the base lines 000001, 000004, and 000006 (visible on the previous panel) because they are overridden by payable if your profile setting is AUTOOVERRIDE=YES, as suggested for this tutorial.

In payable, the name of the program has been changed to PGMACPAY. If the resulting single changes (those flagged by '< > _P__') are not explicitly deleted, the program will be called PGMACPAY, not PROGNAME, which is the original name.

To delete the three (payable) lines, enter d on each line with composition '< > _P__' and press [Enter]. Then issue the primary command V # (View REmaining) The Reconcile panel, shown below, appears.

View Remaining code lines --------- RECONCILE -------------- ROW 1 TO 20 OF 199  
COMMAND ===>                                                   SCROLL ===> CSR 
  R:RECEIVBL P:PAYABLE N:NEW_RELS  
******************************** TOP OF DATA **********************************  
000000 ********/* 2000/12/04 17:12:21 somnode.CMNZMF.SAMPLES  
000001 PROGNAME     CSECT
  ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 Lines DELETED  
000002              STM     R14,R12,12(R13)     save caller's registers  
000003              LR      R12,R15             get program address  
000004              USING   PROGNAME,R12        addressability
  ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 Lines DELETED  
000005              B       AROUND              go around label  
000006              DC      CL8'PROGNAME'       program name
  ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 Lines DELETED  
000007              DC      CL8'&SYSDATE'       date assembled  
000008              DC      CL6'&SYSTIME'       time assembled  
000009 COPYRITE     DC      C' COPYRIGHT (C)'  
000010              DC      C' TRIVIAL SOFTWARE CO. '  
000011 AROUND       EQU     * 
  - - - - - - - - - - - - - - - - - - - - - - - - 1 Lines NOT Displayed
<>__N_              L       R5,0(,R1)           save passed parameter
  - - - - - - - - - - - - - - - - - - - - - - - - 1      Lines NOT Displayed
<>__N_              SPACE   1 
  - - - - - - - - - - - - - - - - - - - - - - - - 1      Lines NOT Displayed

Issue find pgmacpay. On the resulting screen, the cursor is placed at PGMACPAY on the last line.

View Remaining code lines --------- RECONCILE ----------- ROW 198 TO 199 OF 199  
COMMAND ===>                                                   SCROLL ===> CSR 
  R:RECEIVBL P:PAYABLE N:NEW_RELS 
  - - - - - - - - - - - - - - - - - - - - - - - - - 1 Lines NOT Displayed 
<>_P__              END     PGMACPAY            end of program  
******************************* BOTTOM OF DATA ********************************

To delete the last change in payable (the END statement), enter d on that line and press [Enter]. Then, enter [PF3] END to return to the Member Reconciliation menu.

Another way of investigating single changes is to investigate the "dropped" code lines. You can use the eXclude Remaining (X #) primary command to look at the base records that will be substituted with single changes, as well as the base/derivative records you have deleted thus far. You would observe that payable overrides all base lines of code with PROGNAME. To prevent this, you would issue the V P (View payable) primary command, then delete all lines of code containing PGMACPAY. These steps have been discussed previously.

Conducting an Ongoing Analysis of the Reconciliation Effort

Before exporting the consolidated version, you might want to select 7 (ANALYSIS) from the Member Reconciliation menu to invoke an ongoing analysis of the reconciliation. The Analysis panel, shown below, appears (although here it is a combination of two screens).

---------------------------------- ANALYSIS ---------------- ROW 1 TO 21 OF 28 
COMMAND ===>                                                  SCROLL ===> CSR
----------------------------------------------------------------------------- 
DEGREE OF COMPLEXITY: 9 HIGH
------------------------------------------------------------------------------
        RECORDS | CONFLICTS     |SINGLE CHANGES |DELETED BY YOU |REMAINING CODE
----------------|---------------|---------------|---------------|--------------
NICKNAMES       |PREV CURR DIFF |PREV CURR DIFF |PREV CURR DIFF |PREV CURR DIFF
----------------|---------------|---------------|---------------|--------------
ORIGINAL     68 |   3    1 -66% |  30   30   0% |   0    2 +99% |  68   66 - 2%
----------------|---------------|---------------|---------------|--------------
RECEIVBL     70 |   3    0 -99% |   0    0   0% |   0    3 +99% |   3    0 -99%
----------------|---------------|---------------|---------------|--------------
PAYABLE      85 |  13    3 -76% |   9    5 -44% |   0   14 +99% |  22    8 -63%
----------------|---------------|---------------|---------------|--------------
NEW_RELS    131 |   9    7 -22% |  81   83  +2% |   0    0   0% |  93   93   0%
----------------|---------------|---------------|---------------|--------------
RECONCIL        |   0    0   0% |   0   26  +99%|   0    0   0% |   0   26 +99%
----------------|---------------|---------------|---------------|--------------
         TOTAL: |  28   11 -60% | 120  144  +20%|   0   19 +99% |
------------------------------------------------------------------------------
                 Reconciliation Scope:
NICKNAME MEMBER   LAST MODIFIED    USER ID DATA    SET    NAME
------------------------------------------------------------------------------
ORIGINAL ASMBLBAS 2000/11/21 15:52 SERENA  somnode.CMNZMF.SAMPLES
RECEIVBL ASMBLDV1 2000/11/21 15:52 SERENA  somnode.CMNZMF.SAMPLES
PAYABLE  ASMBLDV2 2000/11/21 15:52 SERENA  somnode.CMNZMF.SAMPLES
NEW_RELS ASMBLDV3 2000/11/21 15:52 SERENA  somnode.CMNZMF.SAMPLES
RECONCIL          2000/12/04 17:12 CDFUSER Current Work
------------------------------------------------------------------------------
******************************* BOTTOM OF DATA ********************************

When you finish viewing the Analysis panel, enter [PF3] END and return to the Member Reconciliation menu.

Exporting the Consolidated Version

After viewing an analysis of the reconciliation work, you might want to produce a consolidated version from the base and its derivatives. To do so, select 6 (EXPORT) from the Member Reconciliation menu and press [Enter]. You will receive an acknowledgment that your consolidated version (located in CDFUSER.CDF.EXPRTLIB(ASMBLBAS)) has been exported.

Now, issue the X M+R (eXit M+R) primary command, and compile the consolidated version with your compiler.

Compiling the Consolidated Version

When you compile the consolidated version, the process should reveal some errors, as shown in the following examples.

  DIAGNOSTIC CROSS REFERENCE AND ASSEMBLER SUMMARY
  THE FOLLOWING STATEMENTS WERE FLAGGED
     000079 000080 000083 000085 000088 000090 000093 000095 000096 000097
     10 STATEMENTS FLAGGED IN THIS ASSEMBLY        8 WAS HIGHEST SEVERITY CODE

The following displays the lines of code that are in error.

ASSEMBLER DONE  
    400000    79        MVC     DATA(80),SPACES      clean receiving data area 
IEV034 *** ERROR *** ADDRESSABILITY ERROR  
    410000    80        MVC     DATA+80(36),SPACES   clean up to line end 
IEV034 *** ERROR *** ADDRESSABILITY ERROR 
              83        CH      R1,H4 
IEV034 *** ERROR *** ADDRESSABILITY ERROR  
              85        MVC     HEADLINE,HEADLIN1 
IEV034 *** ERROR *** ADDRESSABILITY ERROR 
              88        CH      R1,H8 
IEV034 *** ERROR *** ADDRESSABILITY ERROR  
              90        MVC     HEADLINE,HEADLIN2 
IEV034 *** ERROR *** ADDRESSABILITY ERROR  
   420000     93        MVC     HEADLINE(133),HEADER initialize page header 
IEV034 *** ERROR *** ADDRESSABILITY ERROR  
   430000     95        MVC     ENDLINE(133),ENDER   initialize end-of-report 
IEV034 *** ERROR *** ADDRESSABILITY ERROR  
   440000     96        ZAP     RECNUM,ZERO          initialize record counter 
IEV034 *** ERROR *** ADDRESSABILITY ERROR  
   450000     97        ZAP     LINECT,ZERO          initialize line counter 
IEV034 *** ERROR *** ADDRESSABILITY ERROR  
   10 STATEMENTS FLAGGED IN THIS ASSEMBLY       8 WAS HIGHEST SEVERITY CODE

The compile errors reveal that the program constants were defined improperly. It looks like you'll need to investigate the data area for an unresolved conflict.

Resuming the Reconciliation Effort

To resume an interrupted reconciliation, first you need to load, then edit, the WIS file. To load this file, select 4 (LOAD) from the Member Reconciliation menu. You will receive an acknowledgment that your WIS file has been loaded.

To edit the file, select 5 (EDIT) from the Member Reconciliation menu. The Reconcile panel displays.

Resolving the Third Conflict

On the Reconcile panel, page to the bottom of the data (using primary command MAX and then pressing [PF8]). On the Reconcile panel, shown below, move the Dummy Section IHADCB after the label ENDER.

View All ------------------------- RECONCILE ----------- ROW 191 TO 210 OF 210  
COMMAND ===>                                                  SCROLL ===> CSR  
  R:RECEIVBL P:PAYABLE N:NEW_RELS 
000065                      EODAD=ENDDATA 
mm_P__ *        Data        Control Block Dummy Section (IHADCB)  
> _P__          PRINT ON,   NOGEN  
mm_P__          DCBD        DEVD=DA,DSORG=PS  
> __N_ *        Data        Constants  
> ___+ HEADLIN1 DC          CL133'1 * * ACCOUNTS RECEIVABLE * *'  
>>___+ RPRTITLE DC          CL133'1 * * * * ABC COMPANY * * * *'  
> ___+ HEADLIN2 DC          CL133'1 * * * ACCOUNTS PAYABLE * * *'  
> __N_ ZERO     DC          P'0'            packed zero  
> __N_ ONE      DC          P'1'            packed one  
> ___+ ONE      DC          P'1'            packed one  
> ___+ ONE      DC          P'1'            packed one  
> __N_ P50      DC          P'50'           packed fifty  
> __N_ SPACES   DC          CL80' '         eighty blanks 
> __N_ HEADER   DC          CL133'1 * * * RECORD LISTING * * * ' 
a __N_ ENDER    DC          CL133'1 * * * END OF REPORT * * * '  
000066 *        Register Equates  
000067          YREGS  
000068          END         PROGNAME        end of program  
/*_P__          END         PGMACPAY        end of program  
******************************* BOTTOM OF DATA ******************************** 

When you press [Enter], the Reconcile panel, shown below, appears.

View All ------------------------- RECONCILE ----------- ROW 191 TO 211 OF 211
COMMAND ===>                                                  SCROLL ===> CSR
  R:RECEIVBL P:PAYABLE N:NEW_RELS
000065          EODAD=ENDDATA
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - 3 Lines DELETED
> __N_ *        Data        Constants
> ___+ HEADLIN1 DC          CL133'1 * * ACCOUNTS RECEIVABLE * *'
>>___+ RPRTITLE DC          CL133'1 * * * * ABC COMPANY * * * *'
> ___+ HEADLIN2 DC          CL133'1 * * * ACCOUNTS PAYABLE * * *'
> __N_ ZERO     DC          P'0'            packed zero
> __N_ ONE      DC          P'1'            packed one
> ___+ ONE      DC          P'1'            packed one
> ___+ ONE      DC          P'1'            packed one
> __N_ P50      DC          P'50'           packed fifty
> __N_ SPACES   DC          CL80' '         eighty blanks
> __N_ HEADER   DC          CL133'1 * * * RECORD  LISTING * * * '
> __N_ ENDER    DC          CL133'1 * * * END  OF  REPORT * * * '
>>___+ *        Data        Control Block Dummy Section (IHADCB)
>>___+          PRINT       ON,NOGEN
>>___+          DCBD        DEVD=DA,DSORG=PS
000066 *        Register Equates
000067          YREGS
000068          END         PROGNAME end of program
/*_P__          END         PGMACPAY end of program

You have now resolved the third conflict. Enter [PF3] END and return to the Member Reconciliation menu.

Wrapping Up the Reconciliation Effort

Before exporting the consolidated version, you might want to change your user profile, so that the reconciliation analysis results are appended as comments to the consolidated version. Here is how to do this:

  • From the Member Reconciliation menu, select 0 (PROFILE), then 4 (EXPORT options).

  • Set EXPORT PREFIX=YES.

  • Export the consolidated version as described in Exporting the Consolidated Version (Option 6).

  • Exit M+R.

  • Browse (using ISPF 1) the updated member ASMBLBAS in CDFUSER.CDF.EXPORT.

The beginning of the consolidated version is displayed in the figure below.

000001 ********/* 2000/12/04 17:12:21 somnode.CMNZMF.SAMPLES
000002 *     * /*  Records in Exported File: 220                         */
000003 *     * /  | -----------------------------------------------*/
000004 *     * /  | DEGREE OF COMPLEXITY:  9 HIGH                  */
000005 *     * /  | -----------------------------------------------*/
000006 *     * /  |         RECORDS |  CONFLICTS    |SINGLE CHANGES*/
000007 *     * /  | ----------------|---------------|--------------*/
000008 *     * /  | NICKNAMES       |PREV CURR DIFF |PREV CURR DIFF*/
000009 *     * /  | ----------------|---------------|--------------*/
000010 *     * /  | ORIGINAL     68 |        3   0% |  30   0%     */
000011 *     * /  | ----------------|---------------|--------------*/
000012 *     * /  | RECEIVBL     70 |        3   0% |   0   0%     */
000013 *     * /  | ----------------|---------------|--------------*/
000014 *     * /  | PAYABLE      85 |       13   0% |   9   0%     */
000015 *     * /  | ----------------|---------------|--------------*/
000016 *     * /  | NEW_RELS    131 |        9   0% |  81   0%     */
000017 *     * /  | ----------------|---------------|--------------*/
000018 *     * /  | RECONCIL        |        0   0% |   0   0%     */
000019 *     * /  | ----------------|---------------|--------------*/
000020 *     * /  |          TOTAL: |       28   0% | 120   0%     */
000021 *     * /  | -----------------------------------------------*/
000022 *     * /*                Reconciliation Scope:                   */
000023 *     * /* NICKNAME MEMBER   LAST MODIFIED    USER ID DATA S      */
000024 *     * /* -------------------------------------------------------*/ 
000025 *     * /* ORIGINAL ASMBLBAS 2000/11/21 15:52 SERENA  somnode.CMN */
000026 *     * /* RECEIVBL ASMBLDV1 2000/11/21 15:52 SERENA  somnode.CMN */
000027 *     * /* PAYABLE  ASMBLDV2 2000/11/21 15:52 SERENA  somnode.CMN */
000028 *     * /* NEW_RELS ASMBLDV3 2000/11/21 15:52 SERENA  somnode.CMN */
000029 *     * /* RECONCIL          2000/12/04 17:12 CDFUSER Current Wor */
000030 *     * /* ------------------------------------------------------ */
000031 PROGNAME     CSECT
000032              STM     R14,R12,12(R13)     save caller's registers
000033              LR      R12,R15             get program address
000034              USING PROGNAME,R12          addressability
000035              B       AROUND              go around label
000036              DC      CL8'PROGNAME'         program name
000037              DC      CL8'&SYSDATE'         date assembled
000038              DC      CL6'&SYSTIME'         time assembled
000039 COPYRITE     DC      C' COPYRIGHT (C)'

When you compile the updated member ASMBLBAS, it should be error-free. You can now put the consolidated version into production.