我一直在搜索s9(5)v99,但是得到了不同的信息,并且不是很清楚。有没有人能展示一下如何转换或转换公式。谢谢
发布于 2010-07-16 04:36:34
这里向我们展示的是COBOL声明的PICTURE子句部分。
COBOL数据声明有点奇怪,需要一些时间来适应。这里有一个关于COBOL data declarations的入门教程的链接。这应该可以让你开始学习了。
您在问题中给出的PICture子句定义了一个具有以下特征的数值项:
S -前导sign9(5) -5小数digitsV -隐含小数point99 -隐含小数点后的2位数字基本上,您是在告诉COBOL编译器定义一个能够保存值-99999.99到+99999.99的数值变量。编译器将如何实现此请求取决于特定的USAGE子句。然而,对于包含固定小数位置的数字项,“正常”用法是PACKED-DECIMAL或COMP-3 (它们只是表示相同事物的不同名称)。这个link提供了一些关于压缩十进制数据的存储表示的介绍性信息。
压缩的小数数据对于进行小数点数必须保持不变的数值计算很有用。
将打包的十进制数据写入报表或终端的效果不是特别好。您必须首先将其转换为DISPLAY可执行格式。这涉及到将打包的十进制值MOVE到另一个具有USAGE DISPLAY属性的变量。假设您的打包十进制变量名为PACKED-DECIMAL-NBR,其值为-2345.01。您可以定义一个显示变量来保存它,如下所示:
01 DISPLAY-NBR PIC +++,++9.99.然后,当需要编写/显示PACKED-DECIMAL-NBR中包含的值时,您可以这样做:
MOVE PACKED-DECIMAL-NBR TO DISPLAY-NBR
DISPLAY DISPLAY-NBRMOVE将压缩十进制数转换为字符表示形式,您可以将其显示在报告中或终端上。将显示值-2,345.01。
发布于 2013-01-29 06:54:50
cobol中的S是有符号数字字段的定义(即可以是正数也可以是负数)。例如,S999是一个带符号的3位数字(二进制)。问题是假设为S,并且在大多数cobol编译器中,标记符号的方式是通过用另一个字符来表示加号或减号来“过度冲压”最后一个字符。这样的结果是,如果你在ascii浏览器中查看字段,你会得到一个奇怪的字符。即。- 500将看起来像50C或50},这取决于底层字符,以及它是否是过度冲压的+或-。
发布于 2010-07-16 00:40:41
PIC S9(5)v99不是数字格式。它描述了数据是如何存储的,以及它在那里的含义。例如,存储为"-0010000“的数字表示-100.00。
你到底想要达到什么目的?您是否正在尝试将decimal -100.00发送到COBOL程序?
PIC -99,999.00是一种数字格式。它指定如果数字为负数,则使用前导减号,在小数位前使用五位数,在千位数之间使用逗号,小数点,然后恰好在两位数之后。存储在PIC S9(5)V99字段中的数字可以合理地移动到PIC -99,999.00字段。
https://stackoverflow.com/questions/3257771
复制相似问题