Control Statement Reference

Following is documentation and examples for each control statement supported by DRLCACCT. Control statements are listed alphabetically.

ACCOUNT CODE CONVERSION

This statement specifies processing of the Account Code Conversion Module:


ACCOUNT CODE CONVERSION
  • The Account Code conversion module is called.
  • The Account Code conversion module provides the ability to change accounting codes via table entries.
  • You can define specified positions of the JOB NAME field and the ACCOUNT CODE field for table lookup using the DRLCACCT Account Code conversion routine.
  • JOB NAME starts in position 14 with a length of 8 in the Usage and Accounting Collector accounting record.
  • For the 79x accounting records, the ACCOUNT CODE field starts in position 22 with a length of 128.
  • For Define and Table lookup purposes, the Account Code conversion module places JOB NAME in position 1 and ACCOUNT CODE in position 9.

Example


1         9
JOB NAME  ACCOUNT CODE
SUPERJOB  AABBBCCCDDD

ACCOUNT CODE CONVERSION INPUT IS SORTED

This statement specifies that the input data set is in sort sequence with the first node of the Account Code table.

DRLCACCT executes significantly faster if both the input data set (DDNAME CIMSDATA/CIMSACIN) and the Account Code Table (DDNAME CIMSTABL) are in sort sequence.

Note: In PROCESS SMF RECORDS mode, (DDNAME CIMSDATA) is always sorted by JOB NAME. CIMSTABL must use JOB NAME as the first node. (DEFINE FIELD1,1,8,).

With DDNAME CIMSACIN, you can presort the data in any manner you choose.

ACCOUNT CODE = JOBNAME

When this control statement is present, the JOB NAME field is moved (copied) to the first eight positions of the ACCOUNT CODE field.

  • JOB NAME starts in position 14 with a length of 8 in the Usage and Accounting Collector accounting record.
  • For the 79x accounting records, the ACCOUNT CODE field starts in position 22 with a length of 128.
  • For the 79x accounting records, 119 positions of Account Code data are shifted right eight positions.
  • For the 79x accounting records, position 128 of the ACCOUNT CODE field is marked with HIGH values to indicate that ACCOUNT CODE = JOBNAME is in effect.

Example


ACCOUNT CODE = JOBNAME
  14 22  
BEFORE JOB NAME ACCOUNT CODE  
  SUPERJOB AABBBCCC  
       
  14 22 54
AFTER JOB NAME ACCOUNT CODE  
  SUPERJOB SUPERJOBAABBBCCC FF

Note: ACCOUNT CODE = JOBNAME truncates the last nine positions of Account Code.

ACCOUNT CODE = PROGRAMMER NAME

When this control statement is present, the PROGRAMMER NAME field is moved (copied) into the first 20 positions of the ACCOUNT CODE field.

  • For the 79x accounting records, the ACCOUNT CODE field starts in position 22 with a length of 128.
  • For the 79x accounting records, 107 positions of Account Code data are shifted right 20 positions.

ACCOUNT CODE = RACF

  • Moves the 24 characters that consist of RACF Group ID, RACF User ID, and RACF Terminal ID to the ACCOUNT CODE field.
  • The default is to use the information contained in the accounting section.

ACCOUNT CODE = SMF26NAC FOR NJE PRINT

This statement sets the Account Code in the record types 6 and 793 to the Accounting field from the SMF 26 record for any SMF type 6 record that is an NJE print and the associated type 30 record is not present.

ACCOUNT CODE = SECURITY ID

  • Moves the 24 characters starting at offset 100 of the Record Type 30 Identification Section to the ACCOUNT CODE field.
  • Moves the 24 characters that consist of Security Account ID, Security User ID, and Security Terminal ID to the ACCOUNT CODE field.
  • The default is to use the information contained in the accounting section.

ACCOUNTING DATA EXEC/JOB

EXEC/JOB (Default)

DRLCACCT obtains Account Code information from the // EXEC record if it is present; otherwise, DRLCACCT uses the // JOB Record.

JOB

DRLCACCT always obtains Account Code information from the // JOB Record.

EXEC

DRLCACCT always obtains Account Code information from the // EXEC Record.

ACCOUNT FIELD

Syntax:


ACCOUNT FIELDn,identifier_name,offset_into_identifier_value,length

Where:

n = 0-9 (up to 10 Account Field statements supported)


offset_into_identifier_value = 1-255
length = 1-255

Note: The overall length of all account fields added together cannot exceed 500 characters.

This statement defines how to build the Account Code from the identifiers within the CSR record. The Account Code is then used (along with DEFINE FIELD and DEFINE MOVEFLD statements) in Account Code conversion if Account Code conversion is turned on. If Account Code conversion is not turned on, then the Account Code field is built directly from this statement (see ACCOUNT CODE CONVERSION).

The ACCOUNT FIELD parameter must be present even if Account Code conversion is not to take place. This is true unless one of the identifiers is account_code, in which case the information is carried forward as the record's Account Code. If this parameter is not present, none of the possible accounting fields are carried forward as the Account Code.

It is possible for each CSR record to contain multiple fields that can be used as an Account Code or used as a key to identify an Account Code based on a conversion table lookup. It is necessary to tell DRLCACCT which of these fields to use. If these account fields are not defined to DRLCACCT, the records created by DRLCACCT do not contain any Account Code information, unless one of the identifiers is an account_code, which will be used as the Account Code. If you specify account fields and the account_code identifier is in the CSR record, the account fields supersede the account_code identifier.

If you are processing multiple CSR records at one time, you should use CIMSPDS support (see CIMSPDS support). When using CIMSPDS support, each record type can have its own Account Field parameters.

Example 1:


ACCOUNT FIELD0,UserName,1,10
ACCOUNT FIELD1,Division,1,2

In this example, the Account Code field is twelve bytes in length. The first ten bytes contain the UserName, identifier value, and bytes 11 and 12 contain the Division identifier value. Assume that the input CSR record is as follows:


ACMESODA,20070630,20070630,11:02:43,,,1,SODA@@01,1,4,UserName,BERT1,
   Machine,ACME1,Time,11:02:43,Division,12

Then the Account Code would be: BERT1*****12 (where * represents one space)

Example 2:


ACCOUNT FIELD0,UserName,1,10
ACCOUNT FIELD1,Division,1,2
DEFINE FIELD0,11,2
DEFINE MOVEFLD0,1,10
ACCOUNT CODE CONVERSION

If the Account Code Conversion table contained the entries:


10,,ACTG AR @0
11,,ACTG AP @0
12,,ACTG AQ @0

The record from example 1 would produce the Account Code:

ACTGR AQ BERT1***** (where * represents one space)

CHANGE ACC ? WILDCARD TO x

Where x = any displayable character.

When this control statement is present, the default wildcard character ? in the Account Code conversion table is processed as an explicit character and the specified displayable character is processed as a wildcard character.

Example


CHANGE ACC ? WILDCARD TO +

The + character, rather than the ? character, is processed as a wildcard in the Account Code conversion table.

CHANGE ACC * WILDCARD TO x

Where x = any displayable character.

When this control statement is present, the default wildcard character * in the Account Code conversion table is processed as an explicit character and the specified displayable character is processed as a wildcard character.

Example


CHANGE ACC * WILDCARD TO +

The + character, rather than the * character, is processed as a wildcard in the Account Code conversion table.

CIMS COMPLETE RECORD TYPE 30

This statement specifies that the Accounting Record for SMF Record Type 30 should consist of the following:

Usage and Accounting Collector Record Length 364
SMF Base Record Type 30 Length 1564
SMF SIO Fields (127 DDNAMES maximum) Length 36 each

The default is to write only the Usage and Accounting Collector Record. Obviously, the default requires significantly less space than the complete record.

Possible reasons for this control statement include:

  • Performance/Capacity planning reports
  • Usage and Accounting Collector Record does not contain information your site requires.

CIMS COMPLETE RECORD TYPE 793

This statement specifies that Record 793 for SMF Record Type 6 should consist of the following:

Record 793 Length 547
SMF Record Type 6 Length 836

The default is to write only the 793 record. Obviously, the default requires significantly less space than the complete record.

Possible reasons for this control statement include:

  • Performance/capacity planning reports
  • The 793 record does not contain information your site requires and the user-defined fields in the 793 record are not large enough to hold the additional information.

CONVERT TO CIMS SERVER

When this control statement is present, DRLCACCT will convert the 6, 30, and 991-999 accounting records to the appropriate 791, 792, 793, and 799 accounting records. Record type 6 is converted to a 793 record; Record type 30 is converted to a 792 record; Record type 999 is converted to a 799 record; and Record types 991-998 are converted to a 791 record.

Use this statement to convert a history file so that it can be processed by DRLCEXTR for further processing by program DRLCMONY and/or IBM Tivoli Usage and Accounting Manager.

When the CONVERT TO CIMS SERVER control statement is specified, Account Code conversion will not be performed.

Example


CONVERT TO CIMS SERVER

This statement causes the records to be converted and written to the DDNAME CIMSACT2 as 79x records.

DATE SELECTION x y

DRLCACCT selects records for processing based on a date range. This control statement specifies the dates to use to select report records. The first value is the FROM or LOW select value. The second value is the TO or HIGH select value. Each accounting record contains a date field. For a record to be selected it must be greater than or equal to the LOW date select value and less than or equal to the HIGH select value.

Format is YYYYMMDD.

The Date Selection Values are placed into the Summary Record.

For example, the following statement will ensure that records which contain the current month's date are selected:


DATE SELECTION **CURMON

Example


              *YYYYMMDD YYYYMMDD
DATE SELECTION 20070501 20070531

These values are not edited; they are in YYYYMMDD format.

A keyword date can be placed into FIELD 1.

Keywords automatically calculate specific dates.

The following keywords are supported:

Keyword Description
**CURDAY Sets date range based on run date and run date, less one day.
**CURWEK Sets date range based on run week (Sun-Sat).
**CURMON Sets date range based on run month.
**PREDAY Sets date range based on run date, less one day.
**PREWEK Sets date range based on previous week (Sun-Sat).
**PREMON Sets date range based on previous month.
**CURRENT Sets date range based on current period from the Calendar file.
**PREVIOUS Sets date range based on previous period from the Calendar file.

VERSION x

The VERSION control statement directs processing to use a non-default version of the Dictionary definitions. By default, a value of 01 is used. The VERSION control statement will override the default value and access to the Dictionary will use the alternate version number when building the record key.

x - Identifies the version number. Must be a value between 00 and 99.

Example


DATE SELECTION **PREMON

If this month is June, 2007 then **PREMON equals 20070501 20070531.


                  YYYYMMDD YYYYMMDD
       DEFAULT IS 19880101 20991231

DEFAULT ALWAYS/YES/EXCEPTION

This control statement controls how the Dictionary file is read. If the default Dictionary is implemented, then all subsystem input should use default definitions and you should specify DEFAULT ALWAYS. This sets all input to use the default definitions.

DEFAULT YES is the default value. It sets the processing to look for a matching dictionary entry using the Box ID field. If no match is found, then the default is used. This setting is helpful in situations where the dictionary contains some custom definitions. DEFAULT YES allows you to define only those subsystems that require customization. All other subsystems use the default definition.

DEFAULT EXCEPTION indicates that processing should always access the dictionary using the Box ID. However, if a match is not found, processing will stop. You can update the dictionary to correct a "no match" condition. Thereafter, you can reprocess the data with the proper dictionary definitions.

DEFINE FIELDx,y,z

This statement is used to define the input location and length of JOB NAME and ACCOUNT CODE values when the Account Code conversion module is used.

  • See Account Code Conversion
  • See ACCOUNT CODE CONVERSION control statement

