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

二进制转换为十进制-所需的字节数。


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

新的用户


已加入:2008年7月18日
帖子:59
地点:班加罗尔

发布发表:2011年9月21日,星期三,晚上8:55
引用回复

你好

我有一个关于将带符号的二进制数据转换为分区小数格式时所需的字节数的问题。

1>S9(4)USAGE COMP占用2个字节,但是当转换为Decimal格式时,它将占用4个字节或5个字节。
2>S9(9)USAGE COMP占用4个字节,但是当转换为Decimal格式时,它将占用9个字节或10个字节。
3>S9(18)USAGE COMP占用8个字节,但是当转换为十进制格式时,它将占用18个字节或19个字节。
回到顶部
查看用户资料 发送私信
尼克·克劳斯顿

全球主持人


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

发布发表:2011年9月21日,星期三,晚上8:57
引用回复

我们在说什么呢? COBOL? JCL? 同步排序?普通的旧二进制到十进制转换?或者是什么?

现在,我看到它已移至论坛的另一部分,但我们仍然需要了解上下文。
回到顶部
查看用户资料 发送私信
dbzTHEdinosauer

全球主持人


已加入:2006年10月20日
帖子:6967
位置:瓷宝座

发布发表:2011年9月21日,星期三,9:12 pm
引用回复

你为什么不看 这里 看看你是否有主意。
回到顶部
查看用户资料 发送私信
罗伯特·桑普

全球主持人


已加入:2008年6月6日
帖子:8569
地点:美国爱荷华州迪比克

发布发表:2011年9月21日,星期三,9:15 pm
引用回复

除非您指定编译器选项TRUNC使用的内容,否则无法完全准确地回答您的问题。通常,将5字节用于2字节二进制(COMP)值的分区十进制转换,将10字节用于4字节二进制(COMP)值的分区十进制转换不会出错。

此页顶部有一个指向手册的链接。点击它,找到COBOL 应用程序编程指南, 并阅读TRUNC编译器选项。完成此操作后,希望您可以自己回答PIC S9(18)COMP问题。
回到顶部
查看用户资料 发送私信
Mushreyas

新的用户


已加入:2008年7月18日
帖子:59
地点:班加罗尔

发布发表:2011年9月21日,星期三,9:38 pm
引用回复

我的要求是使用SYNCSORT将这些带符号的二进制数据转换为十进制格式。
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


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

发布发表:2011年9月21日,星期三,9:43 pm
引用回复

您好,

好的,因此请遵循罗伯特的指导并使用适当的长度。

转换后的字段的长度与“语言”无关。 。 。因此,COBOL程序中的目标长度将与排序控件中指定的“区域十进制”长度相同。
回到顶部
查看用户资料 发送私信
Mushreyas

新的用户


已加入:2008年7月18日
帖子:59
地点:班加罗尔

发布发表:2011年9月22日,星期四,9:30 pm
引用回复

我尝试了罗伯特的建议,但是数据的最后一个字节出错了。以下是示例

输入数据:1(二进制)

排序卡

码:
排序字段=复制
 INREC =(1,2,BI,ZD,LENGTH=5)

输出是0000A而不是00001。
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2011年9月22日,星期四,9:37 pm
引用回复

您的输入已签名。您的输出(十进制分区)已签名。您的十六进制输出看起来像这样

码:
F0F0F0F0C1


是+ ve一。
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


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

发布发表:2011年9月22日,星期四,晚上10:53
引用回复

您好,

引用:
但是数据的最后一个字节出错。
最后一个字节是告诉排序的内容。

要消除该标志,请使用ZDF。从手册中:
引用:
ZDF产生与ZD相同的数值,但使用F表示正号,使用D表示负号。
回到顶部
查看用户资料 发送私信
阿努·达万(Anuj Dhawan)

高级会员


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

发布发表:2011年9月23日星期五下午4:00
引用回复

穆什里亚斯写道:
码:
排序字段=复制
 INREC =(1,2,BI,ZD,LENGTH=5)
输出是0000A而不是00001。
这是正确的输出。您是否希望将“可读”格式的输出输出给某些MBA毕业生。对于(n)zOS Aplication Developer,这已经是 可读的,如Bill所解释。按照Dick的建议,“它将为+1”:

码:
A
C
1
码:
1
F
1
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2011年9月23日,星期五,下午6:42
引用回复

引用:
我的要求是使用SYNCSORT将这些带符号的二进制数据转换为十进制格式。


旅行主题的故事 icon_biggrin.gif
搬到了它所属的地方
回到顶部
查看用户资料 发送私信
Mushreyas

新的用户


已加入:2008年7月18日
帖子:59
地点:班加罗尔

发布发表:2011年9月25日,星期日10:07
引用回复

感谢大家的帮助。我将尝试Dick推荐的解决方案。但是我尝试了下面的分类卡,它的工作。

码:
排序字段=复制
INREC =(1,2,BI,EDIT(TTTTT),LENGTH=5)
       
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


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

发布发表:2011年9月25日,星期日,下午1:57
引用回复

切尔

请记住,您最初向我们展示了Cobol样式的带符号二进制字段。由于您不愿向我们展示已签名的字段。我们假设您的字段可以包含负值。

因此,您的解决方案应允许区分正数和负数。

狄克(Dick)向您展示了如何做到这一点,而正数似乎在最右边不包含字母,并且对您提供给我们的特定分类卡进行了修改。

如果您的字段可以包含负值,那么您的测试数据也应该包含。您应该能够从结果中识别出阴性和阳性。

有许多解决方案可以满足您的需求。查看您的“排序”手册,并查看可以与BI一起使用的其他数据类型。

最后,以上内容确实是您的工作分类卡吗? “ INREC =(”看起来不对。您是否重新输入了错字,而不是使用复制粘贴?
回到顶部
查看用户资料 发送私信
Mushreyas

新的用户


已加入:2008年7月18日
帖子:59
地点:班加罗尔

发布发表:2011年9月25日,星期日,下午5:23
引用回复

嗨,比尔,

它实际上是一个错字错误。它应该是“ INREC FIELDS =“。
感谢您提供明确的信息。
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> JCL& VSAM

 


类似主题
话题 论坛 回覆
没有新帖 使用SORT进行日期转换 同步排序 4
没有新帖 如何覆盖压缩的十进制值... DFSORT / ICETOOL 5
该主题已锁定:您无法编辑帖子或回复。 写字符到十六进制文件中... COBOL程式设计 8
没有新帖 日期转换Y2T到Y2W 同步排序 8
没有新帖 日期格式转换 DFSORT / ICETOOL 4
搜索我们的论坛:


回到顶部