OUTFIL Saving Discards Example


Scenario - Create three output files with dept1 records to file1, records which are not belongs to dept3 to file2 and the remaining records which are not satisfied above two conditions to file3.

Input File - MATEPK.SORT.INPUT01 - FB file of 80 length

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
00001     student1           dept1          560
00003     student3           dept2          520
00004     student4           dept1          540
00005     student5           dept2          500
00002     student2           dept3          510

JCL -

----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
//MATEPKD  JOB (123),'MTH',NOTIFY=&SYSUID
//*
//STEP01   EXEC PGM=SORT
//SORTIN   DD DSN=MATEPK.SORT.INPUT01,DISP=SHR
//OUTPUT1  DD DSN=MATEPK.SORT.OUTPT01,
//             SPACE=(CYL,(1,1),RLSE),DCB=*.SORTIN,
//             DISP=(NEW,CATLG,DELETE)
//OUTPUT2  DD DSN=MATEPK.SORT.OUTPT02,
//             SPACE=(CYL,(1,1),RLSE),DCB=*.SORTIN,
//             DISP=(NEW,CATLG,DELETE)
//OUTPUT3  DD DSN=MATEPK.SORT.OUTPT03,
//             SPACE=(CYL,(1,1),RLSE),DCB=*.SORTIN,
//             DISP=(NEW,CATLG,DELETE)
//SYSOUT   DD SYSOUT=*
//SYSIN    DD *  
     SORT FIELDS=(1,5,ZD,A)
     OUTFIL FNAMES=OUTPUT1,INCLUDE=(30,5,CH,EQ,C'dept1')
     OUTFIL FNAMES=OUTPUT2,OMIT=(30,5,CH,EQ,C'dept3')
     OUTFIL FNAMES=OUTPUT3,SAVE
/*

Output File1 - MATEPK.SORT.OUTPT01 - FB file of 80 length

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
00001     student1           dept1          560
00004     student4           dept1          540

Output File2 - MATEPK.SORT.OUTPT02 - FB file of 80 length

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
00001     student1           dept1          560
00003     student3           dept2          520
00004     student4           dept1          540
00005     student5           dept2          500

Output File3 - MATEPK.SORT.OUTPT03 - FB file of 80 length

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
00002     student2           dept3          510

Explaining Example -

  1. SORT FIELDS=(1,5,ZD,A) - sort all outputs in ascending order based on the ZD value from 1 to 5 positions.
  2. OUTFIL FNAMES=OUTPUT1,INCLUDE=(30,5,CH,EQ,C'dept1') - All the records marching with "dept1" from the 30th position of length 5 will be copied to output1 file.
  3. OUTFIL FNAMES=OUTPUT2,OMIT=(30,5,CH,EQ,C'dept3') ) - All the records marching with "dept3" from the 30th position of length 5 will be ignored and remaining all records will be copied to output2 file.
  4. OUTFIL FNAMES=OUTPUT3,SAVE - All the records which are ignored from the above two filters will be copied to output3 file. i.e. All dept3 records will be copied to output3 file.