DFSORT Joining records Example
Scenario - Join the below two files based on the student number.
Input File1 - MATEPK.SORT.INPUT01 - FB file of 80 length
----+----1----+----2---+---3---+---4----+---5---+----6---+---7---+---8 00001 student1 dept1 00003 student3 dept2 00004 student4 dept1 00005 student5 dept2 00002 student2 dept3 00006 student6 dept3 00008 student8 dept1 00007 student7 dept3 00009 student9 dept2 00010 student10 dept2
Input File2 - MATEPK.SORT.INPUT02 - FB file of 80 length
----+----1---+---2---+----3---+----4----+---5----+----6----+---7---+----8
          00001     560
          00003     520
          00004     540
          00005     500
          00002     510
          00006     550
          00008     530
          00007     510                                            
          00010     505
JCL -
---+----1----+----2---+---3---+----4---+----5---+
//MATEPKD  JOB (123),'MTH',NOTIFY=&SYSUID
//*
//STEP01   EXEC PGM=SORT
//IN1      DD DSN=MATEPK.SORT.INPUT01,DISP=SHR
//IN2      DD DSN=MATEPK.SORT.INPUT02,DISP=SHR
//SORTOUT  DD DSN=MATEPK.SORT.OUTPT01,
//             SPACE=(CYL,(1,1),RLSE),DCB=*.IN1,
//             DISP=(NEW,CATLG,DELETE)
//SYSOUT   DD SYSOUT=*
//SYSIN    DD *
     OPTION COPY
     JOINKEYS F1=IN1,FIELDS=(1,5,A)
     JOINKEYS F2=IN2,FIELDS=(11,5,A)
     REFORMAT FIELDS=(F1:1,40,F2:21,3)
/*
Output File - MATEPK.SORT.OUTPT02 - FB file of length 80
----+----1----+----2----+---3---+---4---+---5----+---6---+---7----+----8 00001 student1 dept1 560 00002 student2 dept3 510 00003 student3 dept2 520 00004 student4 dept1 540 00005 student5 dept2 500 00006 student6 dept3 550 00007 student7 dept3 510 00008 student8 dept1 530 00009 student9 dept2 520 00010 student10 dept2 505
Explaining Example -
- JOINKEYS F1=IN1,FIELDS=(1,5,A) - Specifies the file1 join criteria.
 - JOINKEYS F2=IN2,FIELDS=(11,5,A) - Specifies the file2 join criteria.
 - REFORMAT FIELDS=(F1:1,40,F2:21,3) - Reformat the output record with both files data by specifying starting and ending position.