数组 - 定义和访问

Progress 支持一维数组,但它们被称为 EXTENTS

/* Define a character array with the length 5, and display it's length */
DEFINE VARIABLE a AS CHARACTER EXTENT 5 NO-UNDO.
DISPLAY EXTENT(a).

使用标准c 型支架访问阵列中的各个位置。但索引从 1 开始。最大大小为 28000。

a[1] = "A".
a[2] = "B".
a[3] = "C".
a[4] = "D".  
a[5] = "E".

DISPLAY a[5].

结果:

StackOverflow 文档

索引 0 将生成错误:

DISPLAY a[0].

结果:

StackOverflow 文档

你还可以定义不具有设置长度的不确定数组。长度(范围)可以在运行时设置。但只有一次!

DEFINE VARIABLE a AS CHARACTER EXTENT NO-UNDO.
EXTENT(a) = 10.
EXTENT(a) = 1.

第三行将产生以下错误: StackOverflow 文档

你可以使用 DEFINE VARIABLE 语句中的 INITIAL 选项来设置初始值。

DEFINE VARIABLE a AS CHARACTER EXTENT 3 INITIAL ["one","two","three"] NO-UNDO.
/* Some statements (like DISPLAY) can handle a whole array: */
DISPLAY a.

结果:

StackOverflow 文档

如果未设置所有范围,则剩余的将获得最后设置的值:

DEFINE VARIABLE a AS CHARACTER EXTENT 10 INITIAL ["one","two","three"] NO-UNDO.
DISPLAY a.

结果:

StackOverflow 文档