比较两个文件,包括匹配和非匹配记录

时间:2015-10-26 17:51:49

标签: mainframe dfsort syncsort

我需要将两个文件合并为一个。 假设我有2个输入文件FILE1和FILE2。我需要将FILE1和FILE2中的不匹配记录写入FILE 3以及我想将匹配的记录也写入FILE3。如果在FILE1和FILE2中存在基于键的匹配,则必须从FILE1中选择要写入的匹配记录/ FILE2基于某些条件。

两个输入文件中的键位置相同。

有人可以帮我写SORTCARD,我怎样才能在SyncSort或DFSort中一步到位?

2 个答案:

答案 0 :(得分:0)

尝试使用连接键

SORT FIELDS=COPY
JOINKEYS FILES=F1,FIELDS=(1,5,A)
JOINKEYS FILES=F2,FIELDS=(1,5,A)
JOIN UNPAIRED,F1,F2
REFORMAT FIELDS=(F1:1,6,F2:1,80)

在重新格式化字段中,您可以根据需要提及字段,即..,如果您希望从file2中选择匹配的记录,那么请在F2旁边提及这些文件:

答案 1 :(得分:0)

我使用以下排序卡获得了我的解决方案:

    JOINKEYS F1=IN1,FIELDS=(1,7,A,13,7,A)                     
    JOINKEYS F2=IN2,FIELDS=(1,7,A,13,7,A)                     
    JOIN UNPAIRED,F1,F2                                       
    REFORMAT FIELDS=(F1:1,239,F2:1,239,?)                     
    OPTION COPY                                               
    OUTFIL FNAMES=OUT1,INCLUDE=(479,1,SS,EQ,C'1,2'),          
    IFTHEN=(WHEN=(479,1,CH,EQ,C'1'),                    
          BUILD=(1,239,479,1)),                       
    IFTHEN=(WHEN=NONE,                                  
          BUILD=(240,239,479,1))                      
    OUTFIL FNAMES=OUT2,INCLUDE=(479,1,SS,EQ,C'B'),            
    IFTHEN=(WHEN=(111,1,FS,EQ,NUM,AND,175,1,FS,EQ,NUM),
           BUILD=(1,239)),                            
    IFTHEN=(WHEN=(350,1,FS,EQ,NUM,AND,414,1,FS,EQ,NUM),
           BUILD=(240,239)),                          
    IFTHEN=(WHEN=NONE,                                 
          BUILD=(1,239))