SPLIT

This control statement is used only during the DUMP process. This statement indicates if any records should be written to more files, called split files. These split files can be used as input to other applications without the need for any intermediate extractions. A split file has the same attributes as an EXTRACT file, and can be processed the same way as an extract. The actual SPLIT control statement must follow a DUMP statement in the control statement input file or else an error occurs.
smfd127
This control statement is used only during the DUMP process. This statement indicates if any records should be written to more files, called split files. These split files can be used as input to other applications without the need for any intermediate extractions. A split file has the same attributes as an EXTRACT file, and can be processed the same way as an extract. The actual SPLIT control statement must follow a DUMP statement in the control statement input file or else an error occurs.
Since the SPLIT command runs during a critical process, the dump process, there are no chances that are taken when creating split files. If an error occurs when a split file is written, abend, or otherwise the split file is disabled and the dump process continues without interruption. If it cannot be determined, which split file is active all split files are deactivated and the dump process continues without interruption.
If there are errors, diagnostic information is produced in the dump process output. This output can be used to correct the problem in future dump process executions. If CA Service Desk is installed and this product is set up to open Service Desk requests, an attempt is made to open a request.
If a split file was disabled, the output can be recreated by using the EXTRACT process after the dump has completed.
Statement Format
SPLIT
►►─ SPLIT ─┬─ SID(smfid,smfid...) ──┬─ TODD(ddname) ─┬────────────────┬────────►            ├─ XSID(sid1 ... sidn) ──┤                └─ EXIT(module) ─┘            ├─ EXCLUDESID(sid1 ...) ─┤                                                └─ ALL ──────────────────┘                 ►─┬─────────────────┬────────┬────────────────────────┬───────────────────────►    ├─ SELECT(list) ──┤        ├─SIGNATURES(─┬─ 
NO
 ◄─┬ )┤       └─ EXCLUDE(list) ─┘                      └─ YES ─┘  ►─┬──────────────────────────────────────────────────────────────┬───────────►    └─ INDEXDSN(dsname) ─┬────────────────┬─┬────────────────────┬─┘                         └─ INDEXLIM(nn) ─┘ └─ INDEXDUP(ddname) ─┘                         └ INDEXDAYS(nnn)┘  ►─┬────────────────────────────────────────────┬─────────────────────────────►    ├─ WHEN(component,test,value,test,value...) ─┤    ├─ WHEN(component,test,value,test,value...) ─┤    ├─ WHEN(component,test,value,test,value...) ─┤    ├─ WHEN(component,test,value,test,value...) ─┤    └─ WHEN(component,test,value,test,value...) ─┘  ►─┬─────────────────────────────┬────────────────────────────────────────────►    └─ EXPAND110( ─┬─ NO ◄ ─┬─ ) ─┘                   └─ YES ──┘ ►─┬─────────────────────────────┬────────────────────────────────────────────►    └─ EXPANDDB2( ─┬─ NO ◄ ─┬─ ) ─┘                   └─ YES ──┘  ►─┬─────────────────────────────┬────────────────────────────────────────────►    └─ TIMEFILL( ─┬─ NO ◄ ─┬─ ) ─┘                  └─ YES ──┘  ►─┬──────────────────────────────┬────────────────────────────────────────────►    └─ TIMECLOSE( ─┬─ NO ◄ ──┬─ ) ─┘                   ├─ YES ───┤                   └─ FORCE ─┘  ►─┬──────────────────────────────────────────────────┬─ . ───────────────────►◄    └─ TIME(hhmm,hhmm,hhmm,hhmm) ─┤ TIME Parameters ├ ─┘
