Skip to content

CMNUPDAT - Stacked Reverse Delta Management

Program CMNUPDAT manages the current and prior versions of text components that use stacked reverse delta (SRD) storage means in baseline libraries.

Differences between component versions are stored as reverse deltas (SRD) that can be applied to the full current version to create prior versions. The current version of a component is stored in a baseline PDS(E), library, and all deltas for the component are stored in a single PDS(E) member with the same name in a delta library.

Program CMNUPDAT performs four functions:

  • Baseline Ripple - Compare the staging library member to the baseline library member to create a set of delta records. Add the delta records to the front of the member in the SRD library, effectively rippling prior versions down the stack. Discard the oldest set of delta records if the set exceeds the maximum number of versions. Replace the current baseline member with the staging library member.

  • Reverse Baseline Ripple (Backout) - Apply the latest delta records in the SRD library member to the current baseline library member to create the prior version. Replace the baseline library member with this prior version. Delete the latest delta records in the SRD library member, effectively reverse rippling the stack of prior versions.

  • Scratch - Compress the baseline library member into a set of delta records. Add the delta records to the front of the member in the SRD library, effectively rippling prior versions down the stack. Discard the oldest set of delta records if the set exceeds the maximum number of versions. Delete the member from the baseline library.

  • Copy - Apply the required sets of delta records to the baseline library member to recreate the requested prior version. Copy this prior version to a specified data set. (If the specified data set is a staging library, this is checkout of a prior version.)

Special cases, like baseline ripple for a new component or scratch for a component that has no prior versions execute these same functions while managing empty baseline and/or SRD library members.

CMNUPDAT Input and Output

Input and output for CMNUPDAT depend on the function being performed.

Function Input Output
Baseline Ripple Staging library
Baseline library
Baseline SRD library
Baseline library
Baseline SRD library
Reverse Baseline Ripple (Backout) Baseline library
Baseline SRD library
Baseline library
Baseline SRD library
Scratch Baseline library Baseline library
Baseline SRD library
Copy Baseline library
Baseline SRD library
PDS member or staging library.

...

Sample JCL

This is a ChangeMan ZMF installation job fragment that shows a CMNUPDAT step for baseline ripple. This JCL was created from skeleton CMN30SRD by ISPF file tailoring.

//UPDSRC    EXEC    PGM=CMNUPDAT,   *** RIPPLE SRC COMPONENTS
//                  REGION=4M,
//                  COND=(4,LT),
//                  PARM='APPLY,REALLOC,MAXLEVEL(9)'
//*)IM CMN$$ENQ
//SYSUT3    DD      DISP=(MOD,DELETE),
//                  DSN=CMNTP.S6.V810.BASE.ACTP.SRC.ENQ,
//                  UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT4    DD      UNIT=SYSDA,SPACE=(CYL,(5,5))
//CMNUPDAT  DD      SYSOUT=*
//SYSPRINT  DD      SYSOUT=*
//ABNLIGNR  DD      DUMMY
//SYSUDUMP  DD      SYSOUT=*
//BASELIB   DD      DISP=SHR,DSN=CMNTP.S6.V810.BASE.ACTP.SRC
//DELTALIB  DD      DISP=SHR,DSN=CMNTP.S6.V810.BASE.ACTP.SRC.DELTA
//STAGELIB  DD      DISP=SHR,DSN=CMNTP.S6.ACTP.STG6.#000039.SRC
//SYSIN     DD      *
ACTCOB01

...

DD Statements

This table describes DD statements for program CMNUPDAT.

DDNAME I/O Purpose
SYSUT3 N/A Creates an enqueue to single thread jobs
SYSUT4 I/O Temporary work data set
CMNUPDAT O Listing from the process that was executed. Examples:
- SERCMPAR listing of text differences that were converted into delta records
- CMNDELTA listing that shows delta records that were applied to create a prior version
SYSPRINT O Listing that displays actions taken for each member processed.
BASELIB I/O Baseline library.
Note: This DD name can be changed with the BASELIB(ddname) subparameter of the PARM statement.
DELTALIB I/O Stacked reverse delta library. Must be RECFM=FB. If incorrect, message CMN5114A - Stacked reverse delta minus baseline must be RECFM=FB
Note: This DD name can be changed with the DELTALIB(ddname) subparameter of the PARM statement.
STAGELIB I Output PDS(E) library for generated member. This DD statement must refer to a PDS(E). If you want to print the generated member, use this library as input to IEBGENER.
Note: This DD name can be changed with the STAGELIB(ddname) subparameter of the PARM statement.
SYSIN I Members to be processed. Multiple member names that are coded on the same SYSIN record are delimited by space or comma. Names may be coded be on multiple SYSIN records. This DD statement is ignored if the MEMBER(mem,...) subparameter of the PARM statement is used.

