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

Syncsort-根据字段删除重复项


IBM大型机论坛 -> JCL& VSAM
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
venkatatcts

新的用户


已加入:2009年3月16日
帖子:55
地点:印度

发布发表:2012年7月2日,星期一2:16 pm
引用回复

你好

我有一个文件,该文件作为同一密钥的多个记录,但带有一个字段,该字段指示交易是删除还是添加或更改。

例如,

XX1-A-DW D
XX1-A-DW C
XX1-A-DW A

XX1-B-DW C
XX1-B-DW A
XX1-B-DW A

D-删除,A-添加,C-更改

如果任何一条记录具有D,则应删除该键。但是,如果那里的记录没有D,那么所有记录都应写入文件。输出应为


XX1-B-DW C
XX1-B-DW A
XX1-B-DW A

谢谢,
文卡特B
回到顶部
查看用户资料 发送私信
尼克·克劳斯顿

全球主持人


加入时间:2007年5月10日
帖子:2455
地点:英国汉普郡

发布发表:2012年7月2日,星期一2:23 pm
引用回复

很简单-您尝试了什么?我会给您一个提示-您想省略一些记录。
回到顶部
查看用户资料 发送私信
venkatatcts

新的用户


已加入:2009年3月16日
帖子:55
地点:印度

发布发表:2012年7月2日,星期一2:32 pm
引用回复

该文件是根据密钥排序的,但是指示它是删除,更改还是添加的字段按desc顺序排序。

因此,如果有任何键的记录被删除,它将是第一个。所以那个钥匙不应该在那里。对于任何记录,这三个都可以删除,添加,更改。

忽略将不适用于第一个sceanrio。

谢谢,
文卡特
回到顶部
查看用户资料 发送私信
侠客

活跃用户


已加入:2008年1月22日
职位:117
地点:自由城

发布发表:2012年7月2日,星期一4:39 pm
引用回复

您好,

记录的出现次数是否总是3?

引用:
XX1-A-DW D
XX1-A-DW C
XX1-A-DW A

XX1-B-DW C
XX1-B-DW A
XX1-B-DW A
回到顶部
查看用户资料 发送私信
venkatatcts

新的用户


已加入:2009年3月16日
帖子:55
地点:印度

发布发表:2012年7月2日星期一5:05 pm
引用回复

不可以,单个键最多可以出现1或2或最多999次
回到顶部
查看用户资料 发送私信
侠客

活跃用户


已加入:2008年1月22日
职位:117
地点:自由城

发布发表:2012年7月2日星期一5:49 pm
引用回复

您好,

试试下面的代码片段,

码:
// STEP1 EXEC PGM = ICETOOL                                 
//DFSMSG DD SYSOUT = *                                     
// TOOLMSG DD SYSOUT = *                                     
// IN1 DD *                                               
XX1-A-DW D                                               
XX1-A-DW C                                               
XX1-A-DW A                                               
XX1-B-DW C                                               
XX1-B-DW A                                               
XX1-B-DW A                                               
// OUT1 DD DSN =&TMP1,                                     
//        DISP=(NEW,CATLG,DELETE),                       
//             RECFM = FB,LRECL = 90,BLKSIZE = 0,               
//        SPACE=(CYL,(10,10),RLSE),UNIT=SYSDA             
//OUT2 DD SYSOUT = *                                       
// TOOLIN DD *                                             
  COPY FROM(IN1) TO(OUT1) USING(CTL1)                     
