SORT also provides a number of other options that can improve the performance of the sort. Among those are the INREC, OUTREC and SUM statements.
Use the INREC statement to reduce the size of each record before passing it to the sort phase. If the programs that use the sorted file need only the first 100 bytes of a 1000 byte record next, then include the INREC statement INREC FIELDS=(1,100). Restore the records to their original length if the program that processes the file requires 1000-byte records using the OUTREC statement OUTREC FIELDS=(1,100,900X).
A test using the following sort showed a savings in CPU time and I/O with just 5100 records. The sort using INREC/OUTREC did not need external sort work storage. The sort without INREC/OUTREC required external sort work DASD. It was run in a partition too small to contain all the records. DATASPACE was not used.
SORT FIELDS=(44,6,CH,A),WORK=1
INREC FIELDS=(1,100)
OUTREC FIELDS=(1,100,900X)
RECORD TYPE=F,LENGTH=1000
INPFIL BLKSIZE=1000
OUTFIL BLKSIZE=1000
DURATION CPU SECS. SIO COUNT
INREC/OUTREC 00.00.01 000.05 1535
NO INREC/OUTREC 00.00.01 000.07 1781
The SUM statement also improves performance. It reduces the number of output records. If the record contains numeric data in the data fields, they can be totaled prior to passing the output to another program. The application program that follows runs faster, because it processes fewer records.
INREC, OUTREC, and SUM can be used in the same sort. Use the INREC statement to prevent overflow when totaling numeric fields. Insert pad fields in front of numeric fields to contain the overflow digits.
INREC FIELDS=(1,23,X'F0F0',24,57) SUM FIELDS=(24,10,ZD)
Even records that contain edited zoned decimal fields can be totaled with the aid of INREC and OUTREC to remove then reinsert decimal points or other characters.
SORT FIELDS=(44,6,CH,A),WORK=1
OPTION STORAGE=64K
INREC FIELDS=(1,31,33,10,44,2,46,35)
SUM FIELDS=(24,10,ZD,34,10,ZD)
OUTREC FIELDS=(1,31,X'4B',32,10,X'4B',42,37)
RECORD TYPE=F,LENGTH=80
INPFIL SYSIPT
OUTFIL SYSLST
END
AAAAAA CCCCCC 00078901.4500009017.12ZBBCCC
BBBBBBBBB DDDDDD 00077777.1300001015.12ZBBCCC
YYYY NNNNN 00007865.2200011897.32GCCEEE
KKKKK MMMMMM 00005865.3100023891.23BCCEEE
JJJJJ EEEEEE 00004865.4800023892.43BCCEEE
CCCCCCC XXXXXXXX 00003865.5300012893.23BCCEEE
FFFFFFFF MMMMMMM 00000005.6000000194.44GHHIII
DDDD AAAAAA 00001865.7300055895.56BCCEEE
MMMMM SSSSSSS 00007265.8300011896.65BCCEEE
NNNNNNNN TTTTTTT 00007365.9300012397.11FGGCCC
VVVVVV KKKKKKK 00007465.0300023498.67FGGCCC