Expansion of TIME Parameters
├── TIMEGDG(gdgname) ─────────────────────────────────────────────────────────►  ►─┬) ─┬───────────────────────────┬───────────┬───►    │                              ├─ TIMEEXPDT(yyyyddd) ──────┤           │    │                              └─ TIMERETPD(nnnn) ─────────┘           │    └─ TIMEUNIT(unit) ─┬───────────────────────────┬───────────────────────┘    │TIMESTORC(SMSstorageclass} ─┬───────────────────────────┬───────────────────────┘    │TIMEDATAC(SMSdataclass} ─┬───────────────────────────┬───────────────────────┘    │TIMEMGMTC(SMSmanagementclass ─┬───────────────────────────┬───────────────────────┘   ├─TIMEVOL(volser)┬──────────────┬────────────────────────┘ ─┬───────────────────────────┬───────────────────────┘   ├─TIMESPACE(type,pri,sec))┬──────────────┬──────────────────┘  ►─┬───────────────────────────────────────────────┬──────────────────────────►    └─ TIMEBLKSIZE(blksize) ─┬────────────────────┬─┘                             └─ TIMELRECL(lrecl) ─┘  ►─┬─────────────────────┬────────────────────────────────────────────────────►    └─ TIMEVOLCOUNT(nnn) ─┘  ►─┬─────────────────────────────┬────────────────────────────────────────────►    └─ TIMERECFM( ─┬─ VB ◄ ─┬─ ) ─┘                   └─ VBS ──┘  ►─┬────────────────────────────────┬──────────────────────────────────────────┤    └─ TIMEDSNLARGE( ─┬─ NO ◄ ─┬─ ) ─┘                      └─ YES ──┘  ►─┬──────────────────────────────────────────────┬────────────────────────────┤    └─ TIMEKEYLABEL( ── encryption-key-label ── ) ─┘                        ►─┬────────────────────────────────┬──────────────────────────────────────────┤    └─ TIMEEXTREQ( ───┬─ NO ◄ ─┬─ ) ─┘                      └─ YES ──┘
Operands and Descriptions
SID|ALL
Identifies the configurations that the SPLIT statement applies to.
ALL
Indicates that the SPLIT statement is applied to all configurations being processed.
SID
This operand limits the SPLIT statement to the SMF IDs listed. Up to 20 values can be listed. A wildcard asterisk is allowed. Mix wildcard and non-wildcard values are allowed.
Example:
To limit an SPLIT statement to only SMF IDs SYSA and SYSB, specify SID(SYSA,SYSB). To apply the SPLIT statement only to production systems that have SMF IDs beginning with PR, specify SID(PR**).
EXCLUDESID(sid1, sid2, …)
XSID(sid1, sid2, …)
The EXCLUDESID and XSID operands provide a way to indicate which systems the control statement does not apply to. One or more systems can be specified. Any configurations in the SCDS that have any of the named SIDs are not processed with the command. All other configured systems will be processed.
The EXCLUDESID and XSID operands are mutually exclusive synonyms of each other. These operands are also mutually exclusive with the SID operand and the ALL operand.
TODD(ddname)
Indicates the ddname of the split file, the file that receives the records that are written out. To avoid potential conflicts with existing and reserved ddnames, we strongly recommend that the ddname not begin with SYS or CA.
If the TIME operand is not coded in the SPLIT statement, then this ddname must be in the JCL and the file allocated. If the TIME operand is indicated in the SPLIT statement, then this ddname must not be in the JCL. The reason is the ddname is used in dynamic allocation of the GDG members indicated in the TIMEGDG operand.
This value is also placed in the split file index. This value can also be used as a logical identifier for split files that are related because they are used in the same definition.
EXIT(module)
Specifies the load module entry point name for a split exit module. The module must be located in the STEPLIB or JOBLIB concatenation for the dump process, in the system linklist, or in LPA. For more information, see Systems Programming for specifications on writing an SPLIT exit.
SELECT|EXCLUDE
Either selects only certain record types for processing or excludes certain record types from processing.
These operands are optional; but if neither is coded, all SMF records being dumped are processed. In that case, the split file contains every record in the dump.
The list of records can include any valid SMF record types and subtypes. Where a subtype is specified, a decimal point separates the type from the subtype; for example, 30.1 signifies SMF record type 30, subtype 1. The valid numbers for SMF record types are 0 through 2047. The valid numbers for subtypes are 0 through 65535.
The type/subtype specifications can be expressed as individual record types/subtypes separated by commas or as a range separated by a colon, or both.
Example:
SELECT(30.1:30.5) results in the splitting out of SMF record type 30, subtypes 1 through 5.
EXCLUDE(99.20,99.100) causes the splitting out of all SMF records being dumped except for type 99, subtypes 20 and 100.
Some SMF records have subtypes of zero. To specify subtype zero, code a zero to the right of the decimal point. For example, SELECT(116) requests all type 116 records; SELECT(116.0) requests only type 116, subtype zero.
INDEXDSN(dsname)
Indicates the DSN of an index data set for split files that are generated by the SPLIT control statement. If it is not specified, no split file index records are generated. The file must be created and cataloged with the following DCB attributes:
DSORG=PS RECFM=FB or F LRECL=192 BLKSIZE=192 or a multiple of 192
In this example, RECFM=F, the BLKSIZE must be 192; otherwise the BLKSIZE must be a multiple of 192. The data set must also be created in advance. If the file is not found, the SPLIT statement is disabled.
INDEXDUP(ddname)
This optional operand should only be coded if INDEXDSN is coded. This operand makes a copy of the split file index and writes it to the ddname specified. We recommend that the index is copied to a duplicate file if the split file index is used for processing other than within this product. The reason is this product needs exclusive control of the real index to process it properly.
The attributes of the duplicate index file are the same as for the index file. See INDEXDSN.
If the dump process cannot get access to the duplicate file, the duplicate file is not produced. However, the dump process completes, and the original index is updated. If necessary, a duplicate of the split file index is created by copying the index with IEBGENER or a similar utility.
To ensure that the dump process or other applications are delayed due to a data set allocation, the duplicate index data set must be allocated with DISP=SHR. This product provides a serialization of the duplicate index. When this product dump process updates the duplicate index file, it issues an exclusive SYSTEMS level ENQ with the following characteristics:
  • QNAME: CAIMSMF
  • RNAME: DUPINDEX:data set name of the duplicate index, padded with spaces
  • RNAME Length: 53
