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

使用Syncsort进行零的算术除法


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

新的用户


加入时间:2007年5月17日
帖子:8
地点:钦奈

发布发表:2007年9月5日星期三凌晨3:15
引用回复

你好
使用DFSORT进行除法运算时遇到一些困难。我必须计算百分比率。我的输入如下所示,它是一个FB文件(80 LRECL)
码:
---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- +-
AAAAAAAA  000000029     000000456   
BBBBBBBB  000000010     000000050   
中华总商会  000123452     000123452   
DDDDDDDD  000006782     000007986   
EEEEEEEE  000000000     000000010   
FFFFFFFF  000069032     000071236   
GGGGGGGG  000000032     000005405     


我的输出应为以下形式:
码:
 | Match Rate     6.35964 |    AAAAAAAA
 | Match Rate    20.00000 |    BBBBBBBB
 | Match Rate   100.00000 |    中华总商会
 | Match Rate    84.92361 |    DDDDDDDD
 | Match Rate     0.00000 |    EEEEEEEE
 | Match Rate    96.90605 |    FFFFFFFF
 | Match Rate     0.59204 |    GGGGGGGG


我已使用以下SORT生成输出。它适用于除“ EEEEEEEE”记录之外的所有记录,因为11到19位置的所有零。而且我收到了OUTREC ARITHMETIC OVERFLOW错误消息。因此,请为我提供解决此问题的解决方案。
码:
今天双色球开奖结果 STEP001     EXEC PGM = SYNCTOOL,区域= 2048K                           
今天双色球开奖结果 SORTWK01 DD  UNIT = SYSDA,SPACE =(TRK,2)                               
今天双色球开奖结果 SORTWK02 DD  UNIT = SYSDA,SPACE =(TRK,2)                               
今天双色球开奖结果 SYSOUT   DD  SYSOUT=*                                               
今天双色球开奖结果 DFSMSG   DD  SYSOUT=*                                               
今天双色球开奖结果工具  DD  SYSOUT=*                                               
今天双色球开奖结果 SYSUDUMP DD  SYSOUT=*     
今天双色球开奖结果 IN1      DD DISP = SHR,DSN =输入文件       
今天双色球开奖结果 *                                                             
今天双色球开奖结果输出    DD DSN=OUTPUT FILE,               
今天双色球开奖结果            DISP=(,CATLG,DELETE),                             
今天双色球开奖结果             UNIT=SYSDA,SPACE=(TRK,(20,20),RLSE),             
今天双色球开奖结果             DCB=(DSORG = PS,RECFM = FB,LRECL = 80)                                                           
 今天双色球开奖结果TOOLIN   DD  *                                                       
  COPY FROM(IN1) TO(OUTDD) USING(CTL1)                                 
今天双色球开奖结果 CTL1CNTL DD *                                                       
  OUTREC FIELDS=(C' |匹配率                ',                     
         ((11,9,ZD,MUL,+ 10000000),DIV,25,9,ZD),EDIT=(IIIIT.TTTTT),     
         C' |',30X,1,8)                                               
/ *

谢谢,
苏伦德拉。
回到顶部
查看用户资料 发送私信
弗兰克·雅格

DFSORT开发人员


已加入:2005年2月15日
帖子:7129
地点:加利福尼亚州圣何塞

发布发表:2007年9月5日星期三上午5:39
引用回复

实际上,当我使用DFSORT的ICETOOL运行此作业时,它没有收到任何错误消息并产生了以下输出:

码:

|匹配率                    6.35964 |                              AAAAAAAA
|匹配率                   20.00000 |                              BBBBBBBB
|匹配率                  100.00000 |                              中华总商会
|匹配率                   84.92361 |                              DDDDDDDD
|匹配率                    0.00000 |                              EEEEEEEE
|匹配率                   96.90605 |                              FFFFFFFF
|匹配率                    0.59204 |                              GGGGGGGG


由于您具有PGM = SYNCTOOL,因此看来您实际上是在使用Syncsort的SYNCTOOL,而不是DFSORT的ICETOOL。 Syncsort收到错误消息,而不是DFSORT。

我是DFSORT开发人员。 DFSORT和Syncsort是竞争产品。我很高兴回答有关DFSORT和DFSORT的ICETOOL的问题,但我不回答有关Syncsort的问题。

I'm moving this thread to the JCLForum.
回到顶部
查看用户资料 发送私信
香卡

活跃用户


已加入:2007年6月25日
帖子:196
地点:班加罗尔

发布发表:2007年9月5日星期三上午11:03
引用回复

surendra_giddaluru,

我尝试使用SYNCSORT发布的代码和输入。它显示输出为FRANK的发布。