...

PARM Options

The PARM parameter is required in the EXEC statement for CMNUPDAT. This table describes CMNUPDAT options that are input through the PARM parameter.

Parameter Use Description
Program function Required Specifies the function to be performed. Code one of the following:
APPLY  Baseline ripple
RESTORE  Reverse baseline ripple (backout)
DELETE  Scratch
COPY  Recreate a prior version and copy to another library or data set. These functions are described at the top of section, CMNUPDAT - Stacked Reverse Delta Management.
COMPRESS Optional Indicates that the baseline library uses compressed format.
RETRY Optional If an out-of-space condition occurs in an output PDS library, compress the PDS and retry.
REALLOC Optional If more space is required for an output library, reallocate the library.
ABEND Optional Abend program CMNUPDAT if any error occurs.
BASELIB(ddname) Optional Specifies an alternate ddname for the baseline library.
Default: BASELIB
DELTALIB(ddname) Optional Specifies an alternate ddname for the delta library.
Default: DELTALIB
STAGELIB(ddname) Optional Specifies an alternate ddname for the staging library.
Default: STAGELIB
ALLMEM Optional Process all members. This parameter is ignored if the MEMBER() execution parameter is used or if members are listed in SYSIN.
MEMBER(mem,...) Optional Specifies the members to be processed. Member names are separated by commas. If this parameter is coded, SYSIN is ignored. If this parameter is omitted, the member names are read from SYSIN.
VERSION(n) Optional Specifies the number of prior level deltas to apply for the RESTORE or COPY function.
Default: 1 (the level prior to the current baseline version)
MAXLEVEL(n) Optional Sets the maximum number of prior levels saved in the delta member to n. Delta records for level n+1 are discarded when a new set of delta records is added.
Default: No limit
Example: If application administration specifies 10 levels for a baseline configuration, then n = 9.
TEXT(a) Optional Specifies comparison parameters for creating delta records.
Default: TEXT(PANEL)
Note: Differences in spaces, and commas in the use of COBOL, are ignored. Precede any of the subparameters below with the $ character to flag as changed any line where the only difference is in the use of spaces (and commas in the case of COBOL). Examples: TEXT($.) or $COBOL
. (period) The first four records are analyzed to identify the target language to determine the kind of text compare that should be done.
COBOL Positions 7 through 72 are compared.
PANEL Positions 1 through 80 are compared.
REPORT
SCRIPT
ALC Positions 1 through 72 are compared
BAL
JCL
PASCAL
CC
LIST
FORTRAN
PL/1
PL/I
PL1
PLI
NATURAL
REXX
RPG

...

Notes or Comments

When stacked reverse delta files are created in the baseline ripple process, special characters and codes are inserted in delta records to tell ChangeMan ZMF how to apply delta records and uncompress text.

Caution

If your components include the codes and characters used by program CMNUPDAT, do not use SD-Stacked Reverse Delta for the baseline storage means in application baseline configuration. Use P - Standard PDS instead.

These are the special characters and codes that you should avoid in text managed by the SRD storage means.

Special Characters and Codes Notes
<UPDATE>
<DELETE>
<NULL>
<STATS
<*STAMP
<*END.OF.MEMBER>
<*END.F.DELTA.DECK>
<n, n is any integer.
<n> n is any integer, and the rest of the record must be blank for this to be detected as ZMF SRD reserved text. This is to avoid conflict with Focus code in the format " text".
X'FF03' This code is reserved for the first byte of SRD members. Members starting with x'FF03' that are not compressed may be incorrectly processed as compressed in the following cases:
- Print and copy baseline components in ChangeMan ZMF ISPF option 1.B.
- Compare of staging component to promotion or baseline when the library type is LST but the component is not a compressed listing. LST is currently reserved for compressed listings.

...