DSM (Data Set Compare)
- Purpose
- Use the DSM function to:
- Compare data from any partitioned, sequential or VSAM data set, HFS file, MQ queue, or CICS® resource to data in any other partitioned, sequential or VSAM data set, HFS file, MQ queue, or CICS® resource.
- Perform a field level comparison. By using an “Old” copybook or template with a “New” copybook or template, you can compare selected fields with the result of the comparison reflecting the types of data in the fields.
- Perform a load module comparison. Load module and CSECT information from both the "Old" and "New" versions of the module is extracted and compared. By specifying compare criteria, you can see differences between specific properties of the load modules, such as load module size, link date, CSECT names, and compilers used.
- Produce a comparison report, showing information such as where insertions, deletions or changes have occurred in the “New” data set. The report's content and structure reflects the various comparison options used.
- Create output data sets containing records identified as inserted, deleted, old and new changed
records, and old and new matched records.
You can define the same data set to save both the inserted and new changed records. Similarly, you can define the same data set to save both the deleted and old changed records.
- Usage notes
-
- Select the records to be compared, using:
- The start key (VSAM only)
- The skip field
- The compare count field
- Conditional expressions defined in the “Old” and/or “New” templates.
- The "Number of differences to report" option
To perform a field level comparison, you must provide an “Old” and a “New” copybook or template and use the TYPE=FORMATTED comparison option. You can use the field mapping specified in a “New” template (created online), or you can use the default mapping generated from the template or copybook contents, or you can specify the field mapping in the batch file, using the FIELDOLD and FIELDNEW keywords.
- Specify the way in which the comparison is performed, using:
- The compare options
- The synchronization options
If SYNCH=KEYED is used, up to sixteen key segments can be specified to create a single composite key.
- Specify the type of output produced and the way in which the output
is displayed, using:
- The listing type
- The listing options
- To specify a field name containing lowercase or mixedcase characters, use the character literal form of the name surrounded by quotation marks and preceded with character C. For example, C'aBc'.
- Select the records to be compared, using:
- Performance tips
-
- DSM was designed with a focus on comparing data in fields using templates or copybooks. See the template performance tips in General tips about performance when you use File Manager functions.
- The ISPF utility SuperC may perform more efficiently when comparing ordinary text data sets, since the special features of File Manager are not required. For more details on SuperC, see the z/OS ISPF User's Guide Vol II .
- Return codes
- The default return codes from the DSM function have the following
modified meanings:
- 0
- The function was completed successfully and the compare sets match.
- 1
- The function was completed successfully and the compare sets do not match.
- 2
- One of the compare sets was empty, so no comparison was performed.
- 4
- Both of the compare sets were empty, so no comparison was performed.
- 4
- No comparison was performed because one of the input data sets or members in ISPF Packed Data format and the “PACK=SKIP” option was specified.
- 4
- At least one record with an unmapped type was encountered.
- 8
- A data error occurred, for example, a key sequence error was found
when using a keyed comparison. The conditions that result in a return
code of 8 are:
- For keyed synchronization:
-
- key truncation error
- A key truncation error occurs when a key segment falls outside the record.
- key sequence error
- A key sequence error occurs when the key for a record is found to be less than or equal to the key for the previous record.
- For read-ahead synchronization:
-
- read-ahead resynchronization failure
- Read-ahead resynchronization fails when matching records cannot be found within the read-ahead limit.
- 16
- No records compared because input and output physically the same.
- 16
- Invalid data in template.
- 16
- Data set or member in use.
- 16
- Data set or member open error.
- 16
- Data set or member not found.
- 16
- Other input or output error occurred.
- 16
- Member name required and not specified.
- 16
- Insufficient storage available.
- 16
- DSM abended
- 16
- Input data appears ISPF packed but is not valid.
- 16
- Other serious error that stops processing occurred.
- 16
- A severe error occurred, causing File Manager to terminate.
Tip: When handling return codes 0, 1, 2, and 4 in your JCL, you might choose to deal with each code separately or you might choose to deal with return codes 0 and 4 as a single result (the compare sets match) and 1 and 2 as another result (the compare sets do not match).Note: Return codes can be customized during installation. If you receive return codes that do not match those listed above, your site might have customized the return codes for this function. File Manager may also issue the 999 abend, if the return code in batch is equal to or greater than the ABENDCC value. Contact your File Manager systems administrator for details.
- Old data set specifications
- The “Old” data set can be specified as follows:
- DDOLD=ddold
- Defines a reference to a DD or TSO ALLOC statement for the “Old” data set or HFS file. The default is DDOLD.
- DSNOLD=dsnold
- Defines the name of the “Old” data set or an absolute
path to the
Old
HFS file. If any DD statements are specified, they are not used. The name may include a member name in parenthesis. If the member is specified here, the associated MEMOLD parameter must be empty. An absolute path to an HFS file must be enclosed in apostrophes. If it does not fit on one line, you can split it over more than one line. To further describe the data set, use the following:- VOLSEROLD=volserold
- The VOLUME serial number for a non-cataloged “Old” data set.
- MEMOLD=memold
- The name of a single member in a PDS, or a member name pattern
representing one or more members in a PDS library. You can specify
this parameter, or a member name in the DD statement for ddname,
or specify a member or members in the MEMLIST parameter, or specify
a range of member names with the MEMSTART and MEMEND keywords.
A member name pattern can consist of any characters that are valid in a member name, and two special pattern characters: the asterisk (*) and the percent symbol (%).
An * represents any number of characters. As many asterisks as required can appear anywhere in a member name pattern. For example, if you enter a member name pattern of *d*, all members in the PDS whose name contains "d" are processed.
A % is a place-holding character that represents a single character. As many percent symbols as necessary can appear anywhere in a member name pattern. For example, if you enter a member name pattern of %%%%, all members in the PDS with a 4-character name are processed.
MEMOLD is ignored if the data set is not a PDS.
- MEMSTART=startstring
- Is used to specify the start of a range of member names to be included in the compare. If MEMSTART is specified but MEMEND is omitted, all members of the PDS(E) from the startstring value onwards are included. startstring can have the same values, including wild cards, as for the memold parameter of the MEMOLD keyword.
- MEMEND=endstring
- Is used to specify the end of a range of member names to be included in the compare. If MEMEND is specified but MEMSTART is omitted, all members of the PDS(E) up to the endstring value onwards are included. endstring can have the same values, including wild cards, as for the memold parameter of the MEMOLD keyword.
- XMEMBERS
- Provides a way to exclude from processing library members that would otherwise be selected using
the MEMSTART, MEMEND, and MEMBER options.
- xmem_filter
- A member name filter identifying one or more members that are to be excluded from processing. A
filter can be a member name pattern representing multiple members.
To specify a member name filter containing lowercase characters, use a character string in the format
c'string'
. Filter values can also be specified as hexadecimal strings in the formatx'hex-digits'
.
- MQ:manager:queuename
- You can specify a MQ queue in place of a data set name, where:
- managerold
- The “Old” MQ manager to be used. If you specify a generic name, File Manager displays a list of matching managers to select from.
- queuenameold
- The “Old” queue to be used. If you specify a generic name, File Manager displays a list of matching queues to select from.
- rt:applid:rname
- You can specify a CICS® resource
in place of a data set name, where:
- rt
- Resource type. Valid values are:
- FI
- For a CICS® file.
- TD
- For a Transient Data Queue.
- TS
- For a Temporary Storage Queue.
- applid
- The VTAM® applid of the CICS® system.
- rname
- The name of the resource.
- GENOLD=generation
- Specifies the generation of the old member to be compared. A value of 0 refers to the current
member. A negative value refers to the relative generation number. A positive value refers the
absolute generation number.Tip: The GENOLD and GENNEW keywords can be used to compare different generations of the same member in the same data set.
If the input data set is not a PDSE that supports member generations, the GENOLD keyword is ignored.
- CREATED=created
- The date on which a member was created, in YYYY/MM/DD format.
If the “Old” data set is a PDS(E), you can specify this parameter, or specify a range of creation dates with the CRESTART and CREEND keywords.
You can specify an asterisk (*) as the last character to indicate a range of dates, or a percent sign (%) in place of a single character to indicate a selection of dates.
created is ignored if the data set is not a PDS.
- CRESTART=crestart
- The start of a range of creation dates in YYYY/MM/DD format to
be included in the compare.
If CRESTART is specified but CREEND is omitted, all members of the PDS(E) from the crestart value onwards are included.
If omitted, or you do not enter a full date, or you specify an asterisk (*) as the last character, the unspecified portion of crestart defaults to the right as follows:- DD
- = 01
- MM
- = 01
- YYYY
- = 0000
- CREEND=creend
- The end of a range of creation dates in YYYY/MM/DD format to be
included in the compare. If omitted, or you do not enter a full date, or you specify an asterisk (*) as the last character, the unspecified portion of creend defaults to the right as follows:
- DD
- = 31
- MM
- = 12
- YYYY
- = 9999
- CHANGED=changed
- The date on which a member was last modified, in YYYY/MM/DD format.
If the “Old” data set is a PDS(E), you can specify this parameter, or specify a range of modification dates with the CHGSTART and CHGEND keywords.
You can specify an asterisk (*) as the last character to indicate a range of dates, or a percent sign (%) in place of a single character to indicate a selection of dates.
changed is ignored if the data set is not a PDS.
- CHGSTART=chgstart
- The start of a range of modification dates in YYYY/MM/DD format
to be included in the compare.
If CHGSTART is specified but CHGEND is omitted, all members of the PDS(E) from the chgstart value onwards are included.
If omitted, or you do not enter a full date, or you specify an asterisk (*) as the last character, the unspecified portion of chgstart defaults to the right as follows:- DD
- = 01
- MM
- = 01
- YYYY
- = 0000
- CHGEND=chgend
- The end of a range of modification dates in YYYY/MM/DD format
to be included in the compare. If omitted, or you do not enter a full date, or you specify an asterisk (*) as the last character, the unspecified portion of chgend defaults to the right as follows:
- DD
- = 31
- MM
- = 12
- YYYY
- = 9999
- USERID=userid
- The TSO user ID by which the member was last updated.
If the “Old” data set is a PDS(E), you can specify this parameter, or specify a range of user IDs with the UIDSTART and UIDEND keywords.
You can enter a generic user ID by using asterisks and percent signs.
userid is ignored if the data set is not a PDS.
- UIDSTART=uidstart
- The start of a range of user IDs to be included in the compare.
If UIDSTART is specified but UIDEND is omitted, all members of the PDS(E) from the uidstart value onwards are included.
If omitted, or you do not enter a full 7-character user ID, or you specify an asterisk (*) as the last character, File Manager replaces the asterisk and pads the unspecified portion of uidstart to the right with low values (X'00').
- UIDEND=uidend
- The end of a range of user IDs to be included in the compare.
If you omit this field, it defaults to high values (X'FF').
If you specify less than 7 characters (without an asterisk as the last character), File Manager pads uidstart to the right with low values (X'00'). If you specify an asterisk (*) as the last character, File Manager replaces the asterisk and pads the unspecified portion of uidend with high values (X'FF').
- MEMLIST
- Provides a means of selecting members from a PDS where no generic
name pattern and no member name range has been specified. If the MEMLIST
keyword is specified, only those members included in the MEMLIST arguments
are compared with the corresponding members in the output data set.
Members selected by the MEMBER=memold that
are not included in the MEMLIST arguments are not compared.
- comp_mem
- The name of the member to be compared. Generic name masks are not allowed.
- USEIOXOLD
- Specifies whether to invoke a user I/O exit, to process the “Old”
data set.
- NO
- Default. Do not invoke a user I/O exit.
- YES
- Invoke a user I/O exit to process the “Old” data set. This option is only available if the person who did the site customization for File Manager allowed user I/O exits on a site-wide basis.
- IOXOLD
- Specifies the name of the user I/O exit used for the “Old”
data set. There are no restrictions on the programming language that
you can use to write an exit. The exit must be provided to
File Manager in the STEPLIB/ISPLLIB concatenation or their extensions (LINKLIST,
LPA, and so on).
- sysexit
- Default. If you specify USEIOXOLD=YES and do not supply a user
I/O exit name, File Manager uses the name of the exit provided in
the installation customization options. If USEIOXOLD has been set
to YES and no installation default has been provided, you must specify
IOXOLD=ioxname. Note: If you have selected batch processing in an online panel, the generated JCL statements use the default name provided in your Set System Processing Options panel.
- ioxname
- The name of a PDS(E) member of a data set that has been provided to File Manager in the STEPLIB concatenation.
- BINRECOLD=binrecold-len
- Specifies the record length used for processing the
Old
HFS file. Valid range: 1 to 32760.The file is processed in Binary mode (fixed-length records derived from the file, delimiters not distinguished). If you do not specify this parameter, the file is processed in Text mode (variable-length records, boundaries determined by delimiters).
- KEYOLD=keyold
- A key for KSDS records or a slot number for RRDS records, for
the “Old” data set. The maximum key length is 30 characters.
The first record with a key or slot value greater than or equal to key is
the first record compared. If you omit the keyold and skipold values,
the comparison begins with the first record in the data set.
If the key contains lowercase characters, blanks, or commas, enclose it in quotation marks. You can also specify a key in hexadecimal format (for example, X'C1C2C3').
- SKIPOLD=skipold
- Number of logical records to be skipped from the beginning of the “Old” data set. The default is 0.
- CMPOLD=cmpold
- Number of records from the “Old” data set to be compared. The maximum number is 999 999 999. If you specify ALL or omit the parameter, all the remaining records are compared.
- IGNLEN
- Specifies whether or not File Manager ignores length mismatches
when selecting records for processing.
- NO
- Do not ignore length mismatches. Records that are shorter than the matching structure length in the template are not selected for processing.
- YES
- Use this option to ignore length mismatches.
- Old template processing
- Use these options to specify the “Old” copybook or
template that describes the record structure of your “Old”
data set.
- TOLD=ddname
- Defines a reference to a DD or TSO ALLOC statement for the data
sets which contain the copybook or template that describes the record
structure of your "Old" data set. The default is TDOLD.
If you specify a concatenated DD, then you must provide the member name, member.
- TOLDMEM=member
- The name of the copybook or template member in the datasets identified by the TOLD parameter if it has not been specified on the DD statement. This parameter must not be specified if the TCOLD parameter is specified.
- TCOLD=tcold(tcomem)
- PDS and member name of the "Old" copybook or template that describes the record structure of your "Old" data set.
- OFFSETOLD
- The length of the 01 field in the “Old” template
and the start locations of the fields within that 01 field are adjusted
by the value provided.
- value
- The offset value, which must be in the range -32760 to 32760, to be applied to the corresponding field identifier. If no field identifier is supplied and ALL is not used, the value is applied to the first Level 01 field in the “Old” template.
- ALL
- Where the template contains multiple record structures, this keyword
applies the corresponding value to all Level
01 fields within the “Old” template. Note: You can specify a value for ALL and then override this value for individual layouts by providing subsequent value and fieldname combinations.
- fieldname
- The name of the Level 01 field to which value is to be applied. The default is the first Level 01 field in the “Old” template.
- FIELDOLD=(oldfield1,oldfield2,...)
- Field name or names in the “Old” template, used to create a mapping for a
formatted comparison. This keyword is used in conjunction with the FIELDNEW keyword to
define mapping within the batch file. The parentheses are optional when only one field is
specified but mandatory when more than one field is included. The names are mapped in the
order given, that is, oldfield1 is mapped to
newfield1 and so on, overriding any default or existing mapping.
FIELDOLD and FIELDNEW can be used with or without an existing mapping in the template and with or without the CORRESP keyword setting, as follows:
Table 1. Batch mapping behavior This table has four columns. In the header, the first header, "Specifications", spalns three columns. Underneath are the subheadings '"New" template contains mapping?', "CORRESP=?" and "FIELDxxx specified?". The fourth heading is "Behavior". In the body of the table, in the first column, "no" spans four rows, and "yes" spans four rows. In the second row, "NO" spans two rows, then "YES" spans two rows, then "NO" spans two rows, and "YES" spans two rows. For the remaining two columns, each cell occupies one row and one column.
Specifications Behavior “New” template contains mapping? CORRESP=? FIELDxxx specified? no NO no map corresponding fields yes map specified fields YES no map corresponding fields yes map corresponding fields then remap specified fields yes NO no use mapping in TCNEW template yes use mapping in TCNEW template then remap specified fields YES no map corresponding fields yes map corresponding fields then remap specified fields Note: “Specified fields” refers to those fields specified in the FIELDOLD and FIELDNEW arguments.Handling multiple 01s and duplicate field names
Field mapping specifications that are created via the FIELDOLD and FIELDNEW keywords are applied on a first match basis. For example, if the “Old” template came from a copybook containing:
and the “New” template came from a copybook containing:01 OLD-TYPE01. 03 BINARY-X PIC 999999999 USAGE BINARY. 01 OLD-TYPE02. 03 BINARY-1 PIC 999999999 USAGE BINARY. 01 OLD-TYPE03. 03 BINARY-1 PIC 999999999 USAGE BINARY.
a mapping specification of:01 NEW-TYPE01. 03 BINARY-2 PIC 999999999 USAGE BINARY. 01 NEW-TYPE02. 03 BINARY-2 PIC 999999999 USAGE BINARY. 05 DUP-FIELD. 07 BINARY-2 PIC 999999999 USAGE BINARY. 01 NEW-TYPE03. 03 BINARY-2 PIC 999999999 USAGE BINARY.
maps the$$FILEM FIELDOLD=BINARY-1, $$FILEM FIELDNEW=BINARY-2,
03 BINARY-2
field inNEW-TYPE02
to theBINARY-1
field inOLD-TYPE02
. This is because the03 BINARY-2
field inNEW-TYPE02
is the first “New” template field found namedBINARY-2
, where the corresponding 01-level,OLD-TYPE02
, contains a field calledBINARY-1
. The03 BINARY-2
field inNEW-TYPE01
is not mapped because the corresponding 01-level,OLD-TYPE01
, does not contain a03 BINARY-1
field.You can override this default behavior to specify different field mappings by using a dot qualification. For example,
would map the$$FILEM FIELDOLD=BINARY-1, $$FILEM FIELDNEW=DUPFIELD.BINARY-2,
07 BINARY-2
field inNEW-TYPE02
to theBINARY-1
field inOLD-TYPE02
.
would map the$$FILEM FIELDOLD=BINARY-1, $$FILEM FIELDNEW=NEW-TYPE03.BINARY-2,
03 BINARY-2
field inNEW-TYPE03
to theBINARY-1
field inOLD-TYPE03
.Note:- This only affects the mapping. Normal record identification procedures must be understood and employed to ensure the correct 01 is in effect for each record comparison.
- The qualifiers are resolved from left to right, skipping over levels not present in the qualification so that only enough information to uniquely identify a field need be provided.
- New data set specifications
- The “New” data set can be specified as follows:
- DDNEW=ddnew
- Defines a reference to a DD or TSO ALLOC statement for the “New” data set or HFS file. The default is DDNEW.
- DSNNEW=dsnnew
- Defines the name of the “New” data set or an absolute
path to the
New
HFS file. If any DD statements are specified, they are not used. The name may include a member name in parenthesis. If the member is specified here, the associated MEMNEW parameter must be empty. An absolute path to an HFS file (directory) must be enclosed in apostrophes. If it does not fit on one line, you can split it over more than one line. To further describe the data set, use the following:- VOLSERNEW=volsernew
- The VOLUME serial number for a non-cataloged “New” data set.
- MEMNEW=memnew
- The name of a single member in a PDS library, or a member name
pattern representing one or more members in the library. You can specify
this parameter, or a member name in the DD statement for ddname.
A member name pattern can consist of any characters that are valid in a member name, and two special pattern characters: the asterisk (*) and the percent symbol (%).
An * represents any number of characters. As many asterisks as required can appear anywhere in a member name pattern. For example, if you enter a member name pattern of *d*, all members in the library whose name contains "d" are processed.
A % is a place holding character that means a single character. As many percent symbols as necessary can appear anywhere in a member name pattern. For example, if you enter a member name pattern of %%%%, all members in the library with a 4-character name are processed.
Specification of MEMNEW (or a member in DSNNEW) depends on the parameters used in MEMOLD (or member used in DSNOLD). If MEMOLD (member in DSNOLD) specifies one member, MEMNEW (member in DSNNEW) must also point at one member. If MEMOLD (member in DSNOLD) contains a member name pattern, the specification of MEMNEW (member in DSNNEW) must use the same pattern or an "*".
MEMNEW is ignored if the data set is not a PDS.
- MQ:manager:queuename
- You can specify a MQ queue in place of a data set name, where:
- managernew
- The “New” MQ manager to be used. If you specify a generic name, File Manager displays a list of matching managers to select from.
- queuenamenew
- The “New” queue to be used. If you specify a generic name, File Manager displays a list of matching queues to select from.
- rt:applid:rname
- You can specify a CICS® resource
in place of a data set name, where:
- rt
- Resource type. Valid values are:
- FI
- For a CICS® file.
- TD
- For a Transient Data Queue.
- TS
- For a Temporary Storage Queue.
- applid
- The VTAM® applid of the CICS® system.
- rname
- The name of the resource.
- GENNEW=generation
- Specifies the generation of the new member to be compared. A value of 0 refers to the current
member. A negative value refers to the relative generation number. A positive value refers the
absolute generation number.Tip: The GENOLD and GENNEW keywords can be used to compare different generations of the same member in the same data set.
If the input data set is not a PDSE that supports member generations, the GENNEW keyword is ignored.
- USEIOXNEW
- Specifies whether to invoke a user I/O exit, to process the “New”
data set.
- NO
- Default. Do not invoke a user I/O exit.
- YES
- Invoke a user I/O exit to process the “New” data set. This option is only available if the person who did the site customization for File Manager allowed user I/O exits on a site-wide basis.
- IOXNEW
- Specifies the name of the user I/O exit used for the “New”
data set. There are no restrictions on the programming language that
you can use to write an exit. The exit must be provided to
File Manager in the STEPLIB/ISPLLIB concatenation or their extensions (LINKLIST,
LPA, and so on).
- sysexit
- Default. If you specify USEIOXNEW=YES and do not supply a user
I/O exit name, File Manager uses the name of the exit provided in
the installation customization options. If USEIOXNEW has been set
to YES and no installation default has been provided, you must specify
IOXNEW=ioxname. Note: If you have selected batch processing in an online panel, the generated JCL statements use the default name provided in your Set System Processing Options panel.
- ioxname
- The name of a PDS(E) member of a data set that has been provided to File Manager in the STEPLIB concatenation.
- BINRECNEW=binrecnew-len
- Specifies the record length used for processing the
New
HFS file. Valid range: 1 to 32760.The file is processed in Binary mode (fixed-length records derived from the file, delimiters not distinguished). If you do not specify this parameter, the file is processed in Text mode (variable-length records, boundaries determined by delimiters).
- KEYNEW=keynew
- A key for KSDS records or a slot number for RRDS records, for
the “New” data set. The maximum key length is 30 characters.
The first record with a key or slot value greater than or equal to key is
the first record compared. If you omit the keynew and skipnew values,
the comparison begins with the first record in the data set.
If the key contains lowercase characters, blanks, or commas, enclose it in quotation marks. You can also specify a key in hexadecimal format (for example, X'C1C2C3').
- SKIPNEW=skipnew
- Number of logical records to be skipped from the beginning of the “New” data set. The default is 0.
- CMPNEW=cmpnew
- Number of records from the “New” data set to be compared. The maximum number is 999 999 999. If you specify ALL or omit the parameter, all the remaining records are compared.
- New template processing
- Use these options to specify the “New” copybook or
template that describes the record structure of your “New”
data set.
- TNEW=ddname
- Defines a reference to a DD or TSO ALLOC statement for the data
sets which contain the copybook or template member that describes
the record structure of your "New" data set. The default is TDNEW.
If you specify a concatenated DD, then you must provide the member name, member.
- TNEWMEM=member
- The name of the copybook or template member in the datasets identified by the TNEW parameter if it has not been specified on the DD statement. This parameter must not be specified if the TCNEW parameter is specified.
- TCNEW=tcnew(tcnmem)
- PDS and member name of the "New" copybook or template that describes the record structure of your "New" data set.
- OFFSETNEW
- The length of the 01 field in the “New” template
and the start locations of the fields within that 01 field are adjusted
by the value provided.
- value
- The offset value, which must be in the range -32760 to 32760, to be applied to the corresponding field identifier. If no field identifier is supplied and ALL is not used, the value is applied to the first Level 01 field in the “New” template.
- ALL
- Where the template contains multiple record structures, this keyword
applies the corresponding value to all Level
01 fields within the “New” template. Note: You can specify a value for ALL and then override this value for individual layouts by providing subsequent value and fieldname combinations.
- fieldname
- The name of the Level 01 field to which value is to be applied. The default is the first Level 01 field in the “New” template.
- FIELDNEW=(newfield1,newfield2,...)
- Field name or names in the “New” template, used to
create a mapping for a formatted comparison. This keyword is used
in conjunction with the FIELDOLD keyword to define mapping within
the batch file. The parentheses are optional when only one field is
specified but mandatory when more than one field is included. The
names are mapped in the order given, that is, oldfield1 is
mapped to newfield1 and so on, overriding
any default or existing mapping. FIELDOLD and FIELDNEW can be used with or without an existing mapping in the template and with or without the CORRESP keyword setting. See Batch mapping behavior for details.
- Copybook processing
- If you specify a copybook (instead of an existing template) for
either TCOLD or TCNEW, then File Manager uses these processing options
to compile the copybook into a template:
- LANG
- Determines whether File Manager automatically detects the
copybook language or interprets the language as COBOL,PL/I, or HLASM.Note: The COMPLANG setting in FMN0POPT is the equivalent of the LANG parameter in batch functions.
- If COMPLANG is set it determines the installation default language for online and batch compilation.
- If COMPLANG is not specified then COBOL is the installation default for online compilation and AUTO is the default for batch compilation.
- If a value of COBOL, HLASM, PL/1, or AUTO is specified (in the Compiler Language Selection panel or through the LANG parameter in a batch job) it overrides the default language.
- AUTO
- Automatically detect whether the copybook language is COBOL or PL/I, and invoke the appropriate compiler. If the compilation results in a return code greater than 4, then invoke the compiler for the other language. If the second compilation also results in a return code greater than 4, then retry the first compiler and report the compilation errors. If File Manager successfully creates a template (despite the compilation errors), then continue processing with the template.
- COBOL
- Invoke the COBOL compiler to create a template from the copybook. (Do not invoke the PL/I compiler, even if the COBOL compilation results in errors.)
- PLI
- Invoke the PL/I compiler to create a template from the copybook. (Do not invoke the COBOL compiler, even if the PL/I compilation results in errors.)
- HLASM
- Invoke the HLASM compiler to create a template from the copybook.
- COBOL options
- The following options are used to compile a COBOL copybook into
a template:
- DBCS=YES
- Use the DBCS compiler option.
- DBCS=NO
- Use the NODBCS compiler option.
For details on the effect of the DBCS and NODBCS compiler options, see the IBM COBOL Programming Guide for OS/390 & VM.
- CDPC=NO
- Do not use the COBOL SPECIAL-NAMES paragraph "Decimal-point is comma".
- CDPC = YES
- Use the COBOL SPECIAL-NAMES paragraph "Decimal-point is comma".
- CAE=NO
- Do not use the COBOL compile option ARITH(EXTEND).
- CAE = YES
- Use the COBOL compile option ARITH(EXTEND).
- MIXED = NO
- Field names stored in the template in uppercase.
- MIXED = YES
- Field names stored in the template in the original case as coded in the COBOL copybook.
- RFROM1=RTO1 … RFROM5=RTO5
- Up to five pairs of “From” and
“To” pseudo-text character strings for the COBOL REPLACE compiler-directing
statement.
If your COBOL copybooks contain characters that you want to remove or replace with other characters before compiling the copybooks into templates, then use these replacing options.
For example, if your copybooks contain colon characters (:) that you want to remove before compiling, then specify
'==:=='
as operand1 and'====='
as operand2.For details on specifying “From” and “To” strings for COBOL REPLACE, see the IBM COBOL Language Reference.
- CBLMAXRC
- Sets the maximum acceptable return code for a copybook compile.
A return code higher than the specified level causes the function
to stop. Default is 4. Note: The COMPMAXRC parameter is still supported but it is recommended that the CBLMAXRC parameter is used instead. If you do specify the COMPMAXRC parameter, it takes precedence over the language MAXRC.
- CBLLIBS
- Allows you to specify a list of up to ten data set names to be
specified in the SYSLIB concatenation list. These data sets are searched
in the order specified for COPY and INCLUDE members for the compilation.
- dsname
- The name of the data set name to be processed. Generic name masks are not allowed.
- CBLADDOP
- Additional COBOL compiler options which are included in a CBL statement when compiling COBOL copybooks.
- PL/I options
- The following options are used to compile a PL/I copybook into a template:
- BIN63=YES
- Use the LIMITS(FIXEDBIN(63)) compiler option.
- BIN63=NO
- Use the LIMITS(FIXEDBIN(31)) compiler option.
- DEC31=YES
- Use the LIMITS(FIXEDDEC(31)) compiler option.
- DEC31=NO
- Use the LIMITS(FIXEDDEC(15)) compiler option.
- GRAPHIC=YES
- Use the GRAPHIC compiler option.
- GRAPHIC=NO
- Use the NOGRAPHIC compiler option.
- UNALIGNED=YES
- Use the DEFAULT RANGE (*) UNALIGNED, language statement to change the default alignment.
- UNALIGNED=NO
- Use the PL/I default.
- PLIMAXRC
- Sets the maximum acceptable return code for a copybook compile. A return code higher than
the specified level causes the function to stop. Default is 4. Note: The COMPMAXRC parameter is still supported but it is recommended that the PLIMAXRC parameter is used instead. If you do specify the COMPMAXRC parameter, it takes precedence over the language MAXRC.
- PLILIBS
- Allows you to specify a list of up to ten data set names to be specified in the SYSLIB
concatenation list. These data sets are searched in the order specified for COPY and INCLUDE
members for the compilation.
- dsname
- The name of the data set name to be processed. Generic name masks are not allowed.
- PLIADDOP
- Additional PL/I compiler options which are included in a *PROCESS statement when compiling PL/I copybooks.
For details on the effect of these compiler options, see the IBM VisualAge PL/I for OS/390 Programming Guide.
- HLASM options
- The following options are used to compile a HLASM copybook into a template:
- DBCS=YES
- Use the DBCS compiler option.
- DBCS=NO
- Use the NODBCS compiler option.
- NOALIGN=YES
- Use the NOALIGN compiler option.
- NOALIGN=NO
- Use the ALIGN compiler option.
- ASMMAXRC
- Sets the maximum acceptable return code for a copybook compile. A return code higher than
the specified level causes the function to stop. Default is 4. Note: The COMPMAXRC parameter is still supported but it is recommended that the ASMMAXRC parameter is used instead. If you do specify the COMPMAXRC parameter, it takes precedence over the language MAXRC.
- ASMLIBS
- Allows you to specify a list of up to ten data set names to be specified in the SYSLIB
concatenation list. These data sets are searched in the order specified for COPY and INCLUDE
members for the compilation.
- dsname
- The name of the data set name to be processed. Generic name masks are not allowed.
- ASMADDOP
- Additional HLASM compiler options which are included in a *PROCESS statement when compiling COPY and MACRO members.
For details on the effect of these compiler options, see the HLASM V1R6 Programmer's Guide.
Note: You cannot specify different options for compiling “Old” and “New” copybooks; the same copybook options are used for both. - Comparison options
-
- TYPE=RECORD
- Record comparison.
- CORRESP=NO
- Use this option if the field mapping you want to use is in the TCNEW member. If the TCNEW member is a copybook, or no field mapping is supplied, then File Manager ignores this option and performs a compare as if you had specified CORRESP=YES.
- CORRESP=YES
- This option instructs File Manager to map output fields to input
fields with the corresponding name.
If you want to use the existing mapping in the “New” template, specify CORRESP=NO.
- SYNCH=ONETOONE
- One-to-one synchronization.
- SYNCH=READAHEAD
- Read-ahead synchronization.
If specified, you can use the following option:
- LIMIT=ralim
- Limit for read-ahead synchronization.
- LENGTH=ralen
- The number of records that must match during read-ahead processing for synchronization to occur.
- LIST=SUMMARY
- Summary listing.
- LIST=DELTA
- Delta listing.
- LIST=MATCHING
- Matching listing.
- LIST=LONG
- Long listing.
- LIST=NONE
- No listing.
- Listing Options
- The following option takes effect if the LIST=LONG parameter is
specified:
- EXCLUDE=exclude_type
- The specified compare result types are not reported. exclude_type can have the following values:
- INSERTED
- Excludes inserted records from the report.
- DELETED
- Excludes deleted records from the report.
- CHANGED
- Excludes changed records from the report.
- MATCHED
- Excludes matched records from the report.
- NUMDIFF=numdiff
- The number of differences after which the Compare Utility stops processing the data sets. A numdiff value of zero results in all differences being reported.
- RCDIFF=(numdiff,return_code)
- Sets the batch return code when a threshold of changes has been
met, where:
- numdiff
- The minimum number of differences to trigger the return code. A numdiff value of zero always trigger the return code.
- return_code
- The batch return code value that is set if the number of differences have been detected.
- WIDE=NO
- Narrow listing.
- WIDE=YES
- Wide listing. The WIDE listing is limited in width to approximately 32K bytes of (record) data. When working with records longer than 32K, the record data, and optional change hilighting, is truncated past 32K bytes of data because of the SYSPRINT output record limitation. The entire record length is used to perform the comparison so records ar marked correctly as "changed" regardless of length.
- HEX=NO
- No hex formatting.
- HEX=YES
- Show hex formatting. Note: The print processing option, DUMP, is ignored and the hexadecimal print output is in updown format.
- HILIGHT=NO
- No highlighting of changed fields.
- HILIGHT=YES
- Highlight changed fields.Note: For SYNCH=READAHEAD this option has no effect because read-ahead synchronization can only produce matched records and inserted/deleted records. By definition there cannot be changed records.
- SHOWATTR=NO
- Suppress attribute information in headings (affects formatted comparisons only).
- SHOWATTR=YES
- Show attribute information in headings (affects formatted comparisons only).
- CHNGDFLD=NO
- Show all fields in the formatted comparison reports.
- CHNGDFLD=YES
- Show only changed fields in formatted comparison reports. This option has no effect if the 'Wide listing' (WIDE=YES) option has been selected, for record type comparisons, or for SYNCH=READAHEAD.
- SLCTDFLD=NO
- Fields selected in the template are not shown in addition to changed fields. This option has effect only if CHNGDFLD=YES is also specified.
- SLCTDFLD=YES
- Fields selected in the template are always shown. This option takes effect only if CHNGDFLD=YES is also specified.
- SUPIDFLD=NO
- Fields for inserted and deleted records are printed. This option takes effect only if CHNGDFLD=YES is also specified.
- SUPIDFLD=YES
- Fields for inserted and deleted records are suppressed. This option takes effect only if CHNGDFLD=YES is also specified.
- PACK=UNPACK
- Allow detection of ISPF packed data and unpack the records if they are packed before passing to the processing routine or printing.
- JUST=NO
- Do not left-justify numeric fields if Formatted Compare Type option has been selected.
- JUST=YES
- Left-justify numeric fields if Formatted Compare Type option has been selected.
- SORT=NO
- Do not sort the old and new data sets before the records are compared.
- SORT=YES
- Sort the records in the old and new data sets before they are compared. This option is only
valid when the SYNCH=KEYED or SYNCH=RAKEY options are used. The records are sorted based on
the old and new key field or key location, length and type values specified with the keyed
synchronization options.A sort request is ignored if the old or new data set has any of the following characteristics:
- RECFM=U
- VSAM linear file
- VSAM file with maximum record length greater than 32K
- QSAM spanned file with a record length greater than 32K
- The template indicates that the file has segmented records
- PDS or PDSE file
A sort request is also ignored when any of the following conditions is true:- I/O exits are used to process the data sets
- The comparison involves MQ queues
- The comparison involves remote files
- The comparison involves HFS files
Note: Using PDS or PDSE files with SORT=YES is possible when the data sets are allocated to DD names that are specified using the DDOLD and DDNEW DSM parameters. - INCLUDEMD
- This parameter determines what happens to the descriptor for an
Websphere MQ message.
- YES
- The descriptor is added as a prefix as the data is compared.
- NO
- Just the message data is compared. This is the default.
This parameter applies only when the input describes an MQ queue.
- PACK=SKIP
- Check for ISPF packed data and if packed, skip processing of this data set or member.
- Comparison output data sets
-
- IOUTPUT=ddname
- Defines a reference to a DD or TSO ALLOC statement for the data set or HFS file the "inserted" records are to be written to.
- IOUTMEM=member
- The name of the member in the dataset identified by the COUTPUT parameter if it has not been specified on the DD statement.
- IOUTDSN=ioutdsn(member)
- The name of the output data set, or an absolute path to the output
HFS file, the "inserted" records are to be written to. The name can
include a member name in parenthesis.
An absolute path to an HFS file (directory) must be enclosed in apostrophes. If it does not fit on one line, you can split it over more than one line.
- IBINREC=binrec_len
- Specifies the record length to be used for processing the inserted HFS output data set. Valid range is 1–32760. The file is processed in binary mode. If you do not specify this parameter, the file is processed in text mode.
- IDISP=MOD
- Writes inserted records to the existing output data set, starting from the beginning.
- IDISP=OLD
- Appends inserted records to the existing output data set.
- DOUTPUT=ddname
- Defines a reference to a DD or TSO ALLOC statement for the data set or HFS file the "deleted" records are to be written to.
- DOUTMEM=member
- The name of the member in the dataset identified by the COUTPUT parameter if it has not been specified on the DD statement.
- DOUTDSN=doutdsn(member)
- The name of the output data set, or an absolute path to the output
HFS file, the "deleted" records are to be written to. The name can
include a member name in parenthesis.
An absolute path to an HFS file (directory) must be enclosed in apostrophes. If it does not fit on one line, you can split it over more than one line.
- DBINREC=binrec_len
- Specifies the record length to be used for processing the deleted HFS output data set. Valid range is 1–32760. The file is processed in binary mode. If you do not specify this parameter, the file is processed in text mode.
- DDISP=MOD
- Writes deleted records to the existing output data set, starting from the beginning.
- DDISP=OLD
- Appends deleted records to the existing output data set.
- NCOUTPUT=ddname
- Defines a reference to a DD or TSO ALLOC statement for the data set or HFS file the new "changed" records are to be written to. The default is FMNCHOUT.
- NCOUTMEM=member
- The name of the member in the dataset identified by the NCOUTPUT parameter if it has not been specified on the DD statement.
- NCOUTDSN=ncoutdsn(member)
- The name of the output data set, or an absolute path to the output
HFS file, the new "changed" records are to be written to. The name
can include a member name in parenthesis.
An absolute path to an HFS file (directory) must be enclosed in apostrophes. If it does not fit on one line, you can split it over more than one line.
- NCBINREC=binrec_len
- Specifies the record length to be used for processing the New Change HFS output data set. Valid range is 1–32760. The file is processed in binary mode. If you do not specify this parameter, the file is processed in text mode.
- NCDISP=MOD
- Writes new changed records to the existing output data set, starting from the beginning.
- NCDISP=OLD
- Appends new changed records to the existing output data set.
- OCOUTPUT=ddname
- Defines a reference to a DD or TSO ALLOC statement for the data set or HFS file the new "changed" records are to be written to. The default is FMOCHOUT.
- OCOUTMEM=member
- The name of the member in the dataset identified by the OCOUTPUT parameter if it has not been specified on the DD statement.
- OCOUTDSN=ocoutdsn(member)
- The name of the output data set, or an absolute path to the output
HFS file, the old "changed" records are to be written to. The name
can include a member name in parenthesis.
An absolute path to an HFS file (directory) must be enclosed in apostrophes. If it does not fit on one line, you can split it over more than one line.
- OCBINREC=binrec_len
- Specifies the record length to be used for processing the New Change HFS output data set. Valid range is 1–32760. The file is processed in binary mode. If you do not specify this parameter, the file is processed in text mode.
- OCDISP=MOD
- Writes old changed records to the existing output data set, starting from the beginning.
- OCDISP=OLD
- Appends old changed records to the existing output data set.
- NMOUTPUT=ddname
- Defines a reference to a DD or TSO ALLOC statement for the data set or HFS file the new "matched" records are to be written to. The default is FMNMTOUT.
- NMOUTMEM=member
- The name of the member in the dataset identified by the COUTPUT parameter if it has not been specified on the DD statement.
- NMOUTDSN=nmoutdsn(member)
- The name of the output data set, or an absolute path to the matched
HFS file, the new "matched" records are to be written to. The name
can include a member name in parenthesis.
An absolute path to an HFS file (directory) must be enclosed in apostrophes. If it does not fit on one line, you can split it over more than one line.
- NMBINREC=binrec_len
- Specifies the record length to be used for processing the new matched HFS output data set. Valid range is 1–32760. The file is processed in binary mode. If you do not specify this parameter, the file is processed in text mode.
- NMDISP=MOD
- Writes new matched records to the existing output data set, starting from the beginning.
- NMDISP=OLD
- Appends new matched records to the existing output data set.
- OMOUTPUT=ddname
- Defines a reference to a DD or TSO ALLOC statement for the data set or HFS file the old "matched" records are to be written to. The default is FMOMTOUT.
- OMOUTMEM=member
- The name of the member in the dataset identified by the COUTPUT parameter if it has not been specified on the DD statement.
- OMOUTDSN=omoutdsn(member)
- The name of the output data set, or an absolute path to the matched
HFS file, the old "matched" records are to be written to. The name
can include a member name in parenthesis.
An absolute path to an HFS file (directory) must be enclosed in apostrophes. If it does not fit on one line, you can split it over more than one line.
- OMBINREC=binrec_len
- Specifies the record length to be used for processing the old matched HFS output data set. Valid range is 1–32760. The file is processed in binary mode. If you do not specify this parameter, the file is processed in text mode.
- OMDISP=MOD
- Writes old matched records to the existing output data set, starting from the beginning.
- OMDISP=OLD
- Appends old matched records to the existing output data set.
- Formatted type options
- If you specify TYPE=FORMATTED, for a formatted comparison, you
can use the following options:
- IGNORELB=NO
- Respect leading blanks when comparing alphanumeric fields.
- IGNORELB=YES
- Ignore leading blanks when comparing alphanumeric fields.
- IGNORETB=NO
- Respect trailing blanks when comparing alphanumeric fields.
- IGNORETB=YES
- Ignore trailing blanks when comparing alphanumeric fields.
- MATCHREF=NO
- Ignore leading blanks (unless IGNORELB=NO is also specified), trailing blanks (unless IGNORETB=YES also specified) and embedded blanks when comparing alphanumeric fields.
- MATCHREF=YES
- Respect leading blanks, trailing blanks and embedded blanks when
comparing alphanumeric fields. Note: Any setting of IGNORELB or IGNORETB is ignored if MATCHREF=YES is also specified.
- IGNORECASE=NO
- Respect case when comparing alphanumeric fields.
- IGNORECASE=YES
- Ignore case when comparing alphanumeric fields.
- Keyed synchronization options
- If you specify SYNCH=KEYED, you are requesting keyed synchronization.
If specified, you can define up to sixteen key segments to be concatenated to form a single key. A key segment consists of the key's location in the “Old” and “New” data sets and the key's length and data type. These values are built using one of the following sources or a combination of these elements:
- The intrinsic data set keys (where the data set is keyed, for example, VSAM KSDS).
If only one of the data sets is keyed, the location and length values for the first segment is initialized from the available data set key information, and the keywords corresponding to the initialized values are not required. However, you need to supply the location value and, optionally, the data type for the non-keyed data set. If you do not specify the data type, the default type of AN is used.
If both data sets are keyed, you do not need to supply any of the keywords and the location values is initialized from the data set key. The length value is that of the shorter of the two keys.
If used in a multi-segment key, this defines the first segment. To prevent other segment sources from overriding the intrinsic key, leave the first argument in the KEYxxx keyfields as a void, for example, KEYLOCOLD=(,keylocold).
- The key segment sequence information stored in your templates.
- The KEYFLDOLD and KEYFLDNEW keyfields (when a template has been specified)
- The KEYLOCOLD, KEYLOCNEW, KEYLEN, and (optionally) KEYTYPE keyfields.
In most situations, you would use only one of these sources to define your key segments, however, all of them can be intermixed to define the key segments, with the caveat that KEYLOCOLD, KEYLOCNEW, KEYLEN, KEYTYPE, KEYLENNEW, KEYTYPNEW and KEYORD override KEYFLDOLD and KEYFLDNEW when both specify data for the same segment.
Up to 16 values can be specified for each keyword, and the parentheses can be omitted if only one value is provided. The same number of key segments must be defined for both data sets, and the data type and length of corresponding segments must match. Each set of corresponding values then defines a key segment.
Note:- KEYFLDOLD and KEYFLDNEW can only be specified if a template is specified for the corresponding data set.
- Any segment whose presence is implied by a keyword must be fully specified, except that the data type for the segment can default as described in KEYTYPE below.
- KEYTCOLD
- Determines whether or not any key segment information stored in the “Old” template
is used.
If unspecified, the default behavior is that key segment information stored in the “Old” template is only used when all of the following conditions are met:
- TCOLD=tcold has been specified.
- The “Old” template contains key segment information.
- No other keyed synchronization options have been specified for either the “Old” or the “New” data sets.
If any of these conditions are not met, key segment information in an “Old” template is ignored.
If specified, the setting given overrides the default behavior.
- YES
- The key segment information in the “Old” template is loaded regardless of whether or not other KEY... keywords have been specified. Where present, the other KEY... keywords function as overrides to the template specifications.
- NO
- The key segment information in the “Old” template is ignored regardless of whether or not other KEY... keywords have been specified.
- KEYTCNEW
- Determines whether or not any key segment information stored in the “New” template
is used.
If unspecified, the default behavior is that key information stored in the “New” template is only used when all of the following conditions are met:
- TCNEW=tcnew has been specified.
- The “New” template contains key segment information.
- No other keyed synchronization options have been specified for either the “Old” or the “New” data sets.
If any of these conditions are not met, key segment information in an “New” template is ignored.
If specified, the setting given overrides the default behavior.
- YES
- The key segment information in the “New” template is loaded regardless of whether or not other KEY... keywords have been specified. Where present, the other KEY... keywords function as overrides to the template specifications.
- NO
- The key segment information in the “New” template is ignored regardless of whether or not other KEY... keywords have been specified.
- KEYFLDOLD=(keyfieldold,...)
- Specifies the name of the field or fields in the “Old” template to be used as key segments. When used in combination with other key segment sources, empty arguments must be included to indicate the position of the keyfieldold value or values in the concatenated key.
- KEYFLDNEW=(keyfieldnew,...)
- Specifies the name of the field or fields in the “New” template to be used as key segments. When used in combination with other key segment sources, empty arguments must be included to indicate the position of the keyfieldnew value or values in the concatenated key.
- KEYLOCOLD=(keylocold,...)
- Key locations in “Old” data set for keyed synchronization. When used in combination with other key segment sources, empty arguments must be included to indicate the position of the keylocold value or values in the concatenated key.
- KEYLOCNEW=(keylocnew)
- Key location in “New” data set for keyed synchronization. When used in combination with other key segment sources, empty arguments must be included to indicate the position of the keylocnew value or values in the concatenated key.
- KEYLEN=keylen
- Key length for keyed synchronization. When used in combination with other key segment sources, empty arguments must be included to indicate the position of the keylen value in the concatenated key.
- KEYTYPE
- Defines the data type of the key segment. Can be used to override the data type of an existing
template field. When used in combination with other key segment sources, empty arguments must be
included to indicate the position of the keytype value in the
concatenated key.
KEYTYPE is optional - any key segments defined by KEYLOCxxx/KEYLEN that do not have a corresponding KEYTYPE keyword is given type CHAR.
Key segments defined using KEYFLDOLD and KEYFLDNEW inherit the type of the template field on which they are based, and the expected record sequence is assumed to follow accordingly. In practice this is only likely to be significant for signed binary and packed decimal fields (though internal floating point is also supported). For example, if a key were defined on a two-byte field by location and length, then a value of '001C'x would be less than a value of '001D'x. However if the key were defined via a packed-decimal template field then '001D'x (-1) would be less than '001C'x (+1). Equivalent results can be obtained by using KEYTYPE with KEYLOCxxx and KEYLEN.
- CHAR
- This is equivalent to the internal C/AN data type. CHAR data type segments are synchronized using the normal EBCDIC collating sequence.
- BINARY
- This is equivalent to the internal B/BI data type. BINARY data type segments are synchronized as signed binary integers. They must have a length of 2, 4 or 8.
- PACKED
- This is equivalent to the internal P/PD data type. PACKED data type segments are synchronized as signed packed decimal integers. They must have a length less than or equal to 16.
- FLOAT
- This is equivalent to the internal FP data type. FLOAT data type segments are synchronized as signed floating point numbers. They must have a length less of 4 or 8.
- ZONED
- This is equivalent to the internal ZD data type. ZONED data type segments are synchronized as numeric fields. They must have a length less than or equal to 32.
Note: Template fields that are selected as key segments but do not have one of the above data types, is treated as CHAR. In particular, this means that the actual data lengths of varying fields is ignored. - KEYLENNEW=keylen
- The key length in
New
data set for keyed synchronization.This is required only if the length is different from what was specified on the KEYLEN keyword. When you use this option with other key segment sources, you must include empty arguments to indicate the position of the keylennew value in the concatenated key.Note: If the new key length is different from the old key length, the shorter key is padded with hex zeros or the pad character (normally blank) in alphanumeric fields if the pad option is on, before comparison is performed. - KEYTYPNEW
- Defines the data type for the
New
data set of the key segment.This is required only if the type is different from what was specified on the KEYTYPE keyword. You can use this option to override the data type of an existing template field. When you use this option with other key segment sources, you must include empty arguments to indicate the position of the keytypnew value in the concatenated key.
- KEYORD
- Defines the order of the key segment. Specify A for ascending. Specify D for descending. When you use this option with other key segment sources, you must include empty arguments to indicate the position of the keyord value in the concatenated key. The default value is A (ascending).
- KEYMATCH
- Specify YES to match records when all of the key fields match.
- KEYDUPOK
- Specify YES to suppress sequence error messages for duplicate key values. The default is NO.
- The intrinsic data set keys (where the data set is keyed, for example, VSAM KSDS).
- Read-ahead Keyed synchronization options
- If you specify SYNCH=RAKEY, you are requesting read-ahead keyed synchronization. This option is similar to SYNCH=READAHEAD except the fact that instead of record matching, key field matching is performed when synchronizing records. As a result, it can detect changes to records that match according to key field data but differ according to record comparison. Therefore, both the SYNCH=READAHEAD and the SYNCH=KEYED suboptions apply with the exception of KEYORD.
- Load module compare options
- If you specify SYNCH=LMOD, you are requesting load module comparison.
Load module comparison has these specific options:
- CMPLVL
- Determines the level of load module comparison.
- LMOD
- Only information on the load module level is extracted and compared. CSECT information (and differences at CSECT level) is ignored. This results in a less detailed comparison.
- CSECT
- Information on both the load module and CSECT levels is extracted and compared. This results in a detailed comparison.
- DATEFORM=YYYYDDD
- Reported dates (link and compile dates) shown in YYYY.DDD format.
- DATEFORM=YYMMDD
- Reported dates (link and compile dates) shown in YY/MM/DD format.
- LMODC
- Determines what information at the load module level is to be
included in the compare. The criteria correspond with load module
properties; only those specified are compared and displayed. Each
of the options below can be specified in any sequence, enclosed in
parenthesis:
- SIZE
- The load module size is compared.
- ADDRESS
- The entry point address of load module is compared.
- LINKER | BINDER
- The version of the linkage editor or binder used to prepare the load module is compared. LINKER and BINDER are mutually exclusive.
- DATE | TIME
- The load module link (bind) date and time are compared. DATE and TIME are mutually exclusive.
- MODE
- The AMODE and RMODE of the load module are compared.
- AC | AUTH
- The load module authorization code is compared. AC and AUTH are mutually exclusive.
- ATTR
- The load module link (bind) attributes are compared.
- CSECTC
- Determines what information at the CSECT level is to be included
in the compare. The criteria correspond with the CSECT properties;
only those specified are compared and displayed. Each of the options
below can be specified in any sequence, enclosed in parenthesis. If
CMPLVL=LMOD, this parameter is ignored.
- SIZE
- The CSECT size is compared.
- ADDRESS
- The address of the CSECT is compared.
- COMPILER
- The versions of the language compilers used to compile the CSECT are compared
- DATE
- The date of the CSECT compile is compared.
- MODE
- The AMODE and RMODE of the CSECT are compared.
- IDRZAP | ZAP
- The AMSPZAP IDR data is compared. The IDR ZAP data is an extension of the CSECT information, but is formatted into separate records. ISRZAP and ZAP are mutually exclusive.
- TEXT
- The CSECT content is compared. The CSECT content is an extension
of the CSECT information, but is formatted into separate, 32-byte
records shown in "memory dump" format (hexadecimal and character).
Note: If you specify TEXT, the listing option is set to WIDE=YES to accommodate the dump format comparison.
- COPT
- The compiler options for each CSECT are compared if they can be determined.
- Template reporting options
-
- PBK=NONE
- Template layout and criteria information not reported.
- PBK=LAYOUTS
- Template layout information reported if TYPE=FORMATTED is also specified.
- PBK=CRITERIA
- Template criteria information reported. In this case, a terse layout report is also generated, containing only the fields referred to in the criteria expressions.
- PBK=ALL
- Template layout and criteria information reported. If TYPE=RECORD is specified, a terse layout report is generated, containing only the fields referred to in the criteria expressions. If TYPE=FORMATTED is specified, a full layout report is generated.
- MAP=NONE
- Template mapping information not reported.
- MAP=MAPPED
- Mapped template fields reported if TYPE=FORMATTED is also specified.
- MAP=UNMAPPED
- Unmapped template fields reported if TYPE=FORMATTED is also specified.
- MAP=ALL
- Both mapped and unmapped template fields reported if TYPE=FORMATTED is also specified.
- ARRAY=YES
- If field information is reported, all occurrences of any array
elements are reported.
For COBOL OCCURS DEPENDING ON tables, the maximum occurrences are reported.
For PL/1 REFER arrays, the minimum occurrences are reported.
- ARRAY=NO
- Occurrences of array elements not reported.
- FSTATS=NO
- The Field Statistics report is not to be generated.
- FSTATS=YES
- The Field Statistics report is to be generated.
- HEXLOC=YES
- If field information is reported, all field start and end positions are reported as hexadecimal offsets.
- HEXLOC=NO
- Field start and end positions not reported as hexadecimal offsets.
- HEXLEN=YES
- If field information is reported, all field lengths are reported in hexadecimal.
- HEXLEN=NO
- Field lengths not reported in hexadecimal.
//DSM JOB (ACCT),'NAME'
//* COMPARE DATA SETS
//*
//FMBAT PROC
//FMBAT EXEC PGM=FILEMGR
//STEPLIB DD DSN=FMN.SFMNMOD1,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSABEND DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
// PEND
//*
//STPSSEX EXEC FMBAT
//SYSIN DD *
$$FILEM VER
$$FILEM DSM TYPE=RECORD,
$$FILEM SYNCH=ONETOONE,
$$FILEM LIST=LONG,
$$FILEM WIDE=YES,
$$FILEM HILIGHT=YES,
$$FILEM DSNOLD=FMN.SFMNSAM1(FMNCDATA),
$$FILEM SKIPOLD=0,
$$FILEM CMPOLD=20,
$$FILEM DSNNEW=FMN.SFMNSAM1(FMNCDATA),
$$FILEM SKIPNEW=20,
$$FILEM CMPNEW=20
$$FILEM EOJ
/*
$$FILEM DSCMP TYPE=RECORD,
$$FILEM SYNCH=KEYED,
$$FILEM LIST=LONG,
$$FILEM WIDE=YES,
$$FILEM HILIGHT=YES,
$$FILEM HEX=YES,
$$FILEM DSNOLD=USERID.COMPARE.KSDS1,1
$$FILEM KEYLOCOLD=(,11),2
$$FILEM DSNNEW=USERID.COMPARE.FLAT2,3
$$FILEM TCNEW=USERID.TEMPLATE(FLAT2),4
$$FILEM KEYTCNEW=YES,5
$$FILEM KEYFLDNEW=(,FIELD-3),6
$$FILEM KEYLEN=(,1),7
$$FILEM KEYTYPE=(,CHAR)8
$$FILEM EOJ
- DSNOLD is intrinsically keyed with key position 1 and length 10.
- KEYLOCOLD provides a position for the second segment of the “Old” key.
- DSNNEW is not intrinsically keyed.
- TCNEW specifies a new template: the template specifies FIELD-1 (position 1, length 10, type AN) as key segment 1.
- KEYTCNEW forces the loading of the TCNEW key segment information, in spite of the presence of the other KEY... keywords, which act as overrides wherever they clash with the information from the template.
- KEYFLDNEW specifies FIELD-3 (position 12, length 2, type BI) as the second segment of the “New” key
- KEYLEN overrides the length of the second key segment
- KEYTYPE overrides the type of the second key segment
The resulting key segments are shown in the following table:
Segment number | “Old” key position | “New” key position | Key length | Key type |
---|---|---|---|---|
1 | 11 | 12 | 103 | AN4 |
2 | 115 | 126 | 17 | AN8 |
Source of key information:
- DSNOLD catalog entry
- Template field FIELD-1
- DSNOLD catalog entry and template field FIELD-1 (must be consistent)
- Template field FIELD-1 (consistent with AN default for key type)
- KEYLOCOLD
- Template field FIELD-3 via KEYFLDNEW
- KEYLEN
- KEYTYPE