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

合并记录并计算总计-SyncSort


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

新的用户


加入时间:2005年5月9日
帖子:30
地点:海得拉巴

发布发表:2013年4月1日星期一12:58 pm
引用回复

嗨Trinadh,

除了上述2个示例之外,这是另一个示例,代码仅为COL12处理2个不同的值,
输入值
码:
COL11 COL12
-----------
012345防御
000033 ABC
000044 PQR


输出量
码:
COL11 COL12
-----------
012422 ABC,DEF      <<-- 计算所有记录,但是,COL12值(PQR)因为缺少第三条相同的记录。我们可以使其动态化,以便它可以处理大约10个相同的记录。
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2013年4月1日星期一1:43 pm
引用回复

码:
RQ#1:按照用户特定的顺序对记录进行排序。
COL1的要求顺序为**评估,热门,捐款,TOSS和其他(如果有)**


RQ#2: Add COL11 together  if all other COL's (COL1 to COL10) are identical.

RQ#3:为每组COL1,COL2和COL3添加一个新行,并将该组的名称命名为'TOTAL: ' SUM(COL11)
还要在每个TOTAL之后添加一个空行。这是为了提高报告的可读性。
字符串“ TOTAL”在位置110和SUM处开始(COUNT)从121的位置开始。


上面的步骤非常简单,可以一步完成。

INREC为“ outsort”准备一个附加字段。

SORT首先放在“ outsort”上,然后将其余的数据数量化。

将OUTFIL与NODETAIL,SECTIONS一起使用,并为两组不同的控制中断提供两组说明。使用TOT来获取总数。

这样就剩下了COL 12的“串联”。继续进行上述操作,同时100%清楚地知道您想要的“串联”。

您现在“当然”想要合并多达10条记录的COL 12吗?

您并没有给出太多示例,说明可能真正存在于现有的50个字节中,其中您可能使用了1-25个字节。

可以有“嵌入”的空格吗?领先的空白?还是只是空白?

码:
A,B,C,D,E,A
A,B,C,D,E


使用前者,您知道每个记录的内容,并且知道总数是从六个记录合并而成的。对于后者,除了第一个元素之外,您不知道有多少条记录或其原始值是什么。那是你真正想要的吗?

空白的COL 12呢?您希望如何?
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2013年4月1日星期一1:50 pm
引用回复

查看-3nadh的代码,它仅处理多个记录的一个COL 12实例。如果您了解控制卡,便会知道,而不用问要更改什么。

请记住,除非您的数据已经包含整个组(即,在进行排序时,没有其他记录会添加到组中,或者换句话说,不会通过排序“合并”任何组),那么此技术需要额外的SORT,您的客户或您的公司将为其支付资源。
回到顶部
查看用户资料 发送私信
venkata.ravi

新的用户


加入时间:2005年5月9日
帖子:30
地点:海得拉巴

发布发表:2013年4月1日星期一2:41 pm
引用回复

这是COL12的样子
长度-50个字节
不能为空。
它永远不能有前导空格,但可以有嵌入和/或尾随空格。尾随空格需要被截断。
无需考虑类似的COL12值,但应将其对应的COL11求和。

引用:
码:
A,B,C,D,E,A
A,B,C,D,E


是的,应该对6个记录的COL11值求和,但是不应重复使用COL12值。
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2013年4月1日星期一5:32 pm
引用回复

好的,让我们知道您什么时候可以进行外包和总计工作,合并方面会有所帮助。
回到顶部
查看用户资料 发送私信
venkata.ravi

新的用户


加入时间:2005年5月9日
帖子:30
地点:海得拉巴

发布发表:2013年4月1日星期一5:37 pm
引用回复

嗨,比尔,
你所说的“ outsort”是什么意思。您是否将Req#1称为外包?
引用:
RQ#1:按照用户特定的顺序对记录进行排序。
COL1的要求顺序为**评估,热门,捐款,TOSS和其他(如果有)**
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

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

是。它们将“不按顺序”排序,因此“排序” ...
回到顶部
查看用户资料 发送私信
venkata.ravi

新的用户


加入时间:2005年5月9日
帖子:30
地点:海得拉巴

发布发表:2013年4月2日,星期二,上午10:39
引用回复

嗨,比尔,
我可以使用Trinadh提供的控制卡进行“分类”。总计和小计也可以使用trinadh提供的排序。

剩下的唯一事情就是处理COL12值。
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2013年4月2日,星期二,上午11:45
引用回复

