Posted: Wed Aug 12, 2009 7:17 pm Post subject: Comparing Old and New file
Hi Friends,
I have 2 files old and an new file of LRECL=80, I have to compare these two files and create 2 output files where one file will have all the changes and the other file will have records that didn't changed.
Code:
FILES ARE SORTED BY 2 KEYS - FIELD1 - (POSITION 1 TO 26) & FIELD2 - (POSITION 30 TO 39)
OLD FILE:-
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
********************************* Top of Data **********************************
AAAAAAAAAAAAAAAAAAAAAAA100 1000000000 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB100 1000000000 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCC100 2000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCC200 3000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FFFFFFFFFFFFFFFFFFFFFFF100 1000000000 111111111111111111111111111111
GGGGGGGGGGGGGGGGGGGGGGG200 1000000000 111111111111111111111111111111
******************************** Bottom of Data ********************************
NEW FILE:-
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
********************************* Top of Data **********************************
AAAAAAAAAAAAAAAAAAAAAAA100 1000000000 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB100 3000000000 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCC100 1000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCC200 4000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDDDDD100 1000000000 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
EEEEEEEEEEEEEEEEEEEEEEE100 1000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFF100 1000000000 222222222222222222222222222222
GGGGGGGGGGGGGGGGGGGGGGG200 1000000000 222222222222222222222222222222
******************************** Bottom of Data ********************************
Output:-
WE NEED 2 FILES, ONE FILE WITH ALL THE CHANGES AND OTHER FILE WITH UNCHANGED RECORDS
AFTER COMPARING THE PREVIOUS AND CURRENT FILES, POSTION 28 - INDICATES IF THE RECORD WAS:-
'A' - ADDED - IF THE NEW KEYS (KEYS ARE FIELD1 & FIELD2) HAS BEEN ADDED
'D' - DELETED - IF THE KEYS (KEYS ARE FIELD1 & FIELD2) HAVE BEEN DELETED
'C' - CHANGED - GET THE NEW RECORD FROM THE NEW FILE IF WE FIND CHANGES BETWEEN '41 THRU 80 COLUMNS'
FINALLY THIS FILE WILL BE SORTED BY FIELD1 AND FIELD2
FILE WITH CHANGES:-
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
********************************* Top of Data **********************************
BBBBBBBBBBBBBBBBBBBBBBB100 D 1000000000 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
BBBBBBBBBBBBBBBBBBBBBBB100 A 3000000000 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCC100 A 1000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCC100 D 2000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCC200 D 3000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCC200 A 4000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDDDDD100 A 1000000000 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
EEEEEEEEEEEEEEEEEEEEEEE100 A 1000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFF100 C 1000000000 222222222222222222222222222222
GGGGGGGGGGGGGGGGGGGGGGG200 C 1000000000 222222222222222222222222222222
******************************** Bottom of Data ********************************
FILE WITHOUT CHANGES:-
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
********************************* Top of Data **********************************
AAAAAAAAAAAAAAAAAAAAAAA100 1000000000 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
******************************** Bottom of Data ********************************
Joined: 26 Nov 2002 Posts: 12378 Topics: 75 Location: San Jose
Posted: Wed Aug 12, 2009 7:54 pm Post subject:
lal,
The folllowing DFSORT JCL will give you the desired results. We concatenate a single record with HDR in the 1st 3 bytes before each file so that we can use that as a string to identify the record as to which file it belongs to.
BBBBBBBBBBBBBBBBBBBBBBB100 D 1000000000 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
BBBBBBBBBBBBBBBBBBBBBBB100 A 3000000000 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCC100 A 1000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCC100 D 2000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCC200 D 3000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCC200 A 4000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDDDDD100 A 1000000000 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
EEEEEEEEEEEEEEEEEEEEEEE100 A 1000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFF100 C 1000000000 111111111111111111111111111111
GGGGGGGGGGGGGGGGGGGGGGG200 C 1000000000 111111111111111111111111111111
Joined: 26 Nov 2002 Posts: 12378 Topics: 75 Location: San Jose
Posted: Thu Aug 13, 2009 10:27 am Post subject:
Lal,
Your Error messages indicate you are using syncsort. I'm a DFSORT developer. DFSORT and Syncsort are competitive products. I'm happy to answer questions on DFSORT and DFSORT's ICETOOL, but I don't answer questions on Syncsort. _________________ Kolusu
www.linkedin.com/in/kolusu
Hi Kolusu,
Can you please modify your JCL to use ICETOOL instead of SORT. Since many of my JCL's work with INREC IFTHEN with ICETOOL. When I submit these JCL's they will be executed by SYNCTOOL.
So I am just hoping that running your JCL through ICETOOL might fix the issue. I apologize if I am being unwise.
Joined: 14 Jan 2009 Posts: 37 Topics: 0 Location: USA
Posted: Thu Aug 13, 2009 4:00 pm Post subject:
Lal: You advise that you are using SyncSort for z/OS. What release? If you are using SyncSort for z/OS Release 1.2 or Release 1.3 you should easily be able to use SyncSort's JOIN to accomplish this task. What you describe is similar to Example 7 in the SyncSort EXPLOITING JOIN Guide. If you would please identify the release you are using I will work up some sample coding for you when I am back in the office on Friday. _________________ Brian Wood
SyncSort Mainframe Product Services
201-930-8260
zos_tech@syncsort.com
********************************* Top of Data **********************************
AAAAAAAAAAAAAAAAAAAAAAA100 1000000000 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
******************************** Bottom of Data ********************************
********************************* Top of Data **********************************
BBBBBBBBBBBBBBBBBBBBBBB100 D 1000000000 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
BBBBBBBBBBBBBBBBBBBBBBB100 A 3000000000 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCC100 A 1000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCC100 D 2000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCC200 D 3000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
CCCCCCCCCCCCCCCCCCCCCCC200 A 4000000000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDDDDDDDDD100 A 1000000000 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
EEEEEEEEEEEEEEEEEEEEEEE100 A 1000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFF100 C 1000000000 222222222222222222222222222222
GGGGGGGGGGGGGGGGGGGGGGG200 C 1000000000 222222222222222222222222222222
******************************** Bottom of Data ********************************
Please let me know if you require further assistance with this. _________________ Brian Wood
SyncSort Mainframe Product Services
201-930-8260
zos_tech@syncsort.com
Joined: 14 Jan 2009 Posts: 37 Topics: 0 Location: USA
Posted: Mon Aug 17, 2009 3:51 pm Post subject:
Lal:
I just noticed that the LRECL I built for the second OUTFIL is only 70 bytes long (your data records appeared to be 70 bytes long); you will probably want to modify my coding example to specify 10 additional blanks (or the value of your choice) at the end of each BUILD statement in the second OUTFIL in order to meet the requirement of a 80-byte file. _________________ Brian Wood
SyncSort Mainframe Product Services
201-930-8260
zos_tech@syncsort.com
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum