IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

使用SORT提取匹配和不匹配的记录


IBM大型机论坛 -> 同步排序
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
maki_psg

新的用户


已加入:2010年1月28日
帖子:47
地点:印度

发布发表:2013年6月10日星期一上午9:00
引用回复

你好

我需要从2个文件中提取数据,其中一个文件(文件2)具有匹配键,而两个文件(文件1和文件2)中都没有匹配键。

来自文件1的数据:

码:

A 101
C <spaces>
B 102
E 105
D 104


来自文件2的数据:

码:

P 301
200
Q 302
B 101
D 109
Z 901


如果Col1上存在匹配项,我想从文件2中提取记录,并且还要从两个文件中提取不匹配的记录。

样本输出文件:
码:

200
B 101
C <spaces>
D 109
E 105
P 301
Q 302
Z 901


请帮助使用SORT提取上述输出。
谢谢。
回到顶部
查看用户资料 发送私信
阿伦·拉吉(Arun Raj)

主持人


已加入:2006年10月17日
帖子:2481
位置:@我的办公桌

发布发表:2013年6月10日星期一10:16上午
引用回复

maki_psg,

我建议在DFSORT论坛上进行“搜索”,我相信您会找到很多满足您需求的工作示例。

尝试一下,如果遇到任何问题,请找回。有人会帮助您。
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

发布发表于:2013年6月10日星期一
引用回复

您使用的是SYNCSORT还是DFSORT?
回到顶部
查看用户资料 发送私信
米斯塔·库尔兹

活跃用户


已加入:2012年1月28日
帖子:310
位置:房间:TREE(3)。希尔伯特酒店

发布发表:2013年6月10日星期一11:20上午
引用回复

假设您的两个文件均为FB并且LRECL = 80 ..并且匹配键是文件F1和F2的第一列。
您可以尝试此DFSORT作业。
码:

// SRT01    EXEC PGM=SORT                                             
// SYSOUT   DD SYSOUT=*                                               
// SORTJNF1 DD *                                                     
A 101                                                               
C <SPACES>                                                           
B 102                                                               
E 105                                                               
D 104                                                               
// SORTJNF2 DD *                                                     
P 301                                                               
200                                                               
Q 302                                                               
B 101                                                               
D 109                                                               
Z 901                                                               
// *                                                                 
//整理  DD SYSOUT=*                                               
// *                                                                 
// SYSIN    DD *                                           
 JOINKEYS FILE = F1,FIELDS =(1,1,A)                         
 JOINKEYS FILE = F2,FIELDS =(1,1,A)                         
  JOIN     UNPAIRED,F1,F2                                 
  OPTION   COPY                                           
  REFORMAT FIELDS=(F1:1,80,F2:1,80,?)                     
  INREC    IFTHEN=(WHEN=(161,1,CH,EQ,C'1'),BUILD=(1,80)), 
           IFTHEN=(WHEN=(161,1,SS,EQ,C'B,2'),BUILD=(81,80))


输出:
码:

200     
B 101     
C <SPACES>
D 109     
E 105     
P 301     
Q 302     
Z 901     
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

发布发表于:2013年6月10日星期一
引用回复

米斯塔·库尔兹

