Summary -
In this topic, we described about the SUM Suppressing duplicate records with detailed example.
Apart from summing values, SUM used to delete records which are having duplicate values in the control fields specified.
Syntax -
SUM FIELDS=NONE
name | Description |
---|---|
NONE | Specifies to SORT that no duplicates in output |
Example -
From the below data, Remove the duplicate records at department level.
Input:- MTH.SORT.INPUT
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 ********************************* Top of Data ********************************** 00001 student1 dept1 095 00003 student3 dept2 070 00004 student4 dept1 090 00005 student5 dept2 083 00002 student2 dept3 088 ******************************** Bottom of Data ********************************
Input Record Layout:
01 INPUT-REC. 05 STD-ID PIC X(05). 05 FILLER PIC X(05). 05 STD-NAME PIC X(15). 05 FILLER PIC X(05). 05 STD-DEPT PIC X(10). 05 FILLER PIC X(05). 05 STD-MARKS PIC 9(03). 05 FILLER PIC X(32).
Job:
000100 //Jobcard 000400 //* 000500 //********************************************************************** 000600 //* 000700 //* SORT SUM STATEMENT 000800 //* 000900 //********************************************************************** 001100 //STEP01 EXEC PGM=SORT 001300 //SORTIN DD DSN=MTH.SORT.INPUT01,DISP=SHR 001800 //SORTOUT DD SYSOUT=* 001900 //SYSOUT DD SYSOUT=* 002400 //SYSIN DD * 002412 SORT FIELDS=(30,10,CH,A) 002420 SUM FIELDS=NONE 003400 /* ****** **************************** Bottom of Data ****************************
Output:
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 ********************************* TOP OF DATA ********************************** 00001 student1 dept1 095 00003 student3 dept2 070 00002 student2 dept3 088 ******************************** BOTTOM OF DATA ********************************
Explaining Solution:
- As per requirement, department level duplicates needs to be eliminated. So the STD-DEPT position, length, format required for SORT FIELDS. STD-MARKS start from 30th position of length 10 and type is alphanumeric as per declaration. So use CH.
- The SORT condition for the above requirement with all the data gathered is -
SORT FIELDS=(30,10,CH,A)
- The above sort condition specifies all the duplicates should be dropped with the department as key.
- The output would have the first records of duplicates and non-duplicate records.