Problem statement : Need to find out if a person (First name , Last name and DOB) has more than one unique ID. A person can have more than one record in the file.
Solution approach : Copy the file and use it to match against the original file using the key value (First name, Last name and DOB). If Key values match write the two records (Original File and Duplicate file) consecutively in the output file. Later using INclude condition , compare the Key values, write the record if it has different uniuqe ID's.
File lay out (Starting position, Length) : FB , LRECL = 206
Partition number : 1,5
UNique ID : 6,10
Other Fields : 16,86
Last NAme: 102,60
First NAme : 162,35
DOB : 197,10
//STEP3 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DUMMY
//SORTJNF1 DD DSN=F6435T.EHP.L6435CNS.D2150120,DISP=SHR
//SORTJNF2 DD DSN=F6435T.EHP.L6435CNS.D2150120.DUP,DISP=SHR
//OUT12 DD DSN=F6435T.EHP.L6435CNS.D2150120.BOTH,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(4350,9000),RLSE),UNIT=(,56)
//OUT1 DD DSN=F6435T.EHP.L6435CNS.D2150120.ONLY,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(4350,9000),RLSE),UNIT=(,56)
//OUT2 DD DSN=F6435T.EHP.L6435CNS.D2150120.DUP.ONLY,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(4350,9000),RLSE),UNIT=(,56)
//JNF1CNTL DD *
OPTION DYNALLOC=(,256),FILSZ=E10000000000
/*
//JNF2CNTL DD *
OPTION DYNALLOC=(,256),FILSZ=E10000000000
/*
//SYSIN DD *
JOINKEYS FILE=F1,FIELDS=(102,105,A)
JOINKEYS FILE=F2,FIELDS=(102,105,A)
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:1,206,F2:1,206,?)
OPTION COPY
OUTFIL FNAMES=OUT12,INCLUDE=(413,1,CH,EQ,C'B'),
BUILD=(1,412)
OUTFIL FNAMES=OUT1,INCLUDE=(413,1,CH,EQ,C'1'),
BUILD=(1,206)
OUTFIL FNAMES=OUT2,INCLUDE=(413,1,CH,EQ,C'2'),
BUILD=(207,206)
/*
//DFSPARM DD *
OPTION DYNALLOC=(,256),FILSZ=E10000000000
/*
//SYSOUT DD SYSOUT=*
//SORTIN DD DUMMY
//SORTJNF1 DD DSN=F6435T.EHP.L6435CNS.D2150120,DISP=SHR
//SORTJNF2 DD DSN=F6435T.EHP.L6435CNS.D2150120.DUP,DISP=SHR
//OUT12 DD DSN=F6435T.EHP.L6435CNS.D2150120.BOTH,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(4350,9000),RLSE),UNIT=(,56)
//OUT1 DD DSN=F6435T.EHP.L6435CNS.D2150120.ONLY,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(4350,9000),RLSE),UNIT=(,56)
//OUT2 DD DSN=F6435T.EHP.L6435CNS.D2150120.DUP.ONLY,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(4350,9000),RLSE),UNIT=(,56)
//JNF1CNTL DD *
OPTION DYNALLOC=(,256),FILSZ=E10000000000
/*
//JNF2CNTL DD *
OPTION DYNALLOC=(,256),FILSZ=E10000000000
/*
//SYSIN DD *
JOINKEYS FILE=F1,FIELDS=(102,105,A)
JOINKEYS FILE=F2,FIELDS=(102,105,A)
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:1,206,F2:1,206,?)
OPTION COPY
OUTFIL FNAMES=OUT12,INCLUDE=(413,1,CH,EQ,C'B'),
BUILD=(1,412)
OUTFIL FNAMES=OUT1,INCLUDE=(413,1,CH,EQ,C'1'),
BUILD=(1,206)
OUTFIL FNAMES=OUT2,INCLUDE=(413,1,CH,EQ,C'2'),
BUILD=(207,206)
/*
//DFSPARM DD *
OPTION DYNALLOC=(,256),FILSZ=E10000000000
/*
Help required :
Both the files which am comparing have 488948457 (488 Million records) each. This job abended stating ABEND=SB37 U0000 REASON=00000004
1) Will i be able to compare such huge files using SORT ? or is there any better solution approach to my problem statement
Thanks in advance for you help
Error message :
IEF403I TSUEGDUA - STARTED - TIME=18.11.17
IEC030I B37-04,IFG0554A,TSUEGDUA,STEP3,OUT12,3A46,PSL660, 141
F6435T.EHP.L6435CNS.D2150120.BOTH
IEA995I SYMPTOM DUMP OUTPUT 143
SYSTEM COMPLETION CODE=B37 REASON CODE=00000004
TIME=18.56.59 SEQ=62375 CPU=0000 ASID=010B
PSW AT TIME OF ERROR 075C1000 80E57926 ILC 2 INTC 0D
NO ACTIVE MODULE FOUND
NAME=UNKNOWN
DATA AT PSW 00E57920 - 41003038 0A0DB20A 00509808
AR/GR 0: 009FF320/00E57B34 1: 00000000/A4B37000
2: 00000000/00011248 3: 00000000/00E57AFC
4: 00000000/009CD4A8 5: 00000000/00E6E000
6: 00000000/009CD74C 7: 00000000/009CD7A4
8: 00000000/009CD76C 9: 00000000/009CE7C0
A: 00000000/00797700 B: 00000000/00E575B2
C: 00000000/009B5D58 D: 00000000/7F5EECE8
E: 00000000/00E575B2 F: 00000000/00000004
END OF SYMPTOM DUMP
IEF450I TSUEGDUA STEP3 - ABEND=SB37 U0000 REASON=00000004 153
OPS1000J
IEC030I B37-04,IFG0554A,TSUEGDUA,STEP3,OUT12,3A46,PSL660, 141
F6435T.EHP.L6435CNS.D2150120.BOTH
IEA995I SYMPTOM DUMP OUTPUT 143
SYSTEM COMPLETION CODE=B37 REASON CODE=00000004
TIME=18.56.59 SEQ=62375 CPU=0000 ASID=010B
PSW AT TIME OF ERROR 075C1000 80E57926 ILC 2 INTC 0D
NO ACTIVE MODULE FOUND
NAME=UNKNOWN
DATA AT PSW 00E57920 - 41003038 0A0DB20A 00509808
AR/GR 0: 009FF320/00E57B34 1: 00000000/A4B37000
2: 00000000/00011248 3: 00000000/00E57AFC
4: 00000000/009CD4A8 5: 00000000/00E6E000
6: 00000000/009CD74C 7: 00000000/009CD7A4
8: 00000000/009CD76C 9: 00000000/009CE7C0
A: 00000000/00797700 B: 00000000/00E575B2
C: 00000000/009B5D58 D: 00000000/7F5EECE8
E: 00000000/00E575B2 F: 00000000/00000004
END OF SYMPTOM DUMP
IEF450I TSUEGDUA STEP3 - ABEND=SB37 U0000 REASON=00000004 153
OPS1000J