匹配标记只能具有三个值之一。 IFTHEN =(WHEN = NONE会给您一个“ ELSE”,这将使您更清楚,而不是让下一个人想知道没有满足什么价值。

maki_psg,

输入文件是否在第一个字节上按顺序排列?两个文件都可以重复吗?

您的卷必须很小,因此您可能不会注意到,但是您可能要考虑使用MERGE。

将第二个文件指定为MERGE的第一个输入,并使用OPTION EQUAL和SUM FIELDS = NONE。

编辑:我可以从您的示例数据中看到您的文件不按顺序。忘记合并。
回到顶部
查看用户资料 发送私信
米斯塔·库尔兹

活跃用户


已加入:2012年1月28日
帖子:310
位置:房间:TREE(3)。希尔伯特酒店

发布发表:2013年6月10日星期一1:06 pm
引用回复

谢谢比尔..我对其进行了如下修改:

码:
// SYSIN    DD *                                         
 JOINKEYS FILE = F1,FIELDS =(1,1,A)                       
 JOINKEYS FILE = F2,FIELDS =(1,1,A)                       
  JOIN     UNPAIRED,F1,F2                               
  OPTION   COPY                                         
  REFORMAT FIELDS=(F1:1,80,F2:1,80,?)                   
  INREC    IFTHEN=(WHEN=(161,1,CH,EQ,C'1'),BUILD=(1,80)),
           IFTHEN=(WHEN=NONE,BUILD=(81,80))             
回到顶部
查看用户资料 发送私信
斯科鲁苏

高级会员


已加入:2007年12月7日
帖子:2205
地点:圣何塞

发布发表:2013年6月10日星期一10:13 pm
引用回复

米斯塔·库尔兹

做得好。我想多整理一点。

您不必在JOIN语句上指定F1和F2。一个简单的JOIN UNPAIRED将为您提供F1和F2的匹配记录和不匹配记录。

您也不需要在指标为“ 1”时再次构建记录,因为数据已经存在于位置1至80中。您可以使用IFOUTLEN = 80,以确保获得正确的LRECL输出。

因此请使用以下控制卡
码:

// SYSIN    DD *                                                     
 JOINKEYS FILE = F1,FIELDS =(1,1,A)                                   
 JOINKEYS FILE = F2,FIELDS =(1,1,A)                                   
  JOIN UNPAIRED                                                     
  OPTION COPY                                                       
  REFORMAT FIELDS=(F1:1,80,F2:1,80,?)                               
 INREC IFOUTLEN = 80,IFTHEN =(WHEN=(161,1,SS,EQ,C'B,2'),BUILD=(81,80))
// *
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

发布发表:2013年6月11日,星期二,凌晨2:21
引用回复

如果卷很大,则重新安排内容可能会有好处。

如果大多数记录是“匹配项”,而只有少数“不匹配项”,则可以“交换” F1和F2,以便输出所需的大多数输入数据都位于REFORMAT记录的第一部分,并通过IFOUTLEN。不论哪种组合都能提供优越的记录。如果应为REFORMAT记录的第一部分。

我知道有一个关于“否定”的东西,但是只有三种可能,NE,C'1'可能会做:-)

特别是带有符号...
回到顶部
查看用户资料 发送私信
米斯塔·库尔兹

活跃用户


已加入:2012年1月28日
帖子:310
位置:房间:TREE(3)。希尔伯特酒店

发布发表:2013年6月11日,星期二,上午9:58
引用回复

谢谢斯科鲁苏和比尔。
我猜OP忘记了他/她在这里发布了一些内容:-)
回到顶部
查看用户资料 发送私信
maki_psg

新的用户


已加入:2010年1月28日
帖子:47
地点:印度

发布发表:2013年6月11日,星期二,上午10:40
引用回复

斯科鲁苏写道:
米斯塔·库尔兹

做得好。我想多整理一点。

您不必在JOIN语句上指定F1和F2。一个简单的JOIN UNPAIRED将为您提供F1和F2的匹配记录和不匹配记录。

您也不需要在指标为“ 1”时再次构建记录,因为数据已经存在于位置1至80中。您可以使用IFOUTLEN = 80,以确保获得正确的LRECL输出。

因此请使用以下控制卡
码:

// SYSIN    DD *                                                     
 JOINKEYS FILE = F1,FIELDS =(1,1,A)                                   
 JOINKEYS FILE = F2,FIELDS =(1,1,A)                                   
  JOIN UNPAIRED                                                     
  OPTION COPY                                                       
  REFORMAT FIELDS=(F1:1,80,F2:1,80,?)                               
 INREC IFOUTLEN = 80,IFTHEN =(WHEN=(161,1,SS,EQ,C'B,2'),BUILD=(81,80))
