测试下一条记录的数据

时间:2015-09-01 15:43:53

标签: mainframe syncsort

我想知道当我们根据特定条件使用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     

1 个答案:

答案 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记录,您现在可以获得“当前”记录中的数据以及“下一个”记录中的数据。

然后还有一些工作可以只选择你想要的记录。但是,先吃晚餐......