引用:
而且我收到了OUTREC ARITHMETIC OVERFLOW错误消息。


尝试将数字除以零时,出现“ OUTREC ARITHMETICIC FORFLOW错误消息”。

请检查您的输入是否在25,9中有零。

使用SYNCSORT代替SYNCTOOL,并根据需要重新格式化INREC中的字段。使用大量记录运行时,效率会更高。

码:
今天双色球开奖结果 EXEC PGM = 同步排序                                           
今天双色球开奖结果 SYSOUT DD SYSOUT = *                                           
今天双色球开奖结果 SORTIN DD  *                                                 
AAAAAAAA  000000029     000000456                               
BBBBBBBB  000000010     000000050                               
中华总商会  000123452     000123452                               
DDDDDDDD  000006782     000007986                               
EEEEEEEE  000000000     000000010                               
FFFFFFFF  000069032     000071236                               
GGGGGGGG  000000032     000005405                               
/ *                                                              
今天双色球开奖结果 SORTOUT DD SYSOUT = *                                           
今天双色球开奖结果 SYSIN DD  *                                                   
 OPTION COPY                                                   
 INREC FIELDS=(C' |匹配率                ',               
       ((11,9,ZD,MUL,+ 10000000),DIV,25,9,ZD),EDIT=(IIIIT.TTTTT),
       C' |',30X,1,8)                                           
/ *                                                              
今天双色球开奖结果 

输出:
码:
---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- + ---- 4 ---- + ---- 5 ---- + ---- 6 ---- + ---- 7 ---- + ---- 8
********************************数据顶部*************** ********************
 | MATCH RATE                    6.35964 |                              AAAAAAAA
 | MATCH RATE                   20.00000 |                              BBBBBBBB
 | MATCH RATE                  100.00000 |                              中华总商会
 | MATCH RATE                   84.92361 |                              DDDDDDDD
 | MATCH RATE                    0.00000 |                              EEEEEEEE
 | MATCH RATE                   96.90605 |                              FFFFFFFF
 | MATCH RATE                    0.59204 |                              GGGGGGGG
 **********************************数据底部**************** ****************
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


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

发布发表:2007年9月5日星期三下午6:28
引用回复

你好,

您的Syncsort版本可能不是最新的,或者缺少某些修复程序。我建议在Syncsort支持下打开一个问题,以确定为什么您的流程无法正常运行。

根据建议,确保输入的内容正确。
回到顶部
查看用户资料 发送私信
surendra_giddaluru

新的用户


加入时间:2007年5月17日
帖子:8
地点:钦奈

发布发表:2007年9月5日,星期三7:50 pm
引用回复

嗨,弗兰克(Frank)和桑卡尔(Sankar),非常感谢您的建议。我尝试使用SYNCTOOL和SYSNSORT都工作正常,谢谢。我还有一个问题。我的输入文件有时在(11,9)和(25,9)位置都为全零。我尝试使用SYNCTOOL和SYNCSORT两次都中止“ ARITHMETIC OVERFLOW”错误消息的情况。我使用的输入如下。请给我一些解决方案。

---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- +-
AAAAAAAA 000000029 000000456
BBBBBBBB 000000010 000000050
中交CCCCCC 000123452 000123452
DDDDDDDD 000006782 000007986
EEEEEEEE 000000000 000000000
FFFFFFFF 000069032 000071236
GGGGGGGG 000000032 000005405
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


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

发布发表:2007年9月5日星期三晚上10:37
引用回复

你好,

您需要确保不会被零除。

当两个数字都为零时会发生什么?
回到顶部
查看用户资料 发送私信
surendra_giddaluru

新的用户


加入时间:2007年5月17日
帖子:8
地点:钦奈

发布发表:2007年9月5日星期三晚上11:56
引用回复

你好

我正在重写当前运行很长时间的COBOL程序。因此,现在我正在使用SORT,在COBOL程序中进行文件处理并生成报告,该报告需要对各个帐户进行汇总,还需要计算每个帐户的百分比匹配率。因此,在我以前的COBOL程序中,当(11,9)和(25,9)位置中的值均为零时,我们会将0.0000移至匹配率,而无需对该垂直账户进行任何除法运算。
现在,我认为我们需要在计算匹配率之前验证这些值。尽量将值放在(25,9)位置,以便SORT不会失败。如果(25,9)位置的值为零,我需要显式移动0.0000,而无需执行除法运算来计算匹配率。希望这次我清楚。
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


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

发布发表:2007年9月6日星期四上午12:23
引用回复

地狱,