/*                                                                 
// CTL1CNTL DD *                                                   
  INREC IFTHEN=(WHEN=(10,1,CH,EQ,C'D'),OVERLAY=(81:1,8))           
  OUTREC FIELDS=(1:81,8)                                           
/*                                                                 
// STEP02 EXEC PGM = SORT                                             
// SORTJNF1 DD DSN =&TMP1,DISP=SHR                                   
// SORTJNF2 DD *                                                   
XX1-A-DW D                                                         
XX1-A-DW C                                                         
XX1-A-DW A                                                         
XX1-B-DW C                                                         
XX1-B-DW A                                                         
XX1-B-DW A                                                         
// SYSOUT   DD SYSOUT=*                                             
//整理  DD SYSOUT = *                                             
// SYSIN   DD *                                                     
 JOINKEYS FILE = F1,FIELDS =(1,8,A)                                 
 JOINKEYS FILE = F2,FIELDS =(1,8,A)                                 
 加入不配对,F2,仅                                           
  改革领域=(F2:1,80)                                       
  排序字段=复制


由于不知道发生了什么,因此已使用了一个以上的步骤。如果您有明确的信息,则可以将其简化为单一步骤。
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


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

发布发表:2012年7月2日,星期一7:19 pm
引用回复

您好,

使用哪种版本的产品?
回到顶部
查看用户资料 发送私信
奈什

新的用户


已加入:2006年12月7日
帖子:82
地点:英国

发布发表:2012年7月2日星期一8:41 pm
引用回复

首先是第一件事。您尚未回答Nic的问题。您也没有搜索论坛等。您在等待定制解决方案吗?

提示2-可以一步完成。 Use 何时=GROUP on the key if you are using DFSORT.
回到顶部
查看用户资料 发送私信
venkatatcts

新的用户


已加入:2009年3月16日
帖子:55
地点:印度

发布发表:2012年7月2日星期一10:48 pm
引用回复

你好

我正在使用syncsort 1.3

我无法通过省略条件来实现这一目标。基于指示是删除还是添加还是更改的列,我必须确定是否需要删除密钥。

谢谢,
文卡特b
回到顶部
查看用户资料 发送私信
侠客

活跃用户


已加入:2008年1月22日
职位:117
地点:自由城

发布发表:2012年7月3日,星期二,上午10:22
引用回复

您好,

引用:
我正在使用syncsort 1.3


所以你尝试过还是 icon_question.gif
回到顶部
查看用户资料 发送私信
c

高级会员


已加入:2006年7月28日
职位:1702
所在地:澳大利亚

发布发表时间:2012年7月3日,星期二,上午11:12
引用回复

你好

我同意Naish的观点,当GROUP是一个更好的选择,并且只需要传递1次文件。


格里
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2012年7月3日,星期二,下午4:52
引用回复

例子不清楚。

为什么“ D”优先出现?密钥记录序列中的“ D”可以出现在其他任何地方吗?为什么“ C”先于“ A”?

如果没有KEYBEGIN,则GROUP会更加棘手。

Syncsort在JOINKEYS上是否有OMIT / INCLUDE可用?
回到顶部
查看用户资料 发送私信
venkatatcts

新的用户


已加入:2009年3月16日
帖子:55
地点:印度

发布发表:2012年7月3日,星期二,下午5:39
引用回复

我已经按desc对文件进行了排序,以便D排在第一位,然后是C位,然后是A位。

Sycnsort包含并忽略条件。

谢谢,
文卡特
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


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

发布发表:2012年7月3日,星期二,下午6:25
引用回复

你需要使用这样的东西


码:

JOINKEYS FILES = F1,FIELDS =(1,8,A),INCLUDE=(10,1,CH,EQ,C'D')
JOINKEYS FILES = F2,FIELDS =(1,8,A)
改革领域=(F1:1,10,F2:1,10),FILL=X'FF'
加入未配对的F1,F2
排序字段=复制
忽略COND =(1,10,CH,EQ,11,10,CH)


未测试
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2012年7月3日,星期二,下午6:39
引用回复

潘多拉魔盒

您只需要主文件中的“不匹配”记录,而不会造成其他混乱,因此仅需UNPAIRED,F2,。

任何匹配项都必须针对“已删除”。源文件相同,因此在已删除的文件上不可能有“附加”。 JOINKEYS给出所需的记录(全部,没有D的记录)。

如果数据已经排序,则可以指示出来。使用此解决方案,不需要“ D”先出现,只需先出现即可。
回到顶部
查看用户资料 发送私信
潘多拉魔盒

主持人


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

发布发表:2012年7月3日,星期二,下午6:40
引用回复

啊,比尔 icon_redface.gif
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


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

发布发表:2012年7月3日,星期二,7:57 pm
引用回复

您好,

引用:
我正在使用syncsort 1.3
显示的版本(1.3.x)还有更多内容吗?

我的1.3文档显示了when = group,但是我不记得是否有一个必需的th发行版。

1.3现在已经过时了,我建议您组织考虑升级到当前版本。
回到顶部
查看用户资料 发送私信
c

高级会员


已加入:2006年7月28日
职位:1702
所在地:澳大利亚

发布发表:2012年7月4日星期三凌晨3:25
引用回复

你好

这是使用when = group的方法

码:
// STEP0100 EXEC PGM = SORT                                           
// SYSOUT   DD SYSOUT=*                                             
// SORTIN   DD *                                                     
XX1-A-DW D                                                         
XX1-A-DW C                                                         
XX1-A-DW A                                                         
XX1-B-DW C                                                         
XX1-B-DW A                                                         
XX1-B-DW A                                                         
//整理  DD SYSOUT = *                                             
// SYSIN    DD *                                                     
  排序字段=复制                                                 
  INREC IFTHEN=(WHEN=INIT,OVERLAY=(81:SEQNUM,8,ZD,RESTART=(1,8))), 
        IFTHEN=(WHEN=GROUP,BEGIN=(81,8,ZD,EQ,+1),                   
               PUSH=(89:10,1))                                     
  OUTFIL OMIT=(89,1,CH,EQ,C'D'),BUILD=(1,80)                       
// *                                                                 


格里
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2012年7月4日,星期三,上​​午5:13
引用回复

文卡特B,

您现在有几个解决方案。

如果在A / C / D上进行降序排序的唯一目的是为了完成此任务,则xnight和Pandora-Box概述的JOINKEYS方法可以消除对该排序的需要,因为D仅在哪里出现并不重要。为该文件提取D。

如果您对该文件还有其他需求(按降序排列),则Gerry的解决方案应比JOINKEYS运行得更好。

如果您使用JOINKEYS,并且文件处于“自然”顺序,那么请注意,可以通过添加SORTED来停止对每个JOINKEYS文件的排序。
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> JCL& VSAM

 


类似主题
话题 论坛 回覆
没有新帖 带SyncSort的数值检查。 同步排序 1
没有新帖 撤消DB2以除去用户 DB2 4
该主题已锁定:您无法编辑帖子或回复。 有没有办法限制用户登录... 所有其他大型机主题 11
没有新帖 删除基于S ...的重复记录 DFSORT / ICETOOL 4
没有新帖 使用基于关闭的VB记录排序... DFSORT / ICETOOL 6
搜索我们的论坛:


回到顶部