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