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

根据特定条件删除重复的记录


IBM大型机论坛 -> DFSORT / ICETOOL
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
布林达莫汉

新的用户


加入:2016年5月11日
帖子:6
地点:美国

 发布 发表于:2020年12月18日星期五5:40 am
引用回复

你好
删除重复记录时,我有特殊条件。对于给定的家庭,政策详细信息和车辆详细信息保持不变,只有驾驶员详细信息和错误代码有所不同。如果是政策错误或车辆错误,我只需要保留住户的第一笔记录;如果是驾驶员错误,我需要保留该家庭中的所有记录。

码:

输入 :
1号       COL2        COL3      COL4          COL5
<1 10 >    <11 20>    <21 30>    <31 40>       <41 44>
记录#1   Policy#1   Vehicle#1  Driver#1       PERR      /* household 1 */
记录#2   Policy#1   Vehicle#1  Driver#2       PERR      /* household 1 */
记录#3   Policy#1   Vehicle#1  Driver#3       PERR      /* household 1 */
记录#4   Policy#2   Vehicle#2  Driver#1       DERR      / *家庭2 * /
记录#5   Policy#2   Vehicle#2  Driver#2       DERR     /* household 2 */
记录#6   Policy#2   Vehicle#2  Driver#2       DERR     /* household 2 */
记录#7   Policy#3   Vehicle#3  Driver#1       VERR     /* household 3 */
记录#8   Policy#3   Vehicle#3  Driver#2       VERR     /* household 3 */

注意:
佩尔 is Policy Error
VERR是车辆错误
DERR是驱动程序错误

码:

输出值 :
1号       COL2        COL3      COL4          COL5
<1 10 >    <11 20>    <21 30>    <31 40>       <41 44>
记录#1   Policy#1   Vehicle#1  Driver#1       PERR      /* household 1 */
记录#4   Policy#2   Vehicle#2  Driver#1       DERR      / *家庭2 * /
记录#5   Policy#2   Vehicle#2  Driver#2       DERR     /* household 2 */
记录#6   Policy#2   Vehicle#2  Driver#2       DERR     /* household 2 */
记录#7   Policy#3   Vehicle#3  Driver#1       VERR     /* household 3 */

有人可以帮我实现这个目标吗?

谢谢![/ code]
回到顶部
查看用户资料 发送私信
乔格·芬代森

活跃用户


已加入:2015年8月15日
帖子:388
地点:德国班贝格

 发布 发表于:星期五十二月18,2020 10:45上午
引用回复

码:
  OPTION COPY                                                           
  INREC IFTHEN =(WHEN=INIT,OVERLAY=(81:SEQNUM,4,ZD,RESTART=(11,10)))     
  OUTFIL FNAMES =(SORTOUT),                                             
   INCLUDE=((81,4,ZD,EQ,+ 1,AND,41,1,SS,EQ,C'PV'),OR,(41,1,CH,EQ,C'D')),
    BUILD=(1,80)                                                       
  END
回到顶部
查看用户资料 发送私信
布林达莫汉

新的用户


加入:2016年5月11日
帖子:6
地点:美国

 发布 发表:2020年12月18日星期五8:46下午
引用回复

非常感谢!有效 icon_smile.gif 你能解释一下代码吗?

码:

INREC IFTHEN =(WHEN=INIT, OVERLAY=(81:SEQNUM,4,ZD,RESTART=(11,10)))


在输入记录中,您将第81列中的SEQNUM添加到84。RESTART是什么意思?我看到它与基于列位置11的policy#有关。

码:

OUTFIL FNAMES =(SORTOUT),
包含=((81,4,ZD,EQ,+ 1,AND,41,1,SS,EQ,C'PV'),OR,(41,1,CH,EQ,C'D'))


在这里,您将根据INCLUDE语句中的条件来填充输出文件。
(41,1,CH,EQ,C'D')-如果其驱动程序错误,您正在将所有记录填充到输出中。
(81,4,ZD,EQ,+ 1,AND,41,1,SS,EQ,C'PV')-为什么在序列检查中使用+1,而当我们使用SS时,它将检查P或V在第41位?
回到顶部
查看用户资料 发送私信
乔格·芬代森

活跃用户


已加入:2015年8月15日
帖子:388
地点:德国班贝格

 发布 发表:2020年12月18日星期五8:54 pm
引用回复

很简单您的输入内容已预先排序,因此我们可以为每个保单分配一个升序编号(第81行)。该值将随每个新的策略编号重新启动。接下来是要求第一个PERR / VERR或任何DERR。
如果您的输入未预先排序,则只需将INREC预先替换为OUTREC和SORT。逻辑应该相同。
回到顶部
查看用户资料 发送私信
布林达莫汉

新的用户


加入:2016年5月11日
帖子:6
地点:美国

 发布 发表:2020年12月18日,星期五9:09 pm
引用回复

再次感谢!
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> DFSORT / ICETOOL

 


类似主题
话题 论坛 回覆
没有新帖 将匹配的记录写入输出文件 DFSORT / ICETOOL 1
没有新帖 合并两个以上的记录 DFSORT / ICETOOL 15
没有新帖 匹配和不匹配记录使用 DFSORT / ICETOOL 11
没有新帖 撤消DB2以除去用户 DB2 4
该主题已锁定:您无法编辑帖子或回复。 有没有办法限制用户登录... 所有其他大型机主题 11
搜索我们的论坛:

回到顶部