Ten define statements are supported. The data fields specified by the define statements are placed into 8-character fields. These 8-character fields are then compared to the LOW and HIGH Account Code table values.

Each value is separated by a comma.

Field Description
DEFINE FIELDx,y,z Control Statement Identification
(x) A value from 1 to 10
(y) Field Location
(z) Field Length (1-99)
Note:The total length of all DEFINE FIELDS cannot exceed 128 bytes.

Example


1              9
JOB NAME       ACCOUNT CODE
S1234JOB       XXXCCCCAAABBBBBB

Define Field1,2,4,    = 1234
Define Field2,16,3,   = AAA
Define Field3,19,6,   = BBBBBB
Define Field4,12,4,   = CCCC
  • The defined fields are placed into four 8-character fields as follows:
    
    Field1  =  1234
    Field2  =  AAA
    Field3  =  BBBBBB
    Field4  =  CCCC
    
  • Fields are padded with spaces.
  • The contents of the four account fields are then compared with the LOW/HIGH fields defined in the Account Code table.

DEFINE MOVEFLDx,y,z

This statement is used to define the input location and length of JOB NAME and ACCOUNT CODE values that are to be moved when the Account Code conversion module is used.

  • See Account Code Conversion.
  • See ACCOUNT CODE CONVERSION control statement.
  • Ten DEFINE MOVEFLD statements are supported. The data fields specified by DEFINE MOVEFLD statements are moved into specified targets in the Account Code Conversion Table. See the example in ACCOUNT CODE CONVERSION.
  • Targets are specified with @1, @2, @3, @4, @5, @6, @7, @8, @9, and @10.
  • Each value is separated by a comma.
  • The program will evaluate an @10 specified in an Account Code table entry as a MOVEFLD10 if one has been defined. If a MOVEFLD10 has not been defined, then Usage and Accounting Collector will evaluate this as a MOVEFLD1 followed by a literal 0.
Value Description
DEFINE MOVEFLDX,Y,Z Control Record Identification
(x) A value from 1 to 10
(y) Field Location
(z) Field Length (1-99)
Note:The total length of all DEFINE MOVEFLDS cannot exceed 128 bytes.

Example


1              9
JOB NAME       ACCOUNT CODE
S1234JOB       XXXCCCCAAABBBBBB

DEFINE MOVEFLD1,2,4,          = 1234    = @1
DEFINE MOVEFLD2,16,3,         = AAA     = @2
DEFINE MOVEFLD3,19,6,         = BBBBBB  = @3
DEFINE MOVEFLD4,,,'
LITERAL',  = LITERAL = @

(LITERAL is a 1- to 40-character value enclosed in single quotes)

  • The defined fields are placed into four fields as follows:
    
    Move Field1  =  1234
    Move Field2  =  AAA
    Move Field3  =  BBBBBB
    Move Field4  =  LITERAL
    
  • The Move fields are moved to the TARGET defined by (@1 - @4) in the Account Code table.

DEFINE FIELD and DEFINE MOVEFLD (Examples)


1              9
JOB NAME       ACCOUNT CODE
S1234JOB       XXXCCCCAAABBBBBB

ACCOUNT CODE CONVERSION


DEFINE FIELD1,16,3,      = AAA
DEFINE FIELD2,12,4,      = CCCC


DEFINE MOVEFLD1,6,3,     = JOB = @1
DEFINE MOVEFLD2,,,'00',  = 00  = @2

Possible Account Code Table Entries

TABLE ENTRY: AAA:CCCC,AAA:CCCC,@2AABBCC@1
RESULT: 00AABBCCJOB
TABLE ENTRY: AAA:CCCC,AAA:ZZZZ,@2BBCCDD@1
RESULT: 00BBCCDDJOB
TABLE ENTRY: AAA:CCCC,AAA:CCCC,@2AABBCC
RESULT: 00AABBCC
TABLE ENTRY: AAA:COVERHEADCCC,ZZZ:CCCC,OVERHEAD
RESULT: OVERHEAD
TABLE ENTRY: AAA:CCCC,BBB:DDDD,@1XXYYZZ@2
RESULT: JOBXXYYZZ00

DEVICE x

The DEVICE control statement defines specific devices for SIO count accumulation by device type. Usage and Accounting Collector counts Total SIOs for DISK and TAPE devices automatically. If your installation has a mixture of tape and disk device types (e.g., 3380 and 3390 disks or 3420 and 3480 tapes) and you would like to collect SIO counts by device type, supply a device record with an appropriate device ID.

Device records specify that SIO counts are to be collected by device type and class. The value for Total Disk and Total Tape SIO is the sum of all disk and tape SIOs respectively. In addition, Usage and Accounting Collector provides SIO counts for each specific device as defined by device records. Notice in the following chart that each disk device starts with the value 20 and each tape device starts with the value 80. To specify device SIO counts for 3390, 3380, 3420, 3480, and 3490 devices, five device records are required, as follows:


