在 RPGLE IBM 中将 .01 转换为 0.01 和 -.01 到 -0.01



我正在寻找转换.01或-.01至0.01或-0.01的最佳方法。当我想将小数转换为字符时,这是需要的。

使用Editw和Editc进行了很多搜索后,我最终获得了以下代码。

D Sales         S              9S 2
D Net_Sales     S             10A
// Sales variable may contain positive or negative amount
If  Sales >= 0
   Net_Sales = %Trim(%Xlate(' ':'0': %EditC(Sales:'3'):7)) ;
Else
   Net_Sales = '-' + %Trim(%Xlate(' ':'0': %EditC(Sales:'3'):7)) 
EndIf

这对所有情况都很好,但是有些我没有说服。偶然地,我注意到了标题规格DEDIT

H DECEDIT('0.')

这是我的最佳选择,还是我们还有其他任何东西?

预先感谢您的帮助!

如果要在小数前打印零,并且浮动符号,则需要使用ctl-opt decedit('0.')。这是一些比较%char()%editc()%editw()的样本:

   dcl-s value1        Zoned(7:2) Inz(.01);
   dcl-s value2        Zoned(7:2) Inz(-.01);
   dcl-s output        Char(10) Inz('');
   output = %char(value1);
   dsply output;
   output = %char(value2);
   dsply output;
   output = %editc(value1:'N');
   dsply output;
   output = %editc(value2:'N');
   dsply output;
   output = %editw(value1:'  , 0 .  -');
   dsply output;
   output = %editw(value2:'  , 0 .  -');
   dsply output;
   return;

使用ctl-opt decedit('0.');编译时,输出为:

DSPLY  0.01        
DSPLY  -0.01       
DSPLY        0.01  
DSPLY       -0.01  
DSPLY       0.01   
DSPLY       0.01-  

ctl-opt decedit('0.');编译时,输出为:

DSPLY  .01        
DSPLY  -.01       
DSPLY         .01  
DSPLY        -.01  
DSPLY       0.01   
DSPLY       0.01-  

相关内容

  • 没有找到相关文章

最新更新