RPGLE中固定小数的形成



我一直在尝试在RPG中为固定精度的小数进行小数到字符串的转换,但我找不到处理该任务的BIF。在这种情况下,我想要的精确输出格式是左对齐的,没有前导或尾随零:

0010.010 -> '10.01     '

当然,我知道如何通过字符串操作自己做到这一点,这不是重点。这个问题必须有一个简单的内置解决方案。把它放在某种代码中:

Dnum              S              7S03             
Ds                S             10A               
 /free                                            
   num = 010.010;                                 
   s = %char(num);                                
   dsply s ;                                      
 /end-free                       

由此得到CCD_ 1。我想要'10.01 '%char有一个可选参数format,IBM很有帮助地告诉您,它用于日期和时间值。

我试着摆弄%editc%editw,但没有成功。不知怎的,%editw的editword语法对我来说很难理解(即使谷歌也不相信我想使用BIF,它一直告诉我,我真正想要的是搜索%editc)。如果我让%editw编译,我甚至无法说服它添加小数点。

我尝试了格式为"A"-"D"、"J"-"Q"、"X"-"Z"、"1"-"9"的'10.010 '0。8和9不编译,其他两个都没有给我想要的。

要清楚。我不想写我自己的函数来实现这一点。我不想调用像sprintf这样的C函数,我正在寻找一个简单的RPGLE解决方案。如果没有——那么就没有,但我想知道。对于报表生成语言来说,这似乎是一项足够简单的任务。

怎么样:

   num = 010.010;                                 
   s = %trimr(%char(num):'0');                                
   dsply s ;

要扩展Charles的解决方案,如果需要9999.000看起来像9999(即需要逗号),则需要一个编辑代码。

num = 9999.000;
s = %trimr(%trim(%trim(%editc(num: 'B')):'0':'.');
dsply s;

相关内容

  • 没有找到相关文章

最新更新