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

问题描述 投票:0回答:2

我写了一个查询,将字符显示为十进制值,但是我收到了一个错误。让我分享一下:

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”显示值。

你能帮忙解决这个案子并告诉我这里有什么问题吗?

openedge progress-4gl
2个回答
5
投票

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

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

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

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

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

注意:显示格式不会影响您可以存储在字段中的值。您可以随时“过度”将更多数据添加到变量中,而不是显示。该格式仅用于输出显示 - 它与存储无关。


3
投票

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

所以......

DISPLAY tt_data.DateTime.

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

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

DISPLAY tt_data.DateTime FORMAT "99999999999999".
© www.soinside.com 2019 - 2024. All rights reserved.