我想知道当我们根据特定条件使用SyncSORT(SyncTool)时是否可以读取下一条记录。
输入示例
排序键将是帐户nbr +降序记录类型+金额
account nbr amount record type
11111111111 10 reversal not in the output
11111111111 10 deposit not in the output
33333333333 20 deposit in the output
44444444444 15 deposit in the output
55555555555 20 reversal in the output
55555555555 10 deposit in the output
66666666666 30 reversal in the output no match
当读取反转类型时,存款应该跟随相同数量,在这种情况下,它都记录反转并且存款不应该在输出文件中。逆转和存款的金额可能不同,在这种情况下,两个记录都应该在输出文件中。
输出
33333333333 20 deposit
44444444444 15 deposit
55555555555 20 reversal
55555555555 10 deposit
66666666666 30 reversal
答案 0 :(得分:0)
是。只要您的SyncSORT足够最新。
您需要使用JOINKEYS。为两个输入数据集指定相同的DSN,并指示它们已为SORTED。有一个未记录的功能允许使用JFSFnCTNL文件,如DFSORT。
在JNF1CNTL(第一个JOINKEYS数据集的“预处理器”)中,临时为每个记录添加一个序列号。默认值是序列从1开始。在这里明确是有用的......
因为在JNF2CNTL中你想做同样的事情,但是将序列开始为零(START = 0)。
每个JOINKEYS的键是序列号。
使用JOIN UNPAIRED,F1。使用第一个文件中的所有数据定义REFORMAT,并使用第二个文件中的比较数据。
如果您想象加入,这就是四记录数据集的样子:
- - A 0
A 1 B 1
B 2 C 2
C 3 D 3
D 3 - -
因为你指定JOIN UNPAIRED,F1你实际上不会看到不匹配的A 0(因为那是在F2上)但是你会看到不匹配的D 3。
如果您查看REFORMAT记录,您现在可以获得“当前”记录中的数据以及“下一个”记录中的数据。
然后还有一些工作可以只选择你想要的记录。但是,先吃晚餐......