dfsort - 比较两个文件,然后匹配和 umtached 记录以复制两个差异文件
问题描述
我需要比较两个文件,然后使用 jcl 中的连接键匹配记录一个文件和不匹配到另一个文件。我不确定这是否正确。请你帮助我好吗?第一个输入文件只有 18 条记录长度,它将与 input2 的前 18 条长度进行比较。如果匹配,那么我们将根据构建条件将记录写入输出文件,如果不匹配,则将记录复制到另一个文件中
SORT FIELDS=COPY
JOINKEYS FILE=F1,FIELDS=(1,18,A)
JOINKEYS FILE=F2,FIELDS=(1,18,A)
REFORMAT FIELDS=(F2:1,258,F2:264,1,F2:334,2)
OUTFIL FNAMES=MATCH
SORT FIELDS=COPY
JOINKEYS FILE=F1,FIELDS=(1,18,A)
JOINKEYS FILE=F2,FIELDS=(1,18,A)
JOIN UNPAIRED,F2,ONLY
REFORMAT FIELDS=(F2:1,258,F2:264,1,F2:334,2)
OUTFIL FNAMES=UNMATCH
解决方案
欢迎来到堆栈溢出!您必须在 dfsort中使用指标方法来实现您的期望。请参见下面的 SORT 语句。
JOINKEYS FILE=F1,FIELDS=(1,18,A)
JOINKEYS FILE=F2,FIELDS=(1,18,A)
REFORMAT FIELDS=(F2:1,258,F2:264,1,F2:334,2,?)
OUTFIL FNAMES=BOTH,INCLUDE=(262,1,CH,EQ,C'B'),BUILD=(1,261)
OUTFIL FNAMES=F1ONLY,INCLUDE=(262,1,CH,EQ,C'1'),BUILD=(1,258)
OUTFIL FNAMES=F2ONLY,INCLUDE=(262,1,CH,EQ,C'2'),BUILD=(259,3)
?
中的负责REFORMAT FIELD
在第 262 个位置填充指标。如果密钥在两个文件中都匹配,则第 262 位将有B
,表示两者。如果密钥不匹配,第 262 位会告诉您记录来自哪个文件,1
或2
.
笔记:
如果键不匹配,您可以更改
BUILD
语句以编写所需的列。确保您在REFORMAT FIELDS
.确保在 JCL 中
BOTH
有F1ONLY
DD名称。F2ONLY
更多细节在这里
推荐阅读
- sql - 在 group by 中,有没有办法告诉 SQL 特定列不需要聚合函数?
- c# - 无法从我的网络应用程序中的其他服务器获取图像
- vba - 在移动到共享邮箱时更改标志状态
- javascript - Javascript object.hasOwnProperty() 与 Reflect.has()
- python-3.x - 获取包含特定文本的所有节点(文本和属性)的有效方法
- php - 用 PHP 和 HTML 编写印度教阿拉伯数字
- haskell - Haskell 中的二叉搜索树实现
- python - Python 中是否有嵌套范围使用 for 循环的简写形式?
- angular - 需要通过angular ts代码将SSCC文件编译成CSS(不在cli中)
- lua - 如何从逻辑上理解 Lua 中的 table.sort 函数?