下一条记录的测试数据
Posted
技术标签:
【中文标题】下一条记录的测试数据【英文标题】:Test data on next record 【发布时间】:2015-09-01 15:43:53 【问题描述】:我想知道当我们使用 SyncSORT (SyncTool) 基于特定条件时是否可以读取下一条记录。
输入示例
排序键为账户编号+降序记录类型+金额
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】:是的。只要您的 SyncSORT 是最新的。
您需要使用 JOINKEYS。为两个输入数据集指定相同的 DSN,并指示它们已排序。有一个未记录的功能允许使用 JNFnCTNL 文件,例如 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 记录,您现在有来自“当前”记录的数据和来自“下一个”记录的数据。
然后需要做更多的工作来仅选择您想要的记录。不过,先吃饭吧……
【讨论】:
嗨,比尔,感谢您的回答。您在(ibm icetool 文档或同步排序)中的某处有这方面的任何示例吗?不用在 COBOL 中编写代码真是太好了!!!以上是关于下一条记录的测试数据的主要内容,如果未能解决你的问题,请参考以下文章