进度ABL格式十进制数,不带前导字符

时间:2017-04-13 10:53:56

标签: csv number-formatting progress-4gl openedge

我只想格式化十进制数,以便输出到简单的CSV格式文件。 我觉得我很愚蠢,但是我找不到一种方法来做到这一点而不会引导零或空格,当然我可以简单地修剪前导空格,但必须有一种正确的方式来格式化就像我那样,不是吗?

实施例

define variable test as decimal.
define variable testString as character.
test = 12.3456.
testString = string(test, '>>>>>9.99').
message '"' + testString + '"' view-as alert-box. /* "    12.35" */

我尝试使用>>>>>9.99zzzzz9.99作为数字格式,但两者都使用前导空格格式化字符串。我实际上不知道使用>z之间有什么区别。

2 个答案:

答案 0 :(得分:1)

SUBSTITUTE()函数将执行您想要的操作:

define variable c as character no-undo.
c = substitute( "&1", 1.23 ).
display "[" + c + "]".

(如果你真的只想要2个小数位,则输入TRUNCATE(1.2345,2)。)

实际上,这也有效:

string( truncate( 1.2345, 2 )).

如果您要创建CSV文件,可能需要考虑使用EXPORT。 EXPORT格式删除前导空格并省略","等装饰。 SUBSTITUTE()函数基本上使用EXPORT格式进行替换。当没有指定其他格式时,STRING()函数使用EXPORT格式。

答案 1 :(得分:1)

EXPORT语句将为您格式化数据。这是一个例子:

DEFINE VARIABLE test AS DECIMAL NO-UNDO.
DEFINE VARIABLE testRound AS DECIMAL NO-UNDO.
DEFINE VARIABLE testString AS CHARACTER NO-UNDO.

test = 12.3456.
testRound = ROUND(test, 2).
testString = STRING(test).

OUTPUT TO VALUE("test.csv").
EXPORT DELIMITER "," test testRound testString.
OUTPUT CLOSE.

这是输出:

12.3456,12.35,"12.3456"

EXPORT语句的默认分隔符是一个空格,因此您必须为CSV文件指定逗号。由于testtestRound变量是小数,因此它们不在输出中的引号中。 testString是字符,因此它在引号中。