我有两个具有相同布局和 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:
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详细信息吗?
您可以使用 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))
/*