When working with data sets containing numeric fields, you may want statistical information about one or more of those fields. You can use the STATS operator to find the minimum, maximum, average, and total values of up to 10 specific numeric fields.
A STATS operator that prints statistics for the employees, profit, and revenue fields of the branch office data set looks like this:
Here are the steps for writing this STATS operator.
Step | Action |
---|---|
1 | Type STATS after the comment statement (you can leave one or more blanks before STATS if you like). |
2 | Leave at least one blank and type FROM(ALL) FROM specifies the ddname (that is, the name of the DD statement) for the input data set from which you want to print statistics. In this case ALL is the ddname chosen, but you can use any valid 1-8 character ddname you like. |
3 | Leave at least one blank and type ON ON defines a field for which you want to print statistics. |
4 | Type in parentheses, and separated
by commas:
|
5 | Leave at least one blank and type ON ON defines another field for which you want to print statistics. You can print statistics for up to 10 fields with one STATS statement. Specify the ON fields in the same order in which you want their statistics to be printed. |
6 | Type in parentheses, and separated by commas the location (28), length (6), and format (PD for packed decimal) of the profit field. |
7 | Leave at least one blank and type ON.
Type in parentheses and separated by commas, the location (22),
length (6), and format (PD) of the revenue field. Make sure that the statement is coded between columns 1 and 72. |
You must also write a DD statement for the A123456.SORT.BRANCH data set using the ddname ALL and place it at the end of the job:
//ALL DD DSN=A123456.SORT.BRANCH,DISP=SHR
When complete the TOOLIN statements and ALL statement look like this:
//TOOLIN DD *
* Statistics from all branches
STATS FROM(ALL) ON(18,4,ZD) ON(28,6,PD) ON(22,6,PD)
/*
//ALL DD DSN=A123456.SORT.BRANCH,DISP=SHR
When this STATS operation is run, the results are placed in the TOOLMSG data set. If you ran the ICETOOL job you created so far, the TOOLMSG output would look like this:
ICE600I 0 DFSORT ICETOOL UTILITY RUN STARTED
ICE650I 0 VISIT http://www.ibm.com/storage/dfsort FOR ICETOOL PAPERS, EXAMPLES AND MORE
ICE632I 0 SOURCE FOR ICETOOL STATEMENTS: TOOLIN
ICE630I 0 MODE IN EFFECT: STOP
* Statistics from all branches
STATS FROM(ALL) ON(18,4,ZD) ON(28,6,PD) ON(22,6,PD)
ICE627I 0 DFSORT CALL 0001 FOR COPY FROM ALL TO E35 EXIT COMPLETED
ICE628I 0 RECORD COUNT: 000000000000012
ICE607I 0 STATISTICS FOR (18,4,ZD) :
ICE608I 0 MINIMUM: +000000000000015, MAXIMUM: +000000000000035
ICE609I 0 AVERAGE: +000000000000024, TOTAL : +000000000000298
ICE607I 0 STATISTICS FOR (28,6,PD) :
ICE608I 0 MINIMUM: -000000000004278, MAXIMUM: +000000000008276
ICE609I 0 AVERAGE: +000000000004222, TOTAL : +000000000050665
ICE607I 0 STATISTICS FOR (22,6,PD) :
ICE608I 0 MINIMUM: +000000000012300, MAXIMUM: +000000000042820
ICE609I 0 AVERAGE: +000000000027469, TOTAL : +000000000329637
ICE602I 0 OPERATION RETURN CODE: 00
ICE601I 0 DFSORT ICETOOL UTILITY RUN ENDED - RETURN CODE: 00