OUTFIL Selecting and Sampling by RRN Example


Scenario -

Create three output files with the records like below -

  • 1,4,7,10 records to file1
  • 4,8 records to file2
  • 2,3,5,6,8,9 records 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
00006     student6           dept3          550
00008     student8           dept1          530
00007     student7           dept3          510
00009     student9           dept2          520
00010     student10          dept2          505

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,SAMPLE=3
     OUTFIL FNAMES=OUTPUT2,STARTREC=4,SAMPLE=4,ENDREC=10
     OUTFIL FNAMES=OUTPUT3,STARTREC=2,SAMPLE=(3,2)
/*

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
00007     student7           dept3          510
00010     student10          dept2          505

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

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
00004     student4           dept1          540
00008     student8           dept1          530

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

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
00002     student2           dept3          510
00003     student3           dept2          520
00005     student5           dept2          500
00006     student6           dept3          550
00008     student8           dept1          530
00009     student9           dept2          520

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,SAMPLE=3 - Copies 1st record and picked up every third record from the current record. The output1 file contains 1, 4,7,10 records.
  3. OUTFIL FNAMES=OUTPUT2,STARTREC=4,SAMPLE=4,ENDREC=10 - Copy starts from 4th record and picked up every fourth record from the current record. The output2 file contains 4,8 records.
  4. OUTFIL FNAMES=OUTPUT3,STARTREC=2,SAMPLE=(3,2) - Copy starts from 2nd record and ignores every third record after copying two records along with current record. The output3 file contains 2,3,5,6,8,9 records.