我试图从整数中获取10位格式值(实际格式为4位)。但是其修剪前缀为零并返回相同的值。
让我分享我的尝试。
DEFINE VARIABLE idata AS INTEGER NO-UNDO.
DEFINE VARIABLE iValue AS INTEGER NO-UNDO.
idata = 111.
iValue = INTEGER(STRING(idata, "99999999999")).
DISPLAY iValue.
我可以知道这是怎么回事吗?以及如何获得我的问题的答案?
答案 0 :(得分:4)
你想要
0000000111
要显示?
然后使用9
描述格式。它将插入0。>
将插入
DEFINE VARIABLE idata AS INTEGER NO-UNDO.
idata = 111.
DISPLAY iData FORMAT "9999999999".
或者简单地
DEFINE VARIABLE idata AS INTEGER NO-UNDO FORMAT "9999999999".
idata = 111.
DISPLAY iData.
要将其转换为前缀为零的10个字符串:
DEFINE VARIABLE idata AS INTEGER NO-UNDO.
DEFINE VARIABLE cdata AS CHARACTER NO-UNDO.
idata = 111.
cData = STRING(iData, "9999999999").
DISPLAY cData.
答案 1 :(得分:3)
DISPLAY iValue FORMAT "99999999999" .
答案 2 :(得分:3)
您的问题是存储与显示格式无关。
与SQL不同,Progress不会将两者链接在一起。这是 功能 和4gl的强度。
数据的存储取决于数据类型。对于整数,范围是:-(2 ^ 31)到((2 ^ 31)-1)
(更令人兴奋的是-在幕后,每种数据类型(包括整数)的存储长度都是 variable 长度。所用空间不足于必要。您的程序无法知道这一点,除了对正在计划磁盘空间需求的DBA而言,这没关系。
每个字段或变量都具有默认的DISPLAY格式。对于整数,默认格式为“->,>>>,>> 9”。在定义或显示字段或变量时,您始终可以覆盖此设置。它不影响数据的存储,也不以任何方式影响分配。
每种数据类型还具有EXPORT格式,该格式允许基础数据的完全精度,而无需任何其他格式字符,例如逗号,前导零,货币符号等。