// *


@ Pandora,我们正在使用SYNCSORT。

@ Skolusu,输入文件量巨大。我已经发布了一个样本数据,该数据类似于产品场景。

谢谢米斯塔·库尔兹,斯科鲁苏和比尔。

我已经使用了下面的分类卡,它工作完美。
码:

// SYSIN    DD *                                                     
 JOINKEYS FILE = F1,FIELDS =(1,1,A)                                   
 JOINKEYS FILE = F2,FIELDS =(1,1,A)                                   
  JOIN UNPAIRED                                                     
  OPTION COPY                                                       
  REFORMAT FIELDS=(F1:1,80,F2:1,80,?)                               
 INREC IFOUTLEN = 80,IFTHEN =(WHEN=(161,1,SS,EQ,C'B,2'),BUILD=(81,80))
// *                                                                 
回到顶部
查看用户资料 发送私信
阿伦·拉吉(Arun Raj)

主持人


已加入:2006年10月17日
帖子:2481
位置:@我的办公桌

发布发表:2013年6月11日,星期二,上午10:53
引用回复

maki_psg写道:
@ Pandora,我们正在使用SYNCSORT。
maki_psg

以后请在此论坛的JCL部分中发布与Syncsort有关的查询。尽管在大多数情况下,两个DFSORT关键字都可以以相同的方式工作,但它们在Syncsort中可能无法很好地工作,反之亦然。

顺便说一句,您能告诉您Syncsort的版本吗,我的手册中没有提到“?”支持。 icon_confused.gif
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

发布发表:2013年6月11日,星期二,上午11:23
引用回复

码:
// S1 EXEC PGM = ICEMAN
// SYSOUT   DD SYSOUT=*
// SORTIN DD *
记录
/ *
//整理 DD DUMMY
// SYSIN   DD   *
  OPTION COPY
/ *



请粘贴以上步骤的完整系统信息
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

发布发表:2013年6月11日,星期二,上午11:53
引用回复

1.4.1.0具有JNFnCNTL文件的未记录支持。也许它也有“?”?要么,或者不寻常的是,TS / OP认为他们具有SyncSort,但没有...。

maki_psg,

如果您的数据很大,请注意已经提到的要点。模拟您的巨额资金,看看您使用的资源是否有合理的差异,然后选择最适合您数据的选项。
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

发布发表:2013年6月11日,星期二,12:21 pm
引用回复

maki_psg,

您有一个从4月初开始的主题,该主题也已发布在DFSORT中。

请不要再次这样做。 SyncSort问题在论坛的JCL部分中。

在该主题中,您说“我当前正在使用SYNC的FOR Z / OS 1.4.1.0R。”您能否确认“?”可以在您使用的控制卡中使用吗?
回到顶部
查看用户资料 发送私信
maki_psg

新的用户


已加入:2010年1月28日
帖子:47
地点:印度

发布发表:2013年6月11日,星期二,1:01 pm
引用回复

比尔·伍德格写道:
maki_psg,

您有一个从4月初开始的主题,该主题也已发布在DFSORT中。

请不要再次这样做。 SyncSort问题在论坛的JCL部分中。

在该主题中,您说“我当前正在使用SYNC的FOR Z / OS 1.4.1.0R。”您能否确认“?”可以在您使用的控制卡中使用吗?


条例草案,为错误地发布主题表示歉意 icon_sad.gif.

是的,“?”在顶部张贴的控制卡中起作用。
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

发布发表:2013年6月11日,星期二,下午1:05
引用回复

行。谢谢。

因此,对于至少1.4.1.0R,SyncSorters可以使用?在REFORMAT语句中:-)
回到顶部
查看用户资料 发送私信
阿伦·拉吉(Arun Raj)

主持人


