SORT 合并两个文件并追加数据而不更改 lrecl

问题描述 投票:0回答:1

我有两个具有相同布局和 LRECL 的文件

FIELD NAME          FIELD LENGTH
STORE-CUSTOM-ID     X(08)
STORE-GROUP         X(25)
STORE-LIST          9(04) OCCURS 500 TIMES

我想根据 STORE-CUSTOM-ID 合并这两个文件 – 前 8 个字节

  • 如果匹配
    • 将匹配的记录合并为 1 条记录
    • 更改存储组=‘合并记录’
  • 如果不匹配
    • 将两条记录写入输出

示例:
输入

文件1:

11223344File 1 Record            000900210022003400000000000000000000

文件2:

11223344File 2 Record            100310121014000000000000000000000000

关键是前8个字节。该记录需要合并。

输出:

11223344Merged Record            000900210022003410031012101400000000

每条记录中不一定存在相同数量的商店列表。例如,在上面的示例中,该键在 File1 中有 4 个存储编号,在 File2 中有 3 个存储编号。可能还有其他记录,其中 File1 中有 20 个存储,File2 中有 24 个存储。因此,每当有匹配项时,我需要合并记录,当我在 File1 中遇到“0000”时,我需要从该位置开始合并 File2 中的商店编号。

如果我们可以通过

SORT
实现它,您能帮我提供SYSIN详细信息吗?

sorting cobol jcl
1个回答
0
投票

您可以使用 DFSORT 的 Joinkeys 功能来合并记录。 这是一个样本

//STEP0100 EXEC PGM=SORT   
//SYSOUT   DD SYSOUT=*     
//INA      DD DISP=SHR,DSN=your.input.FB.2033.byte.file1
//INB      DD DISP=SHR,DSN=your.input.FB.2033.byte.file2
//SORTOUT  DD DSN=Your.output.file,
//            DISP=(NEW,CATLG,DELETE),      
//            SPACE=(CYL,(X,Y),RLSE)
//SYSIN    DD *                                             
  OPTION COPY                                               
  JOINKEYS F1=INA,FIELDS=(1,8,A)                            
  JOINKEYS F2=INB,FIELDS=(1,8,A)                            
  JOIN UNPAIRED                                             
  REFORMAT FIELDS=(F1:1,2033,                               
                   F2:1,2033,                               
                   ?)                                       
                                                            
  INREC IFOUTLEN=2033,                                      
          IFTHEN=(WHEN=(4067,1,CH,EQ,C'B'),                 
               OVERLAY=(0009:C'MERGED RECORD           ')), 
          IFTHEN=(WHEN=(4067,1,CH,EQ,C'2'),                 
                 BUILD=(2034,2033))                         
/*              
© www.soinside.com 2019 - 2024. All rights reserved.