如何在进度 4GL 上将字符转换为十进制?

How to converts a character to decimal on progress 4GL?

DEFINE VARIABLE cDateTime AS CHARACTER NO-UNDO.

DEFINE TEMP-TABLE tt_data NO-UNDO
    FIELD DateTime   AS DECIMAL FORMAT "->>,>>9.99".

ASSIGN
cDateTime = "20191604121566".

CREATE tt_data.
ASSIGN
tt_data.DateTime = DECIMAL(cDateTime) /* Message Date and Time */

但是它说:

"Value cannot be displayed using ->>>,>>>,>>9.999999".

你能帮忙解决这个问题并告诉我这里出了什么问题吗?

您显示的代码不会导致您报告的错误。

我猜你的真实代码中某处有一个 DISPLAY 语句。

报告的错误仅表示 DISPLAY 格式对于数据而言不够宽。默认情况下,DISPLAY 将使用您在数据元素定义中指定的任何格式。如果您没有指定任何内容,那么每个数据类型也都有一个默认值。对于小数,默认值为“->>,>>>.99”。

您可以在定义中增加格式或在显示语句中覆盖它,如下所示:

display tt_data.DateTime format ">>>>>>>>>>>>>>>9". 

注意:显示格式对您可以在字段中存储的值没有影响。您总是可以 "overstuff" 向变量中输入比您可以显示的更多的数据。该格式仅用于输出显示目的 -- 它与存储无关。

作业正常,但显示不正常。

所以...

DISPLAY tt_data.DateTime.

... 不起作用,因为它使用格式“->>,>>9.99”。

您可以更改定义中的格式,例如“99999999999999”,或者:

DISPLAY tt_data.DateTime FORMAT "99999999999999".