该解决方案分三个步骤提供了三个SORT。

可以在一个SORT中一步完成。

您认为您的客户愿意为哪一个付款?
回到顶部
查看用户资料 发送私信
venkata.ravi

新的用户


加入时间:2005年5月9日
帖子:30
地点:海得拉巴

发布发表:2013年4月2日星期二下午2:01
引用回复

嗨,比尔,
如果可以一步完成,那就太好了。能给我提供那种分类卡吗?
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2013年4月2日,星期二,下午3:10
引用回复

你读过了吗 这个?还是较早的?

使用INREC,准备一个附加到FB的字段,该字段分别包含四个,“已分类”值的D,G,J,M,否则包含X。

字母中“空白”的原因是为了便于修改。

然后在新字段上进行SORT,然后再输入所需的其余键,以便获得“组合”,然后 那个杂货店您将获得所需的订单。

然后将OUTFIL与SECTIONS和TRAILER3一起使用。

码:
 完全移除,结点,
           SECTIONS=(p,m,         密钥的开始和长度(共TOTAL个)
                    TRAILER3=(c:C'TEXT YOU WANT',TOT =(p,m,ZD),/),
                    p,m, 小计的开始和长度
                    TRAILER3=(p,m,   sub-tot之前的数据的开始和长度
                             TOT=(p,m,ZD),
                             p,m  sub-tot之前的数据的开始和长度))


我什至没有真正尝试正确使用语法,您必须自己做一些工作。

然后,您只需要扩展的字段即可获得总和的值和“合并”,但首先需要进行上述工作。
回到顶部
查看用户资料 发送私信
venkata.ravi

新的用户


加入时间:2005年5月9日
帖子:30
地点:海得拉巴

发布发表:2013年4月2日,星期二,下午4:36
引用回复

嗨,比尔,
以下是我一步一步使用INREC修改了2种代码的方法。

此代码返回每一行的总计。但是实际行反映为空,缺少实际数据,但是每个总计的子总计正在按顺序进行。
码:
完全移除,结点,                                         
           SECTIONS=(1,121,                                       
                    TRAILER3=(122:C'TOTAL   : ',TOT=(122,6,ZD),/),
                    131,7)                                       



这段代码返回错误消息,“ WER116A以下H / T线是GT LRECL:
排序后的第一个记录显示在此处。

码:
完全移除,结点,                                         
           SECTIONS=(1,121,                                       
                    TRAILER3=(122:C'TOTAL   : ',TOT=(122,6,ZD),/),
                    131,7,                                       
                    TRAILER3=(1,121,                             
                             TOT=(122,7,ZD),                     
                             1,121))                             
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2013年4月2日,星期二,下午5:17
引用回复

您需要两个“总计”来完成任务。一种是前三列(从内存中)更改时,在这里您只需要总计,然后是空白行。

第二个是您想要前10列的汇总值,并且希望将总数“嵌入”到包含10列和尚待完成的第12列的行中。

码:
完全移除,结点,                                         
           SECTIONS=(1,121,                                       
                    TRAILER3=(122:C'TOTAL   : ',TOT=(122,6,ZD),/),
                    131,7)   


上面的代码都不做。

尝试类似的东西

码:
完全移除,结点,                                         
           SECTIONS=(1,输出前三列的长度
                    TRAILER3=(122:C'TOTAL   : ',TOT=(122,6,ZD),/))


就其本身而言,应该使您接近想要的前三列的总数。您可以根据需要调整输出。

码:
完全移除,结点,                                         
           SECTIONS=(1,121,
                    TRAILER3=(1,121,TOT=(122,6,ZD),128,10))


单独或接近它,应在摘要中提供详细信息。

它们可以合并,如下所示:
码:
完全移除,结点,                                         
           SECTIONS=(1,输出前三列的长度
                    TRAILER3=(122:C'TOTAL   : ',TOT=(122,6,ZD),/),
                1,121,
                    TRAILER3=(1,121,TOT=(122,6,ZD),128,行剩余长度))


记住,您希望6,ZD字段“更长”以允许TOT。一旦您使OUTFIL正常工作并显示您到目前为止拥有的所有控制卡,接下来就是COL 12的“合并”。

同样,我自己也没有遇到上述问题,因此您可以修复出错的部分,而不是抱怨。
回到顶部
查看用户资料 发送私信
venkata.ravi

新的用户


