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

时间:2019-04-19 08:10:07

标签: openedge 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 */

但是它说:

“无法使用->>>,>>>,>> 9.999999显示值”。

您能帮忙解决这个问题,并告诉我这里有什么问题吗?

2 个答案:

答案 0 :(得分:4)

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

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

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

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

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

注意:显示格式对您可以存储在字段中的值没有影响。您总是可以将超出显示范围的更多数据“超载”到变量中。该格式仅用于输出显示目的-与存储无关。

答案 1 :(得分:3)

分配工作正常,但是显示却不正常。

所以...

DISPLAY tt_data.DateTime.

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

您可以在定义中更改格式,例如“ 99999999999999”,或执行以下操作:

DISPLAY tt_data.DateTime FORMAT "99999999999999".