Applications that read the duplicate index can issue a shared SYSTEMS ENQ for the QNAME and RNAME before attempting to read the duplicate index. The application can also DEQ the QNAME/RNAME immediately after processing the duplicate index.
All CA software that accesses CA SMF Director duplicate indexes honors this ENQ.
INDEXLIM(number)
This optional operand can only be coded if INDEXDSN is coded. This operand indicates the maximum size of the split file index that is indicated by INDEXDSN. If the number of records in the split file exceeds this limit, the oldest records in the index are dropped. These records are drooped until the index has as many records as the value indicates. This operand and the INDEXDAYS operand are mutually exclusive. If both INDEXDAYS and INDEXLIM are omitted, the index file has no limit on the number of records. The index records are not large; an index file of one 3390 cylinder holds 4,350 index records at half-track blocking.
INDEXDAYS(nnn)
This optional operand can only be coded if INDEXDSN is coded. This operand indicates the maximum number of complete days that entries are kept in the split file index that is indicated by INDEXDSN. If a date of an index record is less than the yesterday’s date minus the INDEXDAYS value, the record is dropped from the index.
Example:
If INDEXDAYS(1) is coded, then all index records with the creation date of today and yesterday are retained and all older records are discarded. This operand and the INDEXLIM operand are mutually exclusive. If both INDEXDAYS and INDEXLIM are omitted, the index file has no limit on the number of records. The index records are not large; an index file of one 3390 cylinder holds 4,350 index records at half-track blocking.
Even when entries are deleted from the Index, the associated data sets in the entries are not deleted.
WHEN(component,test,value,test,value...)
Lets you reduce the number of records that are based on identification characteristics that are contained within the component SMF data. Components that are supported are as follows:
CICS
Type 110 records which are keyed on the CICS APPL ID.
DB2
Type 100, 101, and 102 records which are keyed on the DB2 subsystem name.
DSN
Type 14, 15, 17, 18, 61, 62, 64, 65, and 66 records which are keyed on the DSN.
JOB
Type 6, 26, and 30 records which are keyed on the job name.
SECR
Type 80 records which are keyed on the response code.
SECU
Type 80 records which are keyed on the user ID.
TSO
Type 32 records which are keyed on the user ID.
The valid values for a
test
are as follows:
EQ
Equal
NE
Not Equal
GE
Greater than or equal
GT
Greater than
LE
Less than or equal
LT
Less than
The
value
parameter is a text field that represents an identifying characteristic in the SMF record. For CICS, it represents the Application ID (APPLID), an eight-byte field. For DB2, it represents the DB2 subsystem name, a four- byte field.
Up to 4
test/value
pairs can be listed in a WHEN statement. For a record to be selected it must pass all the tests within the WHEN statement. For mutually exclusive type tests, multiple WHEN statements for the same component can be used. A SPLIT statement can contain up to 5 WHEN statements.
An asterisk in the value parameter represents a wildcard match. If the asterisk is at the beginning or in the middle of the value string, it represents a single character. If the asterisk is at the end, it represents one or more characters.
Even if a component is mentioned in a WHEN statement, the SMF record types that are represented by the component must be indicated in a SELECT operand or left out of an EXCLUDE operand; otherwise the records are not written to the split file.
EXPAND110(YES|NO)
Indicates whether a compressed SMF type 110 records can be expanded before they are written to the split file.
EXPANDDB2(YES|NO)
Indicates whether a compressed SMF types 100 through 102 records can be expanded before they are written to the split file.
YES
This product expands any compressed types 100 through 102 records that are written to the output file.
NO
No is the default value. When this parameter, is specified expansion of types 100 through 102 records are not performed.
SIGNATURES(NO|YES)
Specifies whether signature records should be selected for processing in the output. The default value is NO. If signature records are required code SIGNATURES(YES). If only signature records are to be extracted, code SIGNATURES(NO) and SELECT(2) as operands on the EXTRACT or PRINT statement.
TIME(hhmm,hhmm,hhmm,hhmm)
Indicates a time of day when the split file defined by this SPLIT statement can be closed. This operand marks the file complete and another split file can be opened to contain further records. This operand lets you break up the created split files at dump time on logical boundaries that are not determined by the times. If the TIME operand is being used, the split files that are written to must be part of a generation data group (GDG).
Up to 24 times for a switch can be indicated.
Midnight (indicated by 0000) is not an automatic switch. If a switch of split files is to take place at midnight, 0000 must be coded as the first value in the TIME operand.
The values in the TIME operand must be coded in sequential order.
If the TIME operand is coded, the TIMEGDG operand must also be coded. Either the TIMESTORC or TIMEUNIT operand must also be coded. In addition, if the output split files are to be on a disk, the TIMESPACE operand must be coded.
The SPLIT files management has special consideration for records on specific intervals with TIME-based SPLIT files. A TIME-based SPLIT file can only be made ready for processing if it is in the Complete state. The file is only Complete if it is closed during the dump process before end-of-input is reached for the SMF data being archived. The last TIME-based SPLIT file is left in the Incomplete state, and is added to when the next dump process begins.
To ensure that interval-based SMF data is available as soon as possible for processing, the dump process must begin at least one minute after the values in the TIME operand plus the value of INTVAL in your active SMFPRMxx member.
Example:
The TIME operand is coded as TIME(0000,1200). The active SMFPRMxx member has INTVAL(15) set. Schedule the dump for 0016 and 1216 (or later) to ensure records to be archived are past the current TIME boundary that this product manages. By having records past the current TIME boundary, the TIME-based SPLIT file can be set to Complete and be ready for processing.
TIMEFILL(NO|YES)
If there are no records for an interval, this operand indicates whether this product creates empty split files in a TIME-based split file GDG.
The split file processing creates empty files and fills in the relative generations in the split file GDG for empty intervals. We recommend setting the TIMEFILL to YES for split files that are produced for applications that expect the production of input SMF files. These split files are produced at regular intervals even if there is no data in the file.
Files that are added to the split file GDG when YES is specified have a status of EMPTY (E) in the split file index. These files are complete and contain no records.
TIMECLOSE(NO|YES|FORCE)
Indicates whether a file in a TIME-based split file can be marked closed and made available for application processing. Normally split files are closed when a record for that file crosses a time boundary value listed in the TIME operand. Setting TIMECLOSE(YES) will check and see at dump process termination if the highest time stamp on an IBM system SMF record is past a time boundary value listed in the TIME operand. If the IBM system SMF record time stamp is past the boundary value, the current split file is marked as closed and a new split file is allocated in the GDG with no records in it.
If TIMECLOSE(FORCE) is specified, no time check is made and the current split file being written to at the end of the dump is marked complete, regardless of the times that are found in the records. A new generation is added to the split file GDG.
TIMEGDG(gdgname)
This operand is required if the TIME operand is coded; otherwise it is ignored. This operand must contain the name of a predefined generation data group (GDG). GDC does not require that any files in it when it is first created. Up to 26 characters can be used in the name, as the value of ".SIDssss" is appended to the GDG name, ensuring that data with different SMF IDs is not mixed in the same GDG.
TIMEMGMTC(SMSmanagementclass)
This operand is used to set an SMS management class if needed for the split file allocation. The value can be a predefined SMS management class.
TIMEDATAC(SMSdataclass)
This operand is used to set an SMS data class if needed for the split file allocation. The value can be a predefined SMS data class.
TIMESTORC(SMSstorageclass)
This operand is required if SMS is used for an allocation of new split files during the dump process. The value can be a predefined SMS storage class.
Both TIMESTORC and TIMEUNIT can be specified, but one is required.
TIMEUNIT(unit)
This operand is required if a non-SMS allocation is made for new split files during the dump process. The value can be a valid value for the UNIT= parameter of a JCL DD statement.
 Both TIMESTORC and TIMEUNIT can be specified, but only one is required.