已加入:2006年10月17日
帖子:2481
位置:@我的办公桌

发布发表:2013年6月13日,星期四,上午11:09
引用回复

比尔·伍德格写道:
行。谢谢。

因此,对于至少1.4.1.0R,SyncSorters可以使用?在REFORMAT语句中:-)
那是个好消息,比尔 icon_smile.gif ,不确定为什么1.4文档未提及此增强功能。 icon_eek.gif
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

发布发表:2013年6月13日,星期四,下午12:08
引用回复

在论坛上没有SYNCSORT开发人员,这很可悲:'(

与我们分享最新版本的新逻辑和命令的人将对所有用户派上用场
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

发布发表:2013年6月13日,星期四,下午12:42
引用回复

SyncSort会不时地出现。
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

发布发表:2013年6月13日,星期四,下午7:05
引用回复

您好,

如果您的组织已在Syncsort注册,则它们会定期发送信息性电子邮件。 。 。确保收到邮件的人将其发送给使用Syncsort的人员。
回到顶部
查看用户资料 发送私信
阿努·达万(Anuj Dhawan)

高级会员


已加入:2006年4月22日
帖子:6250
地点:印度孟买

发布发表:2013年6月27日,星期四,下午7:18
引用回复

潘多拉魔盒写道:
在论坛上没有SYNCSORT开发人员,这很可悲:'(
Alissa在那儿,但正如Bill所说,她不时登录。
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

发布发表:2013年6月27日,星期四,下午8:25
引用回复

您好,

引用:
不知道为什么1.4文档未提及此增强功能


它在我的1.4文档中〜

引用:
由JOINKEYS,JOIN和REFORMAT控制语句控制的联接工具将来自两个源文件的记录联接起来
.
.
.
通过REFORMAT控制语句,提供了由联接操作创建的记录中数据字段的位置的规范。
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


已加入:2006年9月7日
职位:1565
地点:仙女座星系

发布发表:2013年6月27日,星期四,下午8:36
引用回复

如果让椅子坐在这些专家旁边并影响我的知识会很高兴 icon_smile.gif 这样我可以测试&像Arul一样回答SYNCSORT查询

但是有时候我不知道一个人怎么能知道这么多东西,以至于他写了一本大手册 icon_eek.gif

是的,当我在商店中使用SYNCSORT时,我寄给她的Alissa很有帮助,她会立即提供手册帮助

当然,所有人都应该提供她要求的信息
回到顶部
查看用户资料 发送私信
阿伦·拉吉(Arun Raj)

主持人


已加入:2006年10月17日
帖子:2481
位置:@我的办公桌

发布发表:2013年6月27日,星期四,9:22 pm
引用回复

引用:
它在我的1.4文档中〜
嗨,家伙,

恐怕我的1.4手册没有“?”以及“ JNFnCNTL”支持详细信息。 icon_confused.gif 我已经向Syncsort支持小组发送了一封电子邮件,要求提供任何文档,他们回答说ZAP可以将这些增强功能添加到1.3.2,但在文档部分没有任何内容。
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

发布发表:2013年6月27日,星期四,10:33 pm
引用回复

不幸的是,关于“未记录的功能”的事情是它们没有出现在手册中。我在其他地方看到过一些参考资料,所以向Alissa询问了JNFnCNTL。我不知道?,也不知道它是否在“补丁”中,或者仅在1.4.0以上可用。
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> 同步排序 转到页面 1, 2  下一页

 


类似主题
话题 论坛 回覆
没有新帖 建立排序键 DFSORT / ICETOOL 3
没有新帖 很大排序失败-寻求识别... DFSORT / ICETOOL 7
没有新帖 使用SORT进行日期转换 同步排序 4
没有新帖 匹配和不匹配记录使用 DFSORT / ICETOOL 11
没有新帖 哪个SORT实用程序可以改善性能? DFSORT / ICETOOL 16
搜索我们的论坛:


回到顶部