This control statement, used only during the DUMP process, indicates if any records should be written to additional files, called split files, that can then 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 it will be in error.
Since the SPLIT command runs during a critical process, the dump process, there are no chances taken when creating split files. If any sort of error occurs when a split file is being written (abend or otherwise), the split file that was being dealt with at the time will be disabled and the dump process will continue without interruption. If it cannot be determined which split file was being dealt with, all of the split files will be deactivated and the dump process will continue without interruption.
If there are errors, diagnostic information will be produced in the dump process output which can be used to correct the problem in future dump process executions. In addition, if CA Service Desk is installed and CA SMF Director is set up to open Service Desk requests, an attempt will be 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) ─┬────────────────┬────────►
└─ ALL ─────────────────┘ └─ EXIT(module) ─┘
►─┬─────────────────┬────────────────────────────────────────────────────────►
├─ SELECT(list) ──┤
└─ EXCLUDE(list) ─┘
►─┬──────────────────────────────────────────────────────────────┬───────────►
└─ INDEXDSN(dsname) ─┬────────────────┬─┬────────────────────┬─┘
└─ INDEXLIM(nn) ─┘ └─ INDEXDUP(ddname) ─┘
►─┬────────────────────────────────────────────┬─────────────────────────────►
├─ 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 ──┘
►─┬─────────────────────────────┬────────────────────────────────────────────►
└─ TIMEFILL( ─┬─ NO ◄ ─┬─ ) ─┘
└─ YES ──┘
►─┬──────────────────────────────┬────────────────────────────────────────────►
└─ TIMECLOSE( ─┬─ NO ◄ ──┬─ ) ─┘
├─ YES ───┤
└─ FORCE ─┘
►─┬──────────────────────────────────────────────────┬─ . ───────────────────►◄
└─ TIME(hhmm,hhmm,hhmm,hhmm) ─┤ TIME Parameters ├ ─┘
Expansion of TIME Parameters
├── TIMEGDG(gdgname) ─────────────────────────────────────────────────────────►
►─┬─ TIMESTORC(SMSstorageclass) ─┬───────────────────────────┬───────────┬───►
│ ├─ TIMEVOL(volser) ─────────┤ │
│ ├─ TIMESPACE(type,pri,sec) ─┤ │
│ ├─ TIMEEXPDT(yyyyddd) ──────┤ │
│ └─ TIMERETPD(nnnn) ─────────┘ │
└─ TIMEUNIT(unit) ─┬───────────────────────────┬───────────────────────┘
├─ TIMEVOL(volser) ─────────┤
├─ TIMESPACE(type,pri,sec) ─┤
├─ TIMEEXPDT(yyyyddd) ──────┤
└─ TIMERETPD(nnnn) ─────────┘
►─┬───────────────────────────────────────────────┬──────────────────────────►
└─ TIMEBLKSIZE(blksize) ─┬────────────────────┬─┘
└─ TIMELRECL(lrecl) ─┘
►─┬─────────────────────┬────────────────────────────────────────────────────►
└─ TIMEVOLCOUNT(nnn) ─┘
►─┬─────────────────────────────┬────────────────────────────────────────────►
└─ TIMERECFM( ─┬─ VB ◄ ─┬─ ) ─┘
└─ VBS ──┘
►─┬────────────────────────────────┬──────────────────────────────────────────┤
└─ TIMEDSNLARGE( ─┬─ NO ◄ ─┬─ ) ─┘
└─ YES ──┘
Operands and Descriptions:
Identifies the configurations that the SPLIT statement applies to. Specifying ALL indicates that the SPLIT statement will be applied to all configurations being processed. The SID operand limits the SPLIT statement to the SMF IDs listed. Up to 20 values can be listed. Wildcarding with an asterisk is allowed, and you can mix wildcard and non-wildcard values. For example, to limit a 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**).
Indicates the ddname of the split file, the file that will receive 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.
Note: This value is also placed in the split file index and can be used as a logical identifier for split files that are related because they are used in the same definition.
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 since it will be used in dynamic allocation of the GDG members indicated in the TIMEGDG operand.
Specifies the load module entry point name for a split exit module. See the Systems Programmer Guide for specifications for writing a SPLIT exit. The module must be located in the STEPLIB or JOBLIB concatenation for the dump process, in the system linklist, or in LPA.
Either selects only certain record types for processing or excludes certain record types from processing.
Note: These operands are optional, but if neither is coded, all SMF records being dumped will be processed. Therefore, the split file will contain every record in the dump.
The list of records may include any valid SMF record types and subtypes from 0 through 255. They may be coded as individual record types separated by commas or as a range separated by a colon. Subtypes, if specified, must be coded in three decimal places, for example 30.004.
For example, SELECT(30.001:30.005) results in the splitting out of SMF record type 30, subtypes 1 through 5. EXCLUDE(99.02,99.1) causes the splitting out of all SMF being dumped except for type 99, subtypes 20 and 100.
Some SMF records have subtypes of zero. To specify subtype zero, a value of zero must be placed to the right of the decimal point. For example, SELECT(116.000) indicates SMF Records of type 116, Subtype 0, while SELECT(116) indicates all type 116 records.
Indicates the DSN of an index data set for split files generated by the SPLIT control statement. If it is not specified, no split file index records will be 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 the case of 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 will be disabled.
This optional operand should only be coded if INDEXDSN is coded. It makes a copy of the split file index and writes it to the ddname specified. We strongly recommend that the index be copied to a duplicate file if the split file index is to be used for processing other than within CA SMF Director because CA SMF Director needs exclusive control of the real index in order to process it properly.
The attributes of the duplicate index file are the same as for the index file (see INDEXDSN above).
Note: If the dump process cannot get access to the duplicate file, the duplicate file will not be produced. However, the dump process will complete, and the original index will be updated. If necessary, a duplicate of the split file index can be created by copying the index with IEBGENER or a similar utility.
To ensure that neither the dump process nor other applications are delayed due to data set allocation, the duplicate index data set must be allocated with DISP=SHR. Serialization of the duplicate index will be provided by CA SMF Director. When the CA SMF Director dump process updates the duplicate index file, it issues an exclusive SYSTEMS level ENQ with the following characteristics:
Applications that read the duplicate index should issue a shared SYSTEMS ENQ for the QNAME and RNAME listed above before attempting to read the duplicate index. The application should also DEQ the QNAME/RNAME immediately after processing the duplicate index. Note that all CA software that accesses CA SMF Director duplicate indexes will honor this ENQ.
This optional operand should only be coded if INDEXDSN is coded. It indicates the maximum size of the split file index indicated by INDEXDSN. If the number of records in the split file exceeds this limit, the oldest records in the index will be dropped until the index has as many records as the value indicates. If omitted, the index file will have no limit on the number of records. (Index records are not particularly large; an index file of one 3390 cylinder will hold 4,350 index records at half-track blocking.)
Lets you reduce the number of records based on identification characteristics contained within the component SMF data. Components that are supported are as follows:
Type 110 records, keyed on CICS APPL ID
Type 100, 101,and 102 records, keyed on DB2 subsystem name
Type 14, 15, 17, 18, 61, 62, 64, 65, and 66 records, keyed on the DSN
Type 6, 26, and 30 records, keyed on the job name
Type 80 records, keyed on the response code
Type 80 records, keyed on the user ID
Type 32 records, keyed on the user ID
Valid values for test are as follows:
Equal
Not Equal
Greater than or equal
Greater than
Less than or equal
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 of the tests within the WHEN statement. For mutually exclusive type tests, multiple WHEN statements for the same component can be used. A SPLIT statement may 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.
Note: Even if a component is mentioned in a WHEN statement, the SMF record types represented by the component must be indicated in a SELECT operand or left out of an EXCLUDE operand; otherwise the records will not be written to the split file. For example if a WHEN clause for CICS records is present in a SPLIT statement, the SELECT statement indicated should select type 110 records (or conversely an EXCLUDE statement should not indicate type 110).
Indicates whether or not compressed SMF type 110 records should be expanded before they are written to the split file. If the value of the operand is YES, CA SMF Director will expand any compressed type 110 records that are to be written to the output file. The default value is NO, meaning that no expansion of type 110 records will be performed.
Indicates a time of day when the split file defined by this SPLIT statement should be closed and marked complete and another split file should be opened to contain further records. This lets you break up the created split files at dump time on logical boundaries that are not determined by the times SMF is forced to dump the contents of a MAN file. 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 4 times for a switch may be indicated.
Note: There is no automatic switch at midnight (indicated by 0000). 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 disk, the TIMESPACE operand must be coded.
Note: Because of the way SPLIT files are managed, there are special considerations for records that are recorded on specific intervals when using TIME-based SPLIT files. A TIME-based SPLIT file can only be made ready for processing if it is in the Complete state. It 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. For example, if the TIME operand is coded as TIME(0000,1200) and your active SMFPRMxx member has INTVAL(15) set, dumps should be scheduled for 0016 and 1216 (or later) to ensure that there are records in the data to be archived that are past the current TIME boundary being managed by CA SMF Director. By having records past the current TIME boundary, the TIME-based SPLIT file can be set to Complete and be ready for processing.
Indicates whether CA SMF Director should create empty split files in a TIME-based split file GDG if there are no records for an interval. The default value is NO. If set to YES, split file processing will create empty files and fill in the relative generations in the split file GDG for empty intervals. Up to four consecutive empty intervals will be produced. Setting TIMEFILL to YES is recommended for split files that are being produced for applications that expect the production of input SMF files at regular intervals even if there is no data in the file.
Note: Files that are added to the split file GDG when YES is specified will have a status of EMPTY (E) in the split file index, meaning these files are complete and contain no records now or in the future.
Indicates whether a file in a TIME-based split file can be marked closed and made available for application processing.
If the value defaults to NO, the split file generation for an interval can only be marked as complete if there is another record in the current dump for the split file that is past the current interval.
If YES is specified, a check is made to determine if the time values of all the SMF records in the dump have gone past the end time of the interval defined in the SPLIT statement.
If FORCE is specified, no time check is made and the current split file being written to at the end of the dump will be marked complete, regardless of the times found in the records. A new generation will be added to the split file GDG.
Note: The following applies if TIMECLOSE is set to YES or FORCE:
This operand is required if the TIME operand is coded; otherwise it is ignored. It must contain the name of a predefined generation data group (GDG). There is no requirement that the GDG have any files in it when it is first created. Up to 26 characters may be used in the name, as the value of ".SIDssss" will be appended to the GDG name, ensuring that data with different SMF IDs will not be mixed in the same GDG.
This operand is required if SMS is to be used for allocation of new split files during the dump process. The value should be a predefined SMS storage class.
Note: Both TIMESTORC and TIMEUNIT can be specified, but only one is required.
This operand is required if a non-SMS allocation is to be made for new split files during the dump process. The value should be a valid value for the UNIT= parameter of a JCL DD statement.
Note: Both TIMESTORC and TIMEUNIT can be specified, but only one is required.
This optional operand is used in conjunction with the TIMEUNIT operand to indicate which specific volume should contain the new split file. It can also be used with TIMESTORC if the storage class indicated by TIMESTORC allows the selection of volumes.
This operand is required if the new split files are to be 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 the primary quantity of tracks or cylinders. The optional third value is the secondary quantity. This parameter should not be used if the split files are being written to tape. It is for disk files only.
Sets a specific expiration date for a dynamically allocated split file that is written to tape. The format can be specified as yyyyddd, which is the full four-digit year followed by the day of the year, or as yyddd, which indicates the last two digits of the year followed by the day of the year. If the yyddd format is used, the year is set to be between 1960 and 2059.
See Control Statement Language Rules for a description of two special expiration dates: 099000 and 099366.
Note: TIMEEXPDT and TIMERETPD are mutually exclusive.
Can be used if split files are to be written on tape. This will set the retention period for new, dynamically allocated split files.
Note: TIMEEXPDT and TIMERETPD are mutually exclusive.
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 and TIMEBLKSIZE are indicated, the value is set to 32760. If TIMELRECL is indicated, then TIMEBLKSIZE must also be present in the SPLIT statement.
This is the maximum logical record length for the SMF records that will be written to the split file. This value is optional and should only be used if it is certain that all of the records that qualify to be part of the split file will be less than the SMF maximum of 32756. The default value is 32756.
This optional operand can be used to indicate the number of volumes a split file will use when it is created. The value must be an integer between 1 and 255.
Indicates which record format a split file will have 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 VB.
Indicates whether a DASD split file that is defined with the TIME operand should be allocated with the DSNTYPE=LARGE attribute. If the split file is allocated to tape, this operand is ignored. The default value is NO.
Sample SPLIT Statements:
Split off all of 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 keep track of the last 10 data sets written:
SOURCE DUMP(SMFDATA). DUMP. SPLIT ALL SELECT(30.001:30.005) 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") and also dump all of the RMF data to the RMFDATA file, but only for 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, proudction CICS APPLIDs begin with P and the test CICS APPLIDs being 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 should be allocated on a 3390 disk pack and should be 20 cylinders big 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 should 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).
| Copyright © 2011 CA. All rights reserved. | Tell Technical Publications how we can improve this information |