加入时间:2005年5月9日
帖子:30
地点:海得拉巴

发布发表:2013年4月2日,星期二,下午6:55
引用回复

嗨,比尔,

下面的代码总结了总数
如果记录相同(COL1至COL10(1,121)和COL12(128,50),但具有不同的COL11

码:
完全移除,结点,                                 
           SECTIONS=(1,121,128,50,                         
                    TRAILER3=(1,121,TOT=(122,6,ZD),128,50))


使用此排序卡,输出文件变为192字节,COL12从138开始
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

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

您是说这是某种类型的问题吗?如果是,请明确说明。看一下线程的大小。这不需要太多的努力。

您以前没有提到如果COL1-10相等且COL12相等则要“总计”。您为COL12指定了完全不同的处理。

这是零钱吗?

当我编写代码时,在那儿对TOT使用了EDIT。你有尝试过吗?

记住,您说的最后一件事是,您希望将(最多)10个COL12值合并在一行上,这将是该行的450个字节的扩展。

同样,再次提醒您,您想为COL11分配一个额外的头寸,这样总数就不太可能溢出。为了能够做到这一点,COL12的起始位置(合并的或其他的)将必须改变一个。
回到顶部
查看用户资料 发送私信
venkata.ravi

新的用户


加入时间:2005年5月9日
帖子:30
地点:海得拉巴

发布发表:2013年4月3日星期三下午2点48分
引用回复

嗨,比尔,

这根本不是新问题。

如果COL1与COL10相等,则应该对COL11求和。在计算总计之前,我们需要将所有不同的COL12值进行配对。使用上面的分类卡,如果COL1到COL10和COL12值相等,则可以计算总计。


码:
完全移除,结点,                                 
           SECTIONS=(1,121,128,50,                         
                    TRAILER3=(1,121,TOT=(122,6,ZD),128,50))   
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2013年4月3日,星期三,下午3:28
引用回复

码:
COL1-10 somevalue
COL11   amount1
COL12   A
COL1-10与上述相同
COL11   amount2
COL12   B
COL1-10与上述相同
COL11   amount3
COL12   A


使用您的代码,上面的代码将获得三个没有“求和”的输出记录,即您的输出将等于您的输入。

在我看来,您所说的想要的是COL1-20中A,B的COL1-20的“汇总”记录。

那么,在上述情况下您想要什么?
回到顶部
查看用户资料 发送私信
venkata.ravi

新的用户


加入时间:2005年5月9日
帖子:30
地点:海得拉巴

发布发表:2013年4月3日星期三下午3:56
引用回复

嗨,比尔,
使用我的分类卡以及您的条件,它只会产生2条记录。这是预期的。
码:
输入已采取
-+ ---- 2 ---- + ---- 3 ---
*********************
 20130306000150ABCDE
 20130306000250B     
 20130306000350ABCDE
*********************

输出量:
-+ ---- 2 ---- + ---- 3 ---- + ---- 4--
******************************
 20130306            500 ABCDE
 20130306            250 B   
******************************


COL11转换为ZD。总计150 + 350,对于COL12 ABCDE变为500,这是相同的。
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2013年4月3日星期三下午4:08
引用回复

大概是在对COL12进行排序,而您没有提到。

大概您也不再需要COL12的“合并”吗?

非常好。

因此,您只需要为TOT扩展COL11,就不会轻易溢出。我将C'0',startCOL11,lengthCOL11追加到记录的末尾,并在其上添加TOT。
回到顶部
查看用户资料 发送私信
venkata.ravi

新的用户


加入时间:2005年5月9日
帖子:30
地点:海得拉巴

发布发表:2013年4月3日星期三下午4:48
引用回复

嗨,比尔,

我仍在整合COL12值,这是要求的最后一步。
另一方面,我刚刚将样本报告发送给用户,并要求他们对输出文件进行反馈(这不包括对COL12的合并)。我正在等待他们的回应。
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> 同步排序 转到页面 以前  1, 2

 


类似主题
话题 论坛 回覆
没有新帖 选择多个常量记录 DB2 3
该主题已锁定:您无法编辑帖子或回复。 将匹配的记录写入输出文件 DFSORT / ICETOOL 11
没有新帖 带SyncSort的数值检查。 同步排序 1
没有新帖 合并两个以上的记录 DFSORT / ICETOOL 15
没有新帖 匹配和不匹配记录使用 DFSORT / ICETOOL 11
搜索我们的论坛:


回到顶部