MERGE FIELDS
MERGE FIELDS
Summary
- DFSORT is used to merge the two or more datasets.
- Merging can be done based on the specific common position of the datasets.
- Merging can also done based on the multiple positions of dataset (i.e. fields). But the priority is from first field to last field.
- If multiple positions of sorting specified, the order of priority is from left to right.
- The sorting orders can be either Ascending or descending.
Syntax -
SORT FIELDS=(starting position, length, data format, A/D)
starting position | Starting position of field to be compared |
Length | Length of the field to be compared |
data format | Format of the field like CH, PD, BI etc,. |
A/D | Specifies the sorting order |
Example -
Input1 - MTHUSR1.SORTDATA.INPUT01
------------------------------------------------------------------------
BROWSE MTHUSR1.SORTDATA.INPUT01 Line 00000000 Col 001 080
Command ===> Scroll ===> CSR
----+----1----+----2----+---3----+---4---+----5---+----6----+---7---+----8
********************************* Top of Data ******************************
00001 PAWAN KUMAR Y 0000010000
00002 KAMAL K S 0000040000
00003 SRIDHAR R G 0000030000
00004 SRINIVASA RAO C 0000020000
00005 VENKAT R Y 0000060000
00006 RAJESH KUMAR Y 0000050000
******************************** Bottom of Data ****************************
Input2 - MTHUSR1.SORTDATA.INPUT02
--------------------------------------------------------------------------
BROWSE MTHUSR1.SORTDATA.INPUT02 Line 00000000 Col 001 080
Command ===> Scroll ===> CSR
----+----1----+----2----+---3---+----4---+----5---+----6---+----7---+----8
********************************* Top of Data ******************************
00007 GURU R N 0000070000
00008 KUMAR K S 0000060000
00009 RAO A C 0000020000
00010 VENU K P 0000030000
******************************** Bottom of Data ****************************
Job -
---+----1----+----2---+---3---+----4---+----5---+---6----+---7--
***************************** Top of Data ***************************
//job-card
//STEP10 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN01 DD DSN=MTHUSR1.SORTDATA.INPUT01,DISP=SHR
//SORTIN02 DD DSN=MTHUSR1.SORTDATA.INPUT02,DISP=SHR
//SORTOUT DD DSN=MTHUSR1.MERGE.OUTPUT,
// DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,
// SPACE=(CYL,(1,4),RLSE),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)
//SYSIN DD *
MERGE FIELDS=(1,5,A,40,10,A),FORMAT=CH
/*
//
**************************** Bottom of Data *************************
Output -
---+---1---+---2----+---3---+----4---+---5---+---6----+---7---+----8
********************************* Top of Data ******************************
00001 PAWAN KUMAR Y 0000010000
00002 KAMAL K S 0000040000
00003 SRIDHAR R G 0000030000
00004 SRINIVASA RAO C 0000020000
00005 VENKAT R Y 0000060000
00006 RAJESH KUMAR Y 0000050000
00007 GURU R N 0000070000
00008 KUMAR K S 0000060000
00009 RAO A C 0000020000
00010 VENU K P 0000030000
******************************** Bottom of Data ****************************
Explaining Example -
- MERGE FIELDS=(1,5,A,40,10,A),FORMAT=CH is equal to MERGE FIELDS=(1,5,CH,A,40,10,CH,A)
- MERGE FIELDS=(1,5,CH,A,...) - Performs merge on the data in 1 to 5 positions to produce the merge result in ascending order.
- MERGE FIELDS=(...,40,10,CH,A) - Performs merge on the result of the above step. Merge performed on the data in 40 to 50 positions to produce the result in ascending order.