TIMEVOL(volser)
This optional operand is used with the TIMEUNIT operand to indicate which specific volume can contain the new split file. If the storage class indicated by TIMESTORC, allows the selection of volumes this operand can be used with TIMESTORC.
TIMESPACE(type,pri,sec)
This operand is required if the new split files are allocated on DASD. This operand requires 2 or 3 values, the first of which must be either TRK (for track allocations) or CYL (for cylinder allocations). The second value is the primary quantity of tracks or cylinders. The optional third value is the secondary quantity. This parameter cannot be used if the split files are being written to tape. This parameter is for DASD files only.
TIMEEXPDT(yyyyddd|yyddd)
Sets a specific expiration date for a dynamically allocated split file that is written to tape.
yyyyddd
The full four-digit year followed by the day of the year
yyddd
Indicates the last two digits of the year followed by the day of the year. When the yyddd format is used, the year is set from 1960 through 2059.
See Control Statement Language Rules for a description of two special expiration dates: 099000 and 099366.
TIMEEXPDT and TIMERETPD are mutually exclusive.
TIMERETPD(days)
Can be used if split files are written on tape. This option sets the retention period for new, dynamically allocated split files.
TIMEEXPDT and TIMERETPD are mutually exclusive.
TIMEBLKSIZE(blksize)
This optional operand indicates the maximum block size for the allocated split files. The default value is four more than the value of TIMELRECL. If neither TIMELRECL nor TIMEBLKSIZE is coded but TIMERECFM(VBS) is coded, TIMELRECL is set to 32760 and TIMEBLKSIZE is set to 27998.
If neither TIMELRECL nor TIMEBLKSIZE is coded and TIMERECFM(VB) is coded or the TIMERECFM parameter is omitted, TIMELRECL is set to 32756 and TIMEBLKSIZE is set to 32760.
TIMELRECL(lrecl)
This option is the maximum logical record length for the SMF records that is written to the split file. This value is optional and can only be used if it is certain that all the records that qualify to be part of the split file are less than the IBM SMF maximum of 32756. The default value is 32756 unless TIMERECFM(VBS) is coded, in which case the default value for TIMELRECL is 32760.
TIMEVOLCOUNT(count)
This optional operand can be used to indicate the number of volumes a split file is use when it is created. The value must be an integer from 1 through 255.
TIMERECFM(VB|
VBS
)
Indicates which record format a split file has when it is defined with the TIME operand. The values are the same as in the RECFM operand on the JCL DD statement, although only the VB and VBS values are supported. The default value is VBS.
TIMEDSNLARGE(NO|YES)
Indicates whether a DASD split file that is defined with the TIME operand can be allocated with the DSNTYPE=LARGE attribute. If the split file is allocated to tape, this operand is ignored. The default value is NO.
TIMEKEYLABEL(encryption-key-label)
This optional operand allows an encryption key label to be used when allocating new SPLIT files dynamically based on the TIME operand. The key label that should be provided is the key label that would be provided on the DSKEYLBL keyword on a DD statement for allocation. 
TIMEEXTREQ(YES|
NO
)
This optional operand allows for the dynamic allocation of new SPLIT files using DSNTYPE=EXTREQ. This operand is mutually exclusive from the TIMEDSNLARGE operands, as both set the DSNTYPE keyword. The default value for this operand is NO, meaning DSNTYPE=EXTREQ will not be used.
Sample SPLIT Statements
Split off all the SMF Type 30 records to the file allocated to ddname SMF30X1 for dumps on all systems:
SOURCE DUMP(SMFDATA). DUMP. SPLIT ALL SELECT(30) TODD(SMF30X1).
Split off all SMF Type 30, Subtypes 1 through 5 only to ddname SMF30X2 and tracks the last 10 data sets written:
SOURCE DUMP(SMFDATA). DUMP. SPLIT ALL SELECT(30.1:30.5) TODD(SMF30X2)    INDEXDSN(CAI.SMFSPLIT.INDEX) INDEXLIM(10).
Split all production CICS SMF 110 records to the SMFCICS file, In this example, all production CICS APPLIDs begin with "PROD". Also dumps all the RMF data to the RMFDATA file, but only for the system SYSP:
SOURCE DUMP(SMFDATA). DUMP. SPLIT ALL SELECT(110) TODD(SMFCICS)   WHEN(CICS,EQ,PROD*). SPLIT SID(SYSP) SELECT(70:79) TODD(RMFDATA).
Split all production and test CICS SMF 110 records to the SMFCICS file. In this example, production CICS APPLIDs begin with P and test CICS APPLIDs begin with T:
SOURCE DUMP(SMFDATA). DUMP. SPLIT ALL SELECT(110) TODD(SMFCICS)   WHEN(CICS,EQ,P*)   WHEN(CICS,EQ,T*).
Split all user SMF records to the SMFUSER file and use exit HYD83SMF to further filter the data:
SOURCE DUMP(SMFDATA). DUMP. SPLIT ALL EXCLUDE(0:127) TODD(SMFUSER) EXIT(HYD83SMF).
Split all SMF Type 30 records out to a group of split files that are created every 6 hours and are part of a GDG. These can be allocated on a 3390 disk pack and can be 20 cylinders with a secondary allocation of 5 cylinders. The index file that manages the split file information is CAI.SMFSPLIT.INDEX. A copy of the Index can be written to the APPLIDX DD.
SOURCE DUMP(SMFDATA). DUMP SPLIT ALL SELECT(30) TODD(TYPE30S) TIME(0000,0600,1200,1800)   TIMEGDG(ACCT.SMF30.RAWFILE) TIMEUNIT(3390)   TIMESPACE(CYL,20,5) INDEXDSN(CAI.SMFSPLIT.INDEX)   INDEXDUP(APPLIDX).