如何以整数格式获取 10 位数字的值?

How to get 10 digit value in integer format?

我试图从整数中获取 10 位格式的值(实际格式是 4 位)。但其修剪前缀零与return 的值相同。

让我分享一下我的尝试。

DEFINE VARIABLE idata AS INTEGER NO-UNDO.
DEFINE VARIABLE iValue AS INTEGER NO-UNDO.

idata = 111.

iValue = INTEGER(STRING(idata, "99999999999")).

DISPLAY iValue.

我可以知道这里出了什么问题吗?以及如何获得我的问题的答案?

你要吗

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.
DISPLAY iValue FORMAT "99999999999" .

您的问题是存储与显示格式无关。

不像SQL,Progress不会link把两者放在一起。这是4gl的特点和强项

数据的存储取决于数据类型。对于整数,范围是从:-(2^31) 到 ((2^31) - 1)

(更令人兴奋的是 - 在每种数据类型(包括整数)的引擎盖下存储都是 可变 长度。不使用更多的 space是必要的。您的程序无法知道这一点,这真的无关紧要,除非是计划磁盘 space 要求的 DBA。)

每个字段或变量也有默认的 DISPLAY 格式。对于整数,默认格式为“->,>>>,>>9”。当您定义或显示字段或变量时,您始终可以覆盖它。它对数据的存储没有影响,也不会以任何方式影响分配。

每种数据类型都有 EXPORT 格式,它允许基础数据的完全精确,而无需任何额外的格式字符,如逗号、前导零、货币符号等。