IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

Compare 2 files replace data in 1st file with 2nd file


IBM Mainframe Forums -> DFSORT/ICETOOL
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
GautamSid

New User


Joined: 04 Jun 2021
Posts: 7
Location: India

PostPosted: Tue Jun 08, 2021 2:03 am
Reply with quote

I have 2 files

File A
NAME=ABCD
DATE=DDMMYYYY
AGE =20
CITY=ZZZZ

File B
DATE=30052021

I need output file as

File C
NAME=ABCD
DATE=30052021
AGE =20
CITY=ZZZZ

Can anyone kindly suggest what methods I can use?
Back to top
View user's profile Send private message
Joerg.Findeisen

Active Member


Joined: 15 Aug 2015
Posts: 607
Location: Bamberg, Germany

PostPosted: Tue Jun 08, 2021 8:00 am
Reply with quote

Your request is neither JCL, nor VSAM. Use SORT JOINKEYS for your requirement.

Code:
//WHATEVER EXEC PGM=ICEMAN                               
//F1       DD *                                         
NAME=ABCD                                               
DATE=DDMMYYYY                                           
AGE =20                                                 
CITY=ZZZZ                                               
/*                                                       
//F2       DD *                                         
DATE=30052021                                           
/*                                                       
//SYSOUT   DD SYSOUT=*                                   
//SORTOUT  DD SYSOUT=*                                   
//SYSIN    DD *                                         
  JOINKEYS F1=F1,FIELDS=(81,8,A)                         
  JOINKEYS F2=F2,FIELDS=(81,8,A)                         
  JOIN UNPAIRED,F1                                       
  REFORMAT FIELDS=(?,F1:1,20,F2:1,20,F1:89,8)           
  SORT FIELDS=(42,8,ZD,A)                               
  OUTFIL FNAMES=(SORTOUT),                               
    IFTHEN=(WHEN=(1,1,CH,EQ,C'1'),BUILD=(2,20)),         
    IFTHEN=(WHEN=NONE,BUILD=(22,20))                     
  END                                                   
/*                                                       
//JNF1CNTL DD *                                         
  INREC IFTHEN=(WHEN=INIT,                               
    PARSE=(%01=(ENDBEFR=BLANKS,ENDBEFR=C'=',FIXLEN=8)), 
      OVERLAY=(81:%01,89:SEQNUM,8,ZD))                   
  END                                                   
/*                                                       
//JNF2CNTL DD *                                         
  INREC IFTHEN=(WHEN=INIT,                               
    PARSE=(%01=(ENDBEFR=BLANKS,ENDBEFR=C'=',FIXLEN=8)), 
      OVERLAY=(81:%01))                                 
  END                                                   
/*

Output:
Code:
****** *****************
000001 NAME=ABCD       
000002 DATE=30052021   
000003 AGE =20         
000004 CITY=ZZZZ       
****** *****************
Back to top
View user's profile Send private message
Rohit Umarjikar

Global Moderator


Joined: 21 Sep 2010
Posts: 2772
Location: NYC,USA

PostPosted: Tue Jun 08, 2021 11:34 pm
Reply with quote

Moved to DFSORT section, Another easy way-
Code:
//S1      EXEC PGM=SORT   
//*Concate the  Two Data Sets , B first.                                     
//SORTIN   DD  *                                                 
DATE=30052021                                                     
NAME=ABCD                                                         
DATE=DDMMYYYY                                                     
AGE =20                                                           
CITY=ZZZZ                                                         
//SORTOUT   DD SYSOUT=*                                           
//SYSUDUMP DD  SYSOUT=*                                           
//SYSOUT   DD  SYSOUT=*                                           
//SYSPRINT DD  SYSOUT=*                                           
//SYSIN     DD *                                                 
   OPTION COPY                                                   
   INREC IFTHEN=(WHEN=INIT,OVERLAY=(81:SEQNUM,8,ZD)),             
         IFTHEN=(WHEN=GROUP,BEGIN=(1,5,CH,EQ,C'DATE=',AND,       
                                   6,1,CH,NE,C'D'),               
                                   PUSH=(91:1,20)),               
         IFTHEN=(WHEN=(1,6,CH,EQ,C'DATE=D'),OVERLAY=(1:91,20))   
   OUTFILE BUILD=(1,80),OMIT=(81,8,ZD,EQ,00000001)

Output
Code:
********************************* TOP OF DATA **********************************
NAME=ABCD                                                                       
DATE=30052021                                                                   
AGE =20                                                                         
CITY=ZZZZ                                                                       
******************************** BOTTOM OF DATA ********************************


One more way is to use SYMNAMES/Symbols since its just a Date field in another Data Set.
Back to top
View user's profile Send private message
Joerg.Findeisen

Active Member


Joined: 15 Aug 2015
Posts: 607
Location: Bamberg, Germany

PostPosted: Wed Jun 09, 2021 1:22 am
Reply with quote

Because of the thread title "Compare 2 files replace data in 1st file with 2nd file" I would suggest using the more flexible way of JOINKEYS here.
Back to top
View user's profile Send private message
Rohit Umarjikar

Global Moderator


Joined: 21 Sep 2010
Posts: 2772
Location: NYC,USA

PostPosted: Wed Jun 09, 2021 1:25 am
Reply with quote

I wouldn't argue on poor subject line but I avoid unnecessary use of joinkeys when there is no compare needed or have one to many relationships between two data sets. Nevertheless, TS got the options to choose and should understand the thought process behind each solution.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DFSORT/ICETOOL

 


Similar Topics
Topic Forum Replies
This topic is locked: you cannot edit posts or make replies. Sort to include records of file 2 int... Java & MQSeries 1
No new posts Multiple find/replace on the same dat... DFSORT/ICETOOL 4
No new posts How to modify file content using REXX CLIST & REXX 3
No new posts VB file copy COBOL program gives erro... COBOL Programming 3
No new posts Adding a header when change data DFSORT/ICETOOL 6
Search our Forums:

Back to Top