RPGLE中的小数点问题为400

问题描述 投票:0回答:1

如何在我的输出文件中得到0,142而不是,142?QDECFMT被设置为2,我的H规格有decedit('0,'),但仍然不能得到左边的零。enter image description here

ibm-midrange rpgle
1个回答
0
投票

假设您使用DDS来描述打印机文件,请查看IBM文档中有关EDTCDE和EDTWRD的内容。打印机文件.


0
投票

通常在RPG中解决数字格式的简单方法是使用定义的编辑代码或自定义编辑字,但我认为在你的情况下,它们不会单独工作。没有系统定义的编辑代码与你所需的格式相匹配,而且看起来像自定义编辑字总是删除前导零。文档例子.

你在评论中说,你使用的是 WRITE 操作来写入spooled输出文件。你将不得不进行字符串操作来实现你想要的东西。我想有几种方法可以做到这一点。你可以使用函数%editc(value:'X')给你一个格式为'0847'的字符串,然后使用%subst把它切开,自己插入','。你可以用 1000 除以整数 (%int 或 %dec),然后从原来的数字中减去,再将这两个数字转换为字符串,中间加一个 ','。无论哪种方式,你都得自己写,因为基本的语言设施并不能按照你想要的方式进行格式化。

无论你的spooled文件是用DDS外部描述的,还是用O-specs描述的程序,都会发生同样的事情。 无论哪种方式,我都会把字段变成一个字符串,而不是一个数字,然后手动格式化它。


0
投票

这个 decedit 在RPG中的设置对DB中的数值没有任何影响,对SQL查询工具如何显示数据也没有任何影响。

它对SQL查询工具如何显示数据也没有影响。

无论是绿屏的STRSQL还是GUI运行SQL脚本工具,我都没有找到在数字字段上显示前导零的选项。

相信DB,数值是正确的。

如果你真的想看到它,你需要将数值转换为字符,用 varchar_format() 职能。

select varchar_format(dec(.95,5,2), '000.00') 
from sysibm.sysdummy1                         
© www.soinside.com 2019 - 2024. All rights reserved.