在 rpgle ibm 中将 .01 转换为 0.01 & -.01 为 -0.01
convert .01 to 0.01 & -.01 to -0.01 in rpgle ibm
我一直在寻找将 .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
这对所有情况都适用,但有些我不相信。不小心我注意到了一个 header 规范 DECEDIT
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-
我一直在寻找将 .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
这对所有情况都适用,但有些我不相信。不小心我注意到了一个 header 规范 DECEDIT
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-