首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SYNCSORT从两个输入文件中一步获得匹配和不匹配的记录?

如何使用SYNCSORT从两个输入文件中一步获得匹配和不匹配的记录?
EN

Stack Overflow用户
提问于 2011-10-05 10:40:05
回答 2查看 63.1K关注 0票数 1

我有一个类似下面的要求。

我有两个输入文件FILE1和FILE2。

->将匹配的记录写入FILE3。

->将不匹配的记录从FILE1写入FILE4。

->将不匹配的记录从FILE2写入FILE5。

两个输入文件中的关键位置都是(1,10)。

谁能让我知道SORTCARD,我怎样才能在SyncSort中一步到位??

提前谢谢你,Rajasekhar Jannu。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-08 01:53:59

代码语言:javascript
复制
JOINKEYS FILE=F1,FIELDS=(01,10,A)
JOINKEYS FILE=F2,FIELDS=(01,10,A)
UNPAIRED F1,F2   <== This results in cartesian product
REFORM FIELDS=(F1:01,10,F2:01,10),FILL=C'$'
SORT FIELDS=(01,10,CH,A)
OUTFIL FNAMES=03,
INCLUDE=(01,01,CH,NE,C'$',AND,11,01,CH,NE,C'$')  <== Matched Records
OUTFIL FNAMES=04,
INCLUDE=(01,01,CH,NE,C'$',AND,11,01,CH,EQ,C'$')  <== Non-Matched Records from File1
OUTFIL FNAMES=03,
INCLUDE=(01,01,CH,EQ,C'$',AND,11,01,CH,NE,C'$')  <== Non-Matched Records from File2

另外,请注意,这两个文件只考虑了10字节,因为您没有提到每个文件的长度。

同样建议你搜索已知的大型机论坛,如果你没有得到有效的解决方案,可以在这里发布它。希望这能有所帮助

参考:Joinkeys Guide

票数 2
EN

Stack Overflow用户

发布于 2013-10-15 20:56:27

代码语言:javascript
复制
enter code here
//JOIN EXEC PGM=SORT 
//SORTJNF1 DD * 
1234567890 FILEB 
1234678901 FILE1 
/* 
//SORTJNF2 DD * 
1234567890 FILEB 
1234789012 FILE2 
/* 
//JNF1CNTL DD DUMMY             <=== not necessary(informatory)
//JNF2CNTL DD DUMMY             <=== not necessary(informatory)
//BOTH     DD DSN=<FILENAME>
//FILE1 DD DSN=<file name> 
//FILE2 DD DSN=<file name>
//SYSOUT DD SYSOUT=* 
//SYSPRINT DD SYSOUT=* 
//SORTOUT DD SYSOUT=*           <=== we can see the JOIN output here(explanatory)
//SYSIN DD * 
 JOINKEYS FILE=F1,FIELDS=(1,10,A) 
 JOINKEYS FILE=F2,FIELDS=(1,10,A) 
 JOIN UNPAIRED,F1,F2 
 REFORMAT FIELDS=(F1:1,16,F2:1,16),FILL=C'@' 
 OPTION COPY 
 OUTFIL FNAMES=BOTH, 
 INCLUDE=(01,01,CH,NE,C'@',AND,17,01,CH,NE,C'@'),BUILD=(1,16)
 OUTFIL FNAMES=FILE1,
 INCLUDE=(01,01,CH,NE,C'@',AND,17,01,CH,EQ,C'@'),BUILD=(1,16)
 OUTFIL FNAMES=FILE2,
 INCLUDE=(01,01,CH,EQ,C'@',AND,17,01,CH,NE,C'@'),BUILD=(17,16)
 /*  

 //***** this REFORMAT output would be something like
 1234567890 FILEB1234567890 FILEB 
 1234678901 FILE1@@@@@@@@@@@@@@@@
 @@@@@@@@@@@@@@@@1234789012 FILE2  
 //*********************************

FILL=C'@‘将字符'@’填充到JOIN操作生成的记录中,以便以后使用INCLUDE过滤时可以使用此填充的字符

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7656172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档