DEVICE 200F   /* 3390 DISK SIOs
DEVICE 200E   /* 3380 DISK SIOs
DEVICE 8081   /* 3490 TAPE SIOs
DEVICE 8080   /* 3480 TAPE SIOs
DEVICE 8003   /* 3420 TAPE SIOs
DEVICE 0000   /* VIRTUAL   SIOs

Following is a partial list of Device IDs. See the appropriate IBM publication for additional Device IDs.

Device type/device class Device
200E 3380 DISK
200F 3390 DISK
8003 3420 TAPE
8080 3480 TAPE
8081 3490 TAPE
8083 3590 TAPE

Usage and Accounting Collector collects SIO counts for any six Device types via Device Records. The billing and chargeback system then supports separate billing rates for specific devices.

DROP DUPLICATE CIMS RECORDS

The data set created by program DRLCACCT is read via DDNAME CIMSACIN. A report showing the number of records dropped by record type is created, and another data set is created via DDNAME CIMSACT2. The new data set is void of duplicate records. This option should not be required if proper data management techniques are used. However, sometimes the same data is processed more than once, and the result is duplicate records.

  • When DROP DUPLICATE CIMS RECORDS is used, it must be the only control statement. All other control statements are invalid.
  • Program DRLCACCT sorts the input file using an internal sort. The first 400 characters of each record are placed in sort sequence. Any two or more records that are equal to each other in positions 1-400 are considered to be duplicate records.

EXCEPTION FILE PROCESSING ON

When this control statement is present, records that do not match a value in the Account Code Conversion table are written to DDNAME CIMSEXCP. The records written to this data set are formatted the same as records written to DDNAME CIMSACT2. You can reprocess records written to this data set using the Maintenance feature to correct Account Codes. If this option is not on, then records that do not match a value in the Account Code Conversion table are written to the DDNAME CIMSACT2 with their original Account Code values.

EXIT 1 or EXIT1

This statement specifies that the user has supplied an exit routine called CIMSACU1.

This option indicates that you want to interrogate each SMF record before the processing record by DRLCACCT. The Input option for DRLCACCT must be PROCESS SMF RECORDS. When EXIT 1 is present, DRLCACCT calls entry point CIMSACU1 using standard COBOL as follows:


CALL 'CIMSACU1' USING CIMS-IN, RETURN-FLAG

CIMS-IN is the data record and RETURN-FLAG indicates action on return from the subroutine. If a non-blank value is returned, the record is skipped. You must link the program with DRLCACCT before using the EXIT option. Record definitions are shown in Accounting file record descriptions for the Usage and Accounting Collector.

The distribution data set (DRL.SDRLCNTL) contains a member named DRLCUSER, which is a COBOL subroutine. DRLCUSER contains an entry for CIMSACU1. Edit DRLCUSER to meet your requirements. Compile the program, and link the resulting Object Module into DRLCACCT. See member DRLNCMPL for a sample compile and link the JCL in data set DRL.SDRLCNTL.

EXIT 2 or EXIT2

This statement specifies that you have supplied an exit routine called CIMSACU2.

This option indicates that you want to interrogate each output record before the record is written on the Job Accounting file. When EXIT 2 is present, DRLCACCT calls entry point CIMSACU2 using standard COBOL as follows:


CALL 'CIMSACU2' USING CIMS-OUT, RETURN-FLAG

CIMS-OUT is the Output Data File and RETURN-FLAG indicates action on return from the subroutine. If a non-blank value is returned, the record is skipped. You must link the program with DRLCACCT before using the EXIT option. Record definitions are shown in Accounting file record descriptions for the Usage and Accounting Collector.

The distribution data set (DRL.SDRLCNTL) contains a member named DRLCUSER, which is a COBOL subroutine. DRLCUSER contains an entry for CIMSACU2. Edit DRLCUSER to meet your requirements. Compile the program, and link the resulting Object Module into DRLCACCT. See member DRLNCMPL for compile and link JCL.

EXIT CIMSACU2

This statement calls User Exit CIMSACU2 before suspense file processing. This allows correction of Account Codes in the exit without waiting for the suspense days to expire. The standard is to call EXIT CIMSACU2 immediately preceding the WRITE statement.

Global Control Statements

Program DRLCACCT provides account file editing capabilities that allow you to change, delete, or purge accounting records based on the Account Code.

  • Applies to the following control statements:
    
    GLOBAL,CHANGE
    
    GLOBAL CHARACTER
    
    GLOBAL,DELETE
    
    GLOBAL JOBNAME
    
    GLOBAL LAST CHARACTER
    
    GLOBAL,PURGE
    
  • Up to 1000 global commands can be supplied per execution.
  • Global records can apply to the Account Code field or job name field.

GLOBAL,CHANGE,x,y

This statement changes all occurrences of the value x in the current record to the value y, which is the replacement value. x and y can each contain 32 characters. Use the defined GLOBAL character to mask characters in the value x.

Values are separated by commas.

Example


GLOBAL,CHANGE,@@AABB@@,12345678
Before After
DDAABBCC 12345678
12AABBXY 12345678
12345678 12345678

GLOBAL CHARACTER x

  • Default value for the global character is @.
  • Whenever the global character is found in the input character string, the corresponding field of the target is ignored.

Example


GLOBAL CHARACTER *

GLOBAL,DELETE A

  • Turns on a delete byte for all records containing the value A.
  • Value A can contain up to 32 characters.
  • Use the Define Global Character to mask characters in value A.

Example


GLOBAL,DELETE A

GLOBAL JOBNAME

When this control statement is present, the GLOBAL CHANGE feature uses the job name field (offset 14 of DRLCACCT Record) as value A.

  • JOB NAME (offset 14) does not change.
  • JOB NAME is used as a compare operand. When the compare is equal, the Account Code specified as value B replaces the 32-character Account Code field.
  • The Account Code field starts at position 22 of the DRLCACCT Record.
  • For additional Account Code flexibility use the Account Code Conversion feature. See Account code conversion for more information.

GLOBAL LAST CHARACTER A

This statement specifies end-of-search value. The default is spaces. When this character is found in the A field, the compare operation is completed.

GLOBAL,PURGE A

  • Permanently erases all records that contain the value A.
  • Value A can contain up to 32 characters.
  • Use the Define Global Character to mask characters in value A.

LIMIT DRL4034W MSG TO nnnn

Where nnnn = a numeric value from 0-1000.

This control statement limit the number of DRL4034W messages issued. This message occurs when a request to build a Define User Field or Box Identifier cannot be honored. The default is 100.

LINES PER PAGE n

This statement specifies the number of print lines per printed page for SMF printer record. The default for n is 50.

SMF RECORD TYPE 6 (the printer record) contains page counts. These page counts are valid for programs that issue TOP OF FORM commands (that is, SKIP to channel 1). Programs that do not issue TOP OF FORM commands have invalid page counts. Usage and Accounting Collector calculates a pseudo page count by dividing lines printed by the value specified and then adding 1.

The logic is as follows:


COMPUTE PAGE-HOLD = (SMF6-PRINT-LINES ÷ N) + 1.
IF SMF6-PAGE-COUNT < 5 AND
SMF6-PRINT-LINES > 400
COMPUTE SMF6-PAGE-COUNT = PAGE-HOLD.

For example, the following statement specifies 55 lines per page when the above conditions are true. Otherwise, the SMF record type 6 page count is used:


LINES PER PAGE 55

MAX INPUT nnnnnnnn

Where nnnnnnnn = a numeric value from 1 to 99999999.

This control statement specifies the maximum number of records for input. The default is to accept all input records. This feature is used for testing.

Example


MAX INPUT 1000

The maximum number of input records is limited to 1000.

MAX OUTPUT nnnnnnnn

Where nnnnnnnn = a numeric value from 1 to 99999999.

This control statement specifies the maximum number of records to output. The default is to write all records.

Example


MAX OUTPUT 1000

The maximum number of output records is limited to 1000.

MOVE PARSED ACCOUNTING DATA

This control statement places the parsed Account Code in the CIMRC792-SMF-Acctng-Info field instead of the raw SMF30-Account section. The raw SMF30 account section has each accounting field separated by a length byte. The CIMRC792-SMF-Acctng-Info field is formatted based on the PARSE ACCOUNT CODE FIELD control statement (see PARSE ACCOUNT CODE FIELD).

MOVE SECURITY GROUP ID x

This control statement places the Security Group ID (RACF, TOP SECRET, and so forth) into first, second, third, or fourth position of the eight-byte field of the Account Code. The Account Code starts at position 22 of the record. Data starts at positions 22, 30, 38 or 46 depending on the keyword used: ONE, TWO, THREE, or FOUR.

For example, the following statement places the SECURITY GROUP ID into Account Code position 38 through 45:


MOVE SECURITY GROUP ID TO ACCOUNT FIELD THREE

MOVE SECURITY USER ID x

This control statement places the Security User ID (RACF, TOP SECRET, and so forth) into first, second, third, or fourth position of the eight-byte field of the Account Code. The Account Code starts at position 22 of the record. Data starts at positions 22, 30, 38, or 46 depending on the keyword used: ONE, TWO, THREE or FOUR.

Example


MOVE SECURITY USER ID TO ACCOUNT FIELD TWO

The above statement places the SECURITY USER ID into Account Code position 30 through 37.

NON-PRIME DAY yyyyddd/yyyymmdd

The Julian or Gregorian Date specified by this control statement is considered a non-prime processing day.

If the NON-PRIME SHIFT CODE control statement is not present, all work processed on this day is assigned to the default shift code 4.

Twenty NON-PRIME DAY records are supported.

Examples


NON-PRIME DAY 2007001
NON-PRIME DAY 20070704
NON-PRIME DAY 2007359

Specifies New Years Day 2007, Independence Day 2007, and Christmas Day 2007 as non-prime days.

NON-PRIME SHIFT CODE = n

Where n = a numeric value 1-9.

This statement specifies the shift code for a non-prime shift. This control statement is used with the NON-PRIME DAY and/or WEEKENDS ARE NON-PRIME control statements to specify a shift code other than the default code 4. If this control statement is not present, the default shift code 4 is used for the NON-PRIME DAY and WEEKENDS ARE NON-PRIME control statements.

Examples


NON-PRIME SHIFT CODE = 8
WEEKENDS ARE NON-PRIME

NON-PRIME SHIFT CODE = 8
NON-PRIME DAY 2007001
NON-PRIME DAY 20070704
NON-PRIME DAY 2007359

NON-PRIME SHIFT CODE = 8
WEEKENDS ARE NON-PRIME
NON-PRIME DAY 2007001
NON-PRIME DAY 20070704
NON-PRIME DAY 2007359

NON-SELECTED FILE PROCESSING ON

When this control statement is present, records that fail the date selection criteria are written to DDNAME CIMSSEL. This is very convenient when performing EOM processing. For example, if the current history file consists of 8-10 tapes and you want to extract off the previous month and the current month without using this control statement you would have to run the 8-10 tapes through DRLCACCT twice. By adding this control statement, you can run DRLCACCT extracting the previous month's data to the DDNAME CIMSACT2 and the non-selected records to DDNAME CIMSSEL. The CIMSSEL should be a lot smaller than the original 8-10 tapes. You would then run DRLCACCT again using the CIMSSEL data as input to extract the current month's data.

NO-SORT

This statement specifies that the input file is already in sort sequence and that it is not to be sorted.

  • The standard processing option for program DRLCACCT is to sort the input data set whenever PROCESS SMF RECORDS or DROP DUPLICATE CIMS RECORDS is encountered.
  • To bypass the internal sorts, place the control statement NO-SORT in the input control data set defined by DDNAME CIMSCNTL.
  • If you bypass the internal sorts, the input data set must be in the correct sort sequence; otherwise, the results are unpredictable. Correct sort sequences are as follows:

When using PROCESS SMF

(Job Name, Job Start Date, Job Start Time, Sort Code)


SORT FIELDS = (29,8,CH,A,25,4,PD,A,21,4,BI,A,7,1,CH,A)

When using DROP DUPLICATE CIMS RECORDS


SORT FIELDS = (1,10,CH,A,14,386,CH,A,11,3,CH,A)

ON EMPTY OUTPUT FILE SET RC TO nnnn

Where nnnn = a numeric value from 0 to 9999.

When this control statement is present, DRLCACCT will end with a return code value of nnnn when no valid output records are written to DDNAME CIMSACT2. The default return code is 4 when no valid output records are written.

Example


ON EMPTY OUTPUT FILE SET RC TO 0

If no valid output records are written by DRLCACCT, the program will end with a return code of 0.

PARSE ACCOUNT CODE FIELD

Syntax:


PARSE ACCOUNT CODE FIELDn,offset_into_FIELDn,length,offset_into_account_code

Where:

n = 0-9 (FIELD0 is the first SMF accounting field, FIELD1 is the second accounting field, etc.)

offset_into_FIELDn = offset--the first position of the specified field to used in the Account Code (1 - 58)

length = The number of characters used from FIELDn (1 - 58)

offset_into_account_code = Output offset--the position in the created Account Code where the field is moved.

This statement specifies how incoming SMF accounting fields are parsed to form the Account Code.

If there are not enough characters in the accounting field to satisfy the length value, the resulting value is padded on the right with blanks.

Example

Assume that the SMF accounting field from the JOB card is:


(LAVC,37,,2735)

The following control statements are specified:


PARSE ACCOUNT CODE FIELD0 1,6,1
PARSE ACCOUNT CODE FIELD1 1,4,7
PARSE ACCOUNT CODE FIELD2 1,4,11
PARSE ACCOUNT CODE FIELD3 3,2,15

The generated Account Code is:

LAVC**37******35 (where ** represents one space)

PARSE ACCOUNT CODES

Note: IBM has added two new control statements, PARSE ACCOUNT CODE FIELD (see PARSE ACCOUNT CODE FIELD) and SMF USER DATA IS SECURITY ID (see SMF USER DATA IS SECURITY ID) to replace some PARSE ACCOUNT CODE statements that might have been customized for your organization. If your customized PARSE ACCOUNT CODE statement is affected, a message containing the equivalent control statement(s) is printed in the CIMSMSG data set.

IBM recommends that you use the new statement(s) as appropriate.

  • Accounting codes are parsed into four 8-character fields when this control statement is specified. If a field contains more than 8 characters, the excess is lost.
  • The standard default is to place each Account Code field contiguous with the previous field.
  • Usage and Accounting Collector starts Account Codes at location 22 of each data record.

Example

The following job card was used:


//DRLNJOB1 JOB (CIMS,JOB1,P,D),'CIMS DAILY PROCESS',
//              CLASS=A,NOTIFY=OPRS,MSGCLASS=X,TIME=5

With control statement PARSE ACCOUNT CODES:

  • the value CIMS starts at position 22
  • the value JOB1 starts at position 30
  • the value P starts at position 38
  • the value D starts at position 46

                                22      30      38    46
PARSE ACCOUNT CODES ...         CIMS    JOB1    P     D

Without control statement PARSE ACCOUNT CODES:

  • Value CIMS starts at position 22.
  • Value JOB1 starts at position 26.
  • Value P starts at position 30.
  • Value D starts at position 31.

                                22      26      30    31
CIMS STANDARD.............      CIMS    JOB1    P     D

PRINT ACCOUNT NO-MATCH

This statement prints unmatched Account Codes on DDNAME CIMSPRNT when the Account Code Conversion feature is in effect. Output is limited to 1000 print lines.

PRINT EXTERN

This statement prints External Transaction Records on DDNAME CIMSPRNT.

PRINT REJECTS

This statement specifies the printing of rejected SMF records.

  • Usage and Accounting Collector evaluates each SMF record for validity and usability.
  • Records are checked for CPU times that are greater than elapsed times and for records with CPU times equal to zero.
  • Invalid records are written to the accounting file with the delete byte set to a value other than spaces. Note: Reject records can be processed by the DRLCEXTR program.
  • DRLCEXTR ignores all records with the delete byte set to something other than spaces.
DELETE CHARACTER = X
Record has no SRB or TCB Time, and no EXCPs.
DELETE CHARACTER = Y
Record CPU time (TCB + SRB) is greater than elapsed time.

The DELETE character is at offset 9 (FIELD ID A4) of each record.

Example


PRINT REJECTS

Prints information on rejected records to DDNAME CIMSPRNT.

To process reject records, use the DRLCEXTR control statement PROCESS REJECTS.

PROCESS CIMS MAINTENANCE

This statement specifies that DRLCACCT is to process data created by itself.

  • Primary input is read from DDNAME CIMSACIN.
  • This option is used for editing and account file maintenance. Records can be selected on DATE, RECORD TYPE, or both for processing.

PROCESS CSR RECORDS

This control statement specifies that the input data set contains CSR records. The CSR record is a general purpose resource record that contains a series of identifier names and values and a series of rate codes and resources (Accounting file record descriptions for the Usage and Accounting Collector). CSR records are created by Usage and Accounting Collector Data Collectors.

When the option is in effect, DRLCACCT creates 791, 792, and 793 records that DRLCEXTR can process for use by program DRLCMONY and/or IBM Usage and Accounting Manager.

PROCESS EXTERNAL TRANSACTIONS

This statement specifies that DRLCACCT is to process external billing transactions.

Primary input is read from DDNAME CIMSEXTN.

Transaction records are delimited by a comma and defined as follows:

TRANS For identification purposes.
RATE CODE 1- to 8-character Rate Code. This code is matched with the RATE CODE on Rate records.
LOW-DATE Low/From date in YYYYMMDD format.
HIGH-DATE High/To date in YYYYMMDD format.
VALUE 1- to 17-character Resource Value. This value is extended against the Billing Rate. Maximum Resource Value is 999999999.999999. You can place a minus sign in the first or last position to indicate a negative value.
ACCT CODE 1- to 128-character Account Code.
AUDIT CODE 1- to 8-character Audit Code.

For more information about TRANS records, see External Billable Resources.

Transaction records with zero resource values are not written to the Accounting Data set.

PROCESS SMF RECORDS

This statement specifies that DRLCACCT is to process SMF Data Records. The primary input is read from DDNAME CIMSDATA. This is the default.

PUNCH CLASS A

  • This record defines PUNCH output classes. Up to 5 Punch Class Records are supported. All other output is considered printed output.
    
    //DDI DD SYSOUT=B
    

    CLASS B is PUNCH.

  • Usage and Accounting Collector uses the character ? as the default class for PUNCH output as most installations do not use ? as a valid print/punch class.

RECORDS x

  • This is an include condition to specify record types for processing.
  • The default is to include record types 6, 26, 30-1, 30-2, 30-3, 30-4, 30-5, 30-6, 101, 110.
  • DRLCACCT supports the following record types:
Record Type 6 Output Writer Record  
Record Type 26 Job Purge Record  
Record Type 30 All Record 30 Sub-types
Record Type 30-1 Job Start Record Sub-type 1
Record Type 30-2 Step Interval Sub-type 2
Record Type 30-3 Step Termination Sub-type 3
Record Type 30-4 Step Total Sub-type 4
Record Type 30-5 Job Termination Sub-type 5
Record Type 30-6 System Address Space Sub-type 6
Record Type 101 Db2 Accounting Record  
Record Type 110 CICS Accounting Record  

Example


RECORDS 6,30
  • Record Types 6, 30-1, 30-2, 30-3, 30-4, 30-5, 30-6 are processed. All others are ignored.
  • Program DRLCACCT does not support records 4, 5, 20, 34, 35, and 40.

SHIFT [SHIFT DAY] [SHIFT CODE] [SHIFT END TIME] [SHIFT CODE] [SHIFT END TIME]..

Shift records define work shifts. Up to nine shifts per day can be specified on a shift record. Nine entries make up a shift record:

  • Day of Week
  • Shift Code
  • Shift End Time
  • Shift Code
  • Shift End Time
  • Shift Code
  • Shift End Time...

Seven shift records are supported, one for each day of the week. Shift times are input in hours and minutes using the 24-hour clock. Hours and minutes are put together.

Example

8:30 am is input ==> 0830

1:00 pm is input ==> 1300

8:30 pm is input ==> 2030

The following rules apply to shift records.

Rule 1 The day is defined by the first three letters of the day of the week.
Rule 2 Each succeeding shift end time must be greater than the previous end time.
Rule 3 The shift code must be supplied for each end time.

SHIFT CODE Examples

No shift spans midnight.

Monday through Friday -

Shift 1 5:00 am to 8:00 am and 3:30 pm to 5:00 pm
Shift 2 8:00 am to 11:30 am and 1:30 pm to 3:30 pm
Shift 3 5:00 pm to 8:00 pm
Shift 4 9:30 pm to 24:00 pm and 00:00 am to 5:00 am
Shift 5 11:30 am to 1:30 pm and 8:00 pm to 9:30 pm

Saturday through Sunday -

Shift 1 8:00 am to 5:00 pm
Shift 2 5:00 pm to 24:00 pm and 00:00 am to 8:00 am

SHIFT SUN 2 0800 1 1700 2 2400
SHIFT MON 4 0500 1 0800 2 1130 5 1330 2 1530 1 1700 3 2000 5 2130 4 2400
SHIFT TUE 4 0500 1 0800 2 1130 5 1330 2 1530 1 1700 3 2000 5 2130 4 2400
SHIFT WED 4 0500 1 0800 2 1130 5 1330 2 1530 1 1700 3 2000 5 2130 4 2400
SHIFT THU 4 0500 1 0800 2 1130 5 1330 2 1530 1 1700 3 2000 5 2130 4 2400
SHIFT FRI 4 0500 1 0800 2 1130 5 1330 2 1530 1 1700 3 2000 5 2130 4 2400
SHIFT SAT 2 0800 1 1700 2 2400

DEFAULT SHIFTS

If SHIFT statements are not present, Usage and Accounting Collector uses the following shift assignments:

Sunday through Saturday

Shift 1 08:00 am to 04:30 pm
Shift 2 04:30 pm to 24:00 pm
Shift 3 00:00 am to 08:00 am

If these defaults were entered using SHIFT statements, the shift records would appear as:


SHIFT SUN 3 0800 1 1630 2 2400
SHIFT MON 3 0800 1 1630 2 2400
SHIFT TUE 3 0800 1 1630 2 2400
SHIFT WED 3 0800 1 1630 2 2400
SHIFT THU 3 0800 1 1630 2 2400
SHIFT FRI 3 0800 1 1630 2 2400
SHIFT SAT 3 0800 1 1630 2 2400

SMF USER DATA IS SECURITY ID

Specifies that the SMF user data field in Usage and Accounting Collector accounting records is set from the RACF ID.

SMF6 ESS FIXED FORMAT

Parses the text units field of the Enhanced Sysout Section of the SMF Type 6 record and formats the field into a fixed format in the Record Type 6. The default processing is to leave the text units field as it appears in the SMF Type 6 record.

SMF6 ESS SUPPORT ON

This control statement parses the Enhanced Sysout Section of the SMF Type 6 record and places the following fields in the Account Code character string.

Identification Code Position in String
Name 101-160
Department 161-220
Building 221-280
Room 281-340
GroupId 341-348
PageDef 349-354
FormDef 355-360
Forms 361-367

SMF30TFL {ON | OFF} DELETE CODE n RC n

The SMF 30 record contains the field SMF30TFL that indicates when CPU timer fields are invalid. (The SMF30TFL field and the CPU timer fields are in the Processor Accounting Section). This control statement specifies whether DRLCACCT uses the data in the SMF30TFL field when processing the SMF 30 record.

If the control statement SMF30TFL OFF is present, the SMF30TFL field is not interrogated. This means that if the CPU time in the record (which is calculated using various CPU timer fields) is greater than the elapsed time in the record, DRLCACCT sets the delete code to Y in the DRLCACCT output record. The delete code causes the record to be bypassed by other Usage and Accounting Collector programs and most report writers.

The default control statement is SMF30TFL ON, which specifies that the value in the SMF30TFL field is processed as follows:

  • The SMF30TFL field is interrogated to determine whether any CPU timers contain invalid values.
  • Any invalid CPU timer is saved to a table for reporting and the value reset to zero.
  • The original CPU timer is retained in the SMF record so that the value appears when using the complete SMF record option.
  • The DRLCACCT output record is not flagged invalid even if an invalid CPU timer is found (i.e., the delete code remains blank). You can change the delete code to a one-character, alphanumeric value using the DELETE CODE n option (see the following example). A non-blank delete code causes the record to be bypassed by other Usage and Accounting Collector programs and most report writers.
  • If an invalid CPU timer field is encountered, the return code is set to 8 by default. You can change the return code using the RC n option in the control statement (see the following example). The return code can be 0-4095.
  • A message is issued for every invalid CPU timer that is encountered. By default, a maximum of 250 messages are issued. You can override the maximum number of messages using the MESSAGES n option in the control statement (see the following example). The number of messages can be 0-99999999.

Example


SMF30TFL ON DELETE CODE D RC 6 MESSAGES 500

In this example, processing of the SMF30TFL field is turned on, the delete code is set to D, the return code is set to 6, and the maximum number of messages issued for invalid CPU timers is 500.

SUSPENSE DAYS n

  • Usage and Accounting Collector maintains a suspense file for records without accounting data.
  • The default is to maintain the suspense file for 7 days.
  • You can change the default to support your requirements. For example, to change the default to 14 days, supply the following control statement:
    
    SUSPENSE DAYS 14
    

Note: Use SUSPENSE DAYS 0 to eliminate the SUSPENSE file.

Records without accounting data are step records for jobs that have not completed. This occurs when the SMF file is unloaded during the execution of a job. In most shops, this is a common occurrence as SMF data is unloaded when the data set becomes full.

TURN OFF ACC WILDCARDS

When this control statement is present, the default wildcard characters ? and * in the Account Code conversion table are processed as explicit characters. No wildcard matching occurs.

Example


TURN OFF ACC WILDCARDS

The characters ? and * in the Account Code conversion table are processed as explicit values, not as wildcards.

UPPERCASE ACCOUNT FIELDS

When this control statement is present, DRLCACCT changes lowercase identifier values in the account fields to uppercase values in the Account Code input string that is built by the ACCOUNT FIELD statement or from the special identifier Account_Code. By using this statement, DRLCACCT Account Code processing becomes case-insensitive and makes defining account conversion tables much easier. This conversion is very helpful when processing CSR records from distributed systems where lowercase identifier values are common.

VERSION x

The VERSION control statement directs processing to use a non-default version of the Dictionary definitions. By default, a value of 01 is used. The VERSION control statement will override the default value and access to the Dictionary will use the alternate version number when building the record key.

x - Identifies the version number. Must be a value between 00 and 99.

WEEKEND START TIME = [TIME]

This statement specifies the Friday start time for weekend processing.


DEFAULT = 18.00          6:00PM

All processing that occurs after the Friday time specified by this control statement is assigned to SHIFT CODE 4.

Example


WEEKEND START TIME = 17.00

All work after 5:00 PM on Friday is assigned to SHIFT CODE 4.

WEEKEND STOP TIME = [TIME]

This statement specifies the Monday stop time for weekend processing.


DEFAULT IS 6.00            6:00AM

All processing that occurs before the Monday time specified by this control statement is assigned to SHIFT CODE 4.

Example


WEEKEND STOP TIME = 4.00

All processing that occurs before 4:00 AM on Monday is assigned to SHIFT CODE 4.

WEEKENDS ARE NON-PRIME

Specifies that weekends (Saturday and Sunday) are considered NON-PRIME processing days.

If the NON-PRIME SHIFT CODE control statement is not present, all work processed on Saturday and Sunday is assigned to the default shift code 4.

Examples


WEEKENDS ARE NON-PRIME

NON-PRIME SHIFT CODE = 8
WEEKENDS ARE NON-PRIME

WRITE nnn {nnn/nnn/nnn}

Where:

nnn = 791, 792, or 793.

This statement controls where the 79x accounting records are written. By default, the 79x records are written to the DDNAME CIMSACT2.

  • The statement WRITE 791, WRITE 792, or WRITE 793 causes the 79x records to be written to separate data sets. The 791 records are written to the DDNAME CIMSACT1, 792 records are written to the DDNAME CIMSACT2, and 793 records are written to the DDNAME CIMSACT3.
  • The statement WRITE 791/792/793 causes all of the 791, 792, and 793 records to be written to DDNAME CIMSACT2.
  • A combination can be used, for example, WRITE 791 and WRITE 792/793. This would cause the 791 records to be written to DDNAME CIMSACT1 and the 792 and 793 records to be written to DDNAME CIMSACT2.
  • Record type 791 is only processed during PROCESS CIMS MAINTENANCE.
  • Record types 792 and 793 are created/processed during PROCESS SMF RECORDS and PROCESS CIMS MAINTENANCE.

WRITE JOB TOTAL RECORD

This statement specifies the writing of SMF record type 30 sub-type 5 to the Usage and Accounting Collector accounting file. The standard is to write SMF record type 30 sub-types 2, 3, and 4 to the accounting file. The sub-type 5 record is not written to the accounting file unless this control statement is present.

  • Usage and Accounting Collector is a step accounting system.
  • The resources used by each step of a job are recorded in SMF 30 sub-type 2, 3, and 4 records.
  • SMF record type 30, sub-type 5 is the JOB total record.
  • The SMF 30 sub-type 5 record is the total of all sub-type 4 records for a JOB, and/or the total of all sub-type 2 and sub-type 3 records for a job.
  • When you write reports or download data, it is easier to work with sub-type 5 records than a combination of sub-types 2, 3, and 4.