引用:
我正在重写当前运行很长时间的COBOL程序。
正在处理多少条记录? “长时间”是多长时间?

这个COBOL代码做什么,而排序却做不到或做的不同?

如果代码是读取文件并创建摘要统计信息,我相信它们应该运行类似的时间长度。 COBOL代码可能会使用更多的cpu,但是挂墙时间应该非常相似,因为大多数时间都应该花在做i / o上。

我不知道如何告诉Syncsort有条件地绕过计算。
回到顶部
查看用户资料 发送私信
艾丽莎·玛格丽丝(Alissa Margulies)

同步排序支持


已加入:2007年7月25日
帖子:496
地点:美国

发布发表:2007年9月7日星期五凌晨1:31
引用回复

引用:
我不知道如何告诉Syncsort有条件地绕过计算。


试试这个代码:
码:

今天双色球开奖结果 SYSIN DD  *
    SORT FIELDS=COPY
    INREC IFTHEN=(WHEN=((11,9,ZD,NE,0),AND,(25,9,ZD,NE,0)),
                  BUILD=(C' |匹配率                ',
                  ((11,9,ZD,MUL,+ 10000000),DIV,25,9,ZD),
                  EDIT=(IIIIT.TTTTT),C' |',30X,1,8)),
          IFTHEN=(WHEN=((11,9,ZD,EQ,0),AND,(25,9,ZD,EQ,0)),
                  BUILD=(C' |匹配率                    0.00000 |',
                  30X,1,8))
/ *
回到顶部
查看用户资料 发送私信
艾丽莎·玛格丽丝(Alissa Margulies)

同步排序支持


已加入:2007年7月25日
帖子:496
地点:美国

发布发表:2007年9月7日星期五上午1:34
引用回复

...忘记提及上述代码需要SyncSort for z / OS 1.2.1或更高版本。
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


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

发布发表:2007年9月7日星期五凌晨2:35
引用回复

嗨艾丽莎,

哪个Syncsort出版物有IFTHEN的文章?

我下载的文档没有IFTHEN。

谢谢

d
回到顶部
查看用户资料 发送私信
surendra_giddaluru

新的用户


加入时间:2007年5月17日
帖子:8
地点:钦奈

发布发表:2007年9月7日,星期五
引用回复

非常感谢Alissa Margulies,一切正常。

谢谢,
苏伦德拉。
回到顶部
查看用户资料 发送私信
艾丽莎·玛格丽丝(Alissa Margulies)

同步排序支持


已加入:2007年7月25日
帖子:496
地点:美国

发布发表:星期五九月07,2007 3:03上午
引用回复

迪克·谢勒(Dick scherrer)写道:
哪个Syncsort出版物有IFTHEN的文章?我下载的文档没有IFTHEN。

嗨,迪克,

适用于z / OS 1.2附录的SyncSort包含BUILD,IFTHEN,IFOUTLEN和OVERLAY参数。

如果您拥有SyncSort在线客户支持帐户,则可以下载名为“ SyncSort 1.2程序员指南Add.pdf”的文件。

问候,
回到顶部
查看用户资料 发送私信
mmt_bit

新的用户


已加入:2009年1月15日
帖子:14
地点:班加罗尔

发布发表:2011年5月4日星期三凌晨1:49
引用回复

有一个9(13)comp-3字段(7个字节长)。

我需要将其转换为S9(11)v9(2)或DB2 DECIMAL(13,2)。 (也是7个字节长)

输入:12868(X'0000000012868F')

控制语句逻辑:
1,7,PD,DIV,+ 100,LENGTH = 7

输出:1.28

所需的输出:128.68

当我除以100时,为什么除以10000?什么是正确的控制声明?
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2011年5月4日星期三凌晨2点30分
引用回复

不要将新问题标记在旧主题的末尾。

文件上的压缩十进制字段没有隐式或显式小数位。您不必转换数据。当您在代码中定义字段时,请使用小数点定义,然后一切都会好起来(从您的示例中)。

使用参数将其设置为100倍小,因为您将其除以100。请将其保留。

为什么您的字段没有符号(符号中的F代表半字节,而不是C代表正(或D代表负))?如果这是正确的,请确保将数据定义为无符号且具有两位小数。
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> JCL& VSAM

 


类似主题
话题 论坛 回覆
没有新帖 带SyncSort的数值检查。 同步排序 1
没有新帖 通过SYNCSORT,每月的最后一天。 同步排序 5
没有新帖 同步排序错误-超出控制范围... 同步排序 10
没有新帖 在...中填充日期和序列号 同步排序 11
没有新帖 在HEADER中插入系统运行时... 同步排序 9
搜索我们的论坛:

回到顶部