【发布时间】:2015-10-30 16:00:45
【问题描述】:
我一直在尝试在 RPG 中进行十进制到字符串的转换以获得固定精度的十进制,但我找不到 BIF 来处理该任务。在这种情况下,我想要的精确输出格式是左对齐,没有前导零或尾随零:
0010.010 -> '10.01 '
当然,我自己知道如何通过字符串操作来做到这一点,这不是重点。这个问题必须有一个简单的内置解决方案。把它放在一些代码中:
Dnum S 7S03
Ds S 10A
/free
num = 010.010;
s = %char(num);
dsply s ;
/end-free
这给出了'10.010 '。我想要'10.01 '。 %char 有一个可选参数 format,IBM 有助于告诉您,它用于日期和时间值。
我尝试过使用%editc 和%editw,但没有取得多大成功。不知何故,%editw 的编辑字语法对我来说是无法理解的(甚至谷歌也拒绝相信我想使用那个 BIF,它一直告诉我我真正想要的是搜索 %editc)。如果我得到%editw 来编译,我什至无法说服它添加小数点。
我尝试%editc 使用格式“A”-“D”、“J”-“Q”、“X”-“Z”、“1”-“9”。
8 和 9 不编译,其他的都没有给我,我想要的。
要清楚。我不想编写自己的函数来做到这一点。我不想调用 C 函数,例如 sprintf,我正在寻找一个简单的 RPGLE 解决方案。如果没有 - 那么没有,但我想知道。在报告生成语言中似乎是一项足够简单的任务。
【问题讨论】:
-
下面应该如何显示? 0.010 & 0.100 & .104 & .105
-
@Charles 在我的例子中:
0.01、0.1、0.104、0.105第一个数字前没有任何空格。
标签: ibm-midrange rpgle rpg