Variables 如何更改正在进行的可变长度?

Variables 如何更改正在进行的可变长度?,variables,runtime,progress-4gl,cname,openedge,Variables,Runtime,Progress 4gl,Cname,Openedge,我对进步还很陌生,我想问一个问题 如何在运行时更改变量(字符串)长度 ex. define variable cname as char. define variable clen as int. cname= "". DO cnts = 1 TO 5. IF prc[cnts] <> "" THEN DO: clen = clen + LENGTH(prc[cnts]). cname = cname + prc[cnts]. END

我对进步还很陌生,我想问一个问题

如何在运行时更改变量(字符串)长度

ex.
define variable cname as char.
define variable clen as int.

cname= "".
DO cnts = 1 TO 5.
    IF prc[cnts] <> "" THEN DO:
        clen = clen + LENGTH(prc[cnts]).
        cname = cname + prc[cnts].
    END.
END.
ex。
将变量cname定义为char。
将变量clen定义为int。
cname=”“。
DO cnts=1到5。
如果prc[cnts]”,则执行以下操作:
clen=clen+长度(prc[cnts])。
cname=cname+prc[cnts]。
结束。
结束。
将cname格式“??”置于1/这里改变可变长度/


感谢您的回复

如果PUT语句是您想要更改的,那么

PUT UNFORMATTED cname.
将写出整个字符串,而不必担心格式短语的长度

如果你需要格式化的东西,那么

PUT UNFORMATTED STRING(cname, fill("X", clen)).

我会做你想做的。在ABL Ref文档中查找“STRING()”函数

正在进行4GL所有数据长度可变

这是Progress和许多其他开发环境之间的一个巨大差异。(我认为这是一个很大的优势。)

每个数据类型都有一个默认格式,您可以覆盖该格式,但仅用于显示目的

显示格式与存储无关

可以声明显示格式为3个字符的字段:

define variable x as character no-undo format "x(3)".
然后在字段中填充60个字符。进步不会抱怨

x = "123456789012345678901234567890123456789012345678901234567890".
4gl应用程序代码过度填充变量和字段是非常常见的

(如果您随后使用SQL-92访问数据,您将听到SQL客户机发出的大量抱怨和咬牙切齿的声音。这可以通过“dbtool”实用程序轻松解决。)

定义内容时可以更改显示格式:

define variable x as character no-undo format "x(30)".
或者当您使用它时:

put x format "x(15)".

(在许多其他方面——这些只是几个简单的例子。)


无论显示格式如何,length()函数都会报告数据的实际长度。

然后将其标记为答案是合适的。
display x format "x(43)".