如何在进度 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".
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".