Here is the complete ICETOOL job you created in this chapter:
//EXAMP JOB A492,PROGRAMMER
//TOOL EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=A
//DFSMSG DD SYSOUT=A
//TOOLIN DD *
* Statistics from all branches
STATS FROM(ALL) ON(18,4,ZD) ON(28,6,PD) ON(22,6,PD)
* Books from VALD and WETH
SORT FROM(BKS) TO(DAPUBS,PRPUBS) USING(SPUB)
* Separate output for California and Colorado branches
SORT FROM(ALL) USING(CACO)
* California branches profit analysis
RANGE FROM(CADASD) ON(28,6,PD) HIGHER(-1500) LOWER(+8000)
* Branches with less than 32 employees
RANGE FROM(ALL) ON(18,4,ZD) LOWER(32)
* Print profit, employees, and city for each Colorado branch
DISPLAY FROM(CODASD) LIST(OUT) ON(28,6,PD) ON(18,4,ZD) ON(1,15,CH)
* Print a report for the Colorado branches
DISPLAY FROM(CODASD) LIST(RPT) -
DATE TITLE('Colorado Branches Report') PAGE -
HEADER('City') HEADER('Profit') HEADER('Employees') -
ON(1,15,CH) ON(28,6,PD) ON(18,4,ZD) BLANK BETWEEN(5) -
TOTAL('Total') AVERAGE('Average')-
MINIMUM('Lowest') COUNT('Number of cities')
* Print a report of books for individual publishers
DISPLAY FROM(DAPUBS) LIST(SECTIONS) -
TITLE('BOOKS FOR INDIVIDUAL PUBLISHERS') PAGE -
HEADER('TITLE OF BOOK') ON(1,35,CH) -
HEADER('PRICE OF BOOK') ON(170,4,BI,C1,F'$') -
BTITLE('PUBLISHER:') BREAK(106,4,CH) -
BAVERAGE('AVERAGE FOR THIS PUBLISHER') -
BTOTAL('TOTAL FOR THIS PUBLISHER') -
AVERAGE('AVERAGE FOR ALL PUBLISHERS') -
TOTAL('TOTAL FOR ALL PUBLISHERS')
* Print the count of books in use from each publisher
OCCUR FROM(BKIN) LIST(PUBCT) BLANK -
TITLE('Books from Publishers') DATE(DMY.) -
HEADER('Publisher') HEADER('Books Used') -
ON(106,4,CH) ON(VALCNT,N05)
* Separate output containing records for publishers
* with more than 4 books in use
SELECT FROM(BKIN) TO(BKOUT) ON(106,4,CH) HIGHER(4)
* Reformat REGION.IN1 to T1 so it can be spliced
COPY FROM(REGNIN1) TO(T1) USING(CTL1)
* Reformat REGION.IN2 to T1 so it can be spliced
COPY FROM(REGNIN2) TO(T1) USING(CTL2)
* Splice records in T1 with matching ON fields
SPLICE FROM(T1) WITHALL -
ON(5,5,CH) - Region
WITH(1,4) - Office
WITH(25,4) - Employees
WITH(29,10) - Evaluation
TO(REGNOUT)
/*
//ALL DD DSN=A123456.SORT.BRANCH,DISP=SHR
//BKS DD DSN=A123456.SORT.SAMPIN,DISP=SHR
// DD DSN=A123456.SORT.SAMPADD,DISP=SHR
//DAPUBS DD DSN=&&DSRT,DISP=(,PASS),SPACE=(CYL,(2,2)),UNIT=SYSDA
//PRPUBS DD SYSOUT=A
//SPUBCNTL DD *
SORT FIELDS=(106,4,A,1,75,A),FORMAT=CH
INCLUDE COND=(106,4,EQ,C'VALD',OR,106,4,EQ,C'WETH'),
FORMAT=CH
/*
//CACOCNTL DD *
SORT FIELDS=(1,15,CH,A)
OUTFIL FNAMES=(CADASD,CATAPE),INCLUDE=(16,2,CH,EQ,C'CA')
OUTFIL FNAMES=(CODASD,COTAPE),INCLUDE=(16,2,CH,EQ,C'CO')
/*
//CADASD DD DSN=&&CA,DISP=(,PASS),SPACE=(CYL,(2,2)),UNIT=3390
//CATAPE DD DSN=CA.BRANCH,UNIT=3480,VOL=SER=111111,
// DISP=(NEW,KEEP),LABEL=(,SL)
//CODASD DD DSN=&&CO,DISP=(,PASS),SPACE=(CYL,(2,2)),UNIT=3390
//COTAPE DD DSN=CO.BRANCH,UNIT=3480,VOL=SER=222222,
// DISP=(NEW,KEEP),LABEL=(,SL)
//OUT DD SYSOUT=A
//RPT DD SYSOUT=A
//SECTIONS DD SYSOUT=A
//BKIN DD DSN=A123456.SORT.SAMPIN,DISP=SHR
//PUBCT DD SYSOUT=A
//BKOUT DD DSN=A123456.BOOKS1,DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(3,3)),UNIT=3390
//REGNIN1 DD DSN=A123456.REGION.IN1,DISP=SHR
//REGNIN2 DD DSN=A123456.REGION.IN2,DISP=SHR
//T1 DD DSN=&&&T1,UNIT=3390,SPACE=(CYL,(5,5)),DISP=(MOD,PASS)
//REGNOUT DD DSN=A123456.REGION.OUT,DISP=(NEW,CATLG,DELETE),UNIT=3390,
// SPACE=(CYL,(5,5))
//CTL1CNTL DD *
* Move REGION.IN1 fields to their locations for the
* output data set
OUTREC FIELDS=(5:1,5, Region
10:21,15, Regional Director
39:6,15) Headquarters
/*
//CTL2CNTL DD *
* Move REGION.IN2 fields to their locations for the
* output data set
OUTREC FIELDS=(1:1,4, Office
5:5,5, Region
25:10,4, Employees
29:14,10, Evaluation
53:X)
/*
Here is the complete TOOLMSG data set produced by running this job:
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
* Books from VALD and WETH
SORT FROM(BKS) TO(DAPUBS,PRPUBS) USING(SPUB)
ICE606I 0 DFSORT CALL 0002 FOR SORT FROM BKS TO OUTFIL USING SPUBCNTL COMPLETED
ICE602I 0 OPERATION RETURN CODE: 00
* Separate output for California and Colorado branches
SORT FROM(ALL) USING(CACO)
ICE606I 0 DFSORT CALL 0003 FOR SORT FROM ALL TO OUTFIL USING CACOCNTL COMPLETED
ICE602I 0 OPERATION RETURN CODE: 00
* California branches profit analysis
RANGE FROM(CADASD) ON(28,6,PD) HIGHER(-1500) LOWER(+8000)
ICE627I 0 DFSORT CALL 0004 FOR COPY FROM CADASD TO E35 EXIT COMPLETED
ICE628I 0 RECORD COUNT: 000000000000007
ICE631I 0 NUMBER OF VALUES IN RANGE FOR (28,6,PD) : 000000000000003
ICE602I 0 OPERATION RETURN CODE: 00
* Branches with less than 32 employees
RANGE FROM(ALL) ON(18,4,ZD) LOWER(32)
ICE627I 0 DFSORT CALL 0005 FOR COPY FROM ALL TO E35 EXIT COMPLETED
ICE628I 0 RECORD COUNT: 000000000000012
ICE631I 0 NUMBER OF VALUES IN RANGE FOR (18,4,ZD) : 000000000000008
ICE602I 0 OPERATION RETURN CODE: 00
* Print profit, employees, and city for each Colorado branch
DISPLAY FROM(CODASD) LIST(OUT) ON(28,6,PD) ON(18,4,ZD) ON(1,15,CH)
ICE643I 0 WIDTH OF REPORT IS 0121 BYTES
ICE627I 0 DFSORT CALL 0006 FOR COPY FROM CODASD TO E35 EXIT COMPLETED
ICE603I 0 INFORMATION PRINTED IN OUT DATA SET
ICE628I 0 RECORD COUNT: 000000000000005
ICE602I 0 OPERATION RETURN CODE: 00
* Print a report for the Colorado branches
DISPLAY FROM(CODASD) LIST(RPT) -
DATE TITLE('Colorado Branches Report') PAGE -
HEADER('City') HEADER('Profit') HEADER('Employees') -
ON(1,15,CH) ON(28,6,PD) ON(18,4,ZD) BLANK BETWEEN(5) -
TOTAL('Total') AVERAGE('Average')-
MINIMUM('Lowest') COUNT('Number of cities')
ICE643I 0 WIDTH OF REPORT IS 0121 BYTES
ICE627I 0 DFSORT CALL 0007 FOR COPY FROM CODASD TO E35 EXIT COMPLETED
ICE603I 0 INFORMATION PRINTED IN RPT DATA SET
ICE628I 0 RECORD COUNT: 000000000000005
ICE602I 0 OPERATION RETURN CODE: 00
* Print a report of books for individual publishers
DISPLAY FROM(DAPUBS) LIST(SECTIONS) -
TITLE('BOOKS FOR INDIVIDUAL PUBLISHERS') PAGE -
HEADER('TITLE OF BOOK') ON(1,35,CH) -
HEADER('PRICE OF BOOK') ON(170,4,BI,C1,F'$') -
BTITLE('PUBLISHER:') BREAK(106,4,CH) -
BAVERAGE('AVERAGE FOR THIS PUBLISHER') -
BTOTAL('TOTAL FOR THIS PUBLISHER') -
AVERAGE('AVERAGE FOR ALL PUBLISHERS') -
TOTAL('TOTAL FOR ALL PUBLISHERS')
ICE643I 0 WIDTH OF REPORT IS 0121 BYTES
ICE627I 0 DFSORT CALL 0008 FOR COPY FROM DAPUBS TO E35 EXIT COMPLETED
ICE603I 0 INFORMATION PRINTED IN SECTIONS DATA SET
ICE628I 0 RECORD COUNT: 000000000000019
ICE602I 0 OPERATION RETURN CODE: 00
* Print the count of books in use from each publisher
OCCUR FROM(BKIN) LIST(PUBCT) BLANK -
TITLE('Books from Publishers') DATE(DMY.) -
HEADER('Publisher') HEADER('Books Used') -
ON(106,4,CH) ON(VALCNT)
ICE643I 0 WIDTH OF REPORT IS 0121 BYTES
ICE627I 0 DFSORT CALL 0009 FOR SORT FROM BKIN TO E35 EXIT COMPLETED
ICE603I 0 INFORMATION PRINTED IN PUBCT DATA SET
ICE628I 0 RECORD COUNT: 000000000000020
ICE638I 0 NUMBER OF RECORDS RESULTING FROM CRITERIA: 000000000000004
ICE602I 0 OPERATION RETURN CODE: 00
* Separate output containing records for publishers
* with more than 4 books in use
SELECT FROM(BKIN) TO(BKOUT) ON(106,4,CH) HIGHER(4)
ICE627I 0 DFSORT CALL 0010 FOR SORT FROM BKIN TO BKOUT COMPLETED
ICE628I 0 RECORD COUNT: 000000000000020
ICE638I 0 NUMBER OF RECORDS RESULTING FROM CRITERIA: 000000000000012
ICE602I 0 OPERATION RETURN CODE: 00
* Reformat REGION.IN1 to T1 so it can be spliced
COPY FROM(REGNIN1) TO(T1) USING(CTL1)
ICE606I 0 DFSORT CALL 0011 FOR COPY FROM REGNIN1 TO T1 USING CTL1CNTL COMPLETED
ICE602I 0 OPERATION RETURN CODE: 00
ICE601I 0 DFSORT ICETOOL UTILITY RUN ENDED - RETURN CODE: 00
* Reformat REGION.IN2 to T1 so it can be spliced
COPY FROM(REGNIN2) TO(T1) USING(CTL2)
ICE606I 0 DFSORT CALL 0012 FOR COPY FROM REGNIN2 TO T1 USING CTL2CNTL COMPLETED
ICE602I 0 OPERATION RETURN CODE: 00
* Splice records in T1 with matching ON fields
SPLICE FROM(T1) WITHALL -
ON(5,5,CH) - Region
WITH(1,4) - Office
WITH(25,4) - Employees
WITH(29,10) - Evaluation
TO(REGNOUT)
ICE627I 0 DFSORT CALL 0013 FOR SORT FROM T1 TO REGNOUT COMPLETED
ICE628I 0 RECORD COUNT: 000000000000014
ICE638I 0 NUMBER OF RECORDS RESULTING FROM CRITERIA: 000000000000010
ICE602I 0 OPERATION RETURN CODE: 00
Summary |
---|
This chapter introduced the 17 ICETOOL operators, and showed some of the ways you can use them to perform various tasks. For complete information on DFSORT's ICETOOL, refer to z/OS DFSORT Application Programming Guide. |