PROGRESS 4GL - IF 条件是否支持维数组?

Bha*_*rat 0 progress-4gl openedge

我是 4GL 语言的新手。我编写了一个逻辑,试图检查维数组的 <> "" 值并给出语法错误。谁能帮我解决我犯错误的地方以及我写的逻辑是否正确?

DEFINE VARIABLE anotarray AS CHARACTER NO-UNDO.
DEFINE VARIABLE barray AS CHARACTER EXTENT 3 NO-UNDO.

ASSIGN
barray[1] = "yes"
barray[2] = "no"
anotarray = ""
.
/***value can be stored randomly in variable barray. so we cannot specify [1],[2],[3] for if condition***/
/***based on req. I need to check both anotarray or barray <> "" ***/

IF (anotarray OR  barray ) <> "" THEN  DISP barray.

/*** ERROR thrown- An array was specified in an expression, on the right-hand side of an assignment, or as a parameter when no array is appropriate or expected. (361)*** /
Run Code Online (Sandbox Code Playgroud)

Tom*_*Tom 5

此语法无效:IF (anotarray OR barray) <> "" THEN ...

您必须循环遍历数组的所有元素。DO您可以使用语句函数来完成此操作EXTENT来完成此操作。

另外,您必须将两个变量与空字符串进行比较:IF anotarray <> "" OR barray[ix] <> "" THEN ...

这段代码应该可以工作:

DEFINE VARIABLE anotarray AS CHARACTER NO-UNDO.
DEFINE VARIABLE barray AS CHARACTER EXTENT 3 NO-UNDO.
DEFINE VARIABLE ix AS INTEGER     NO-UNDO.

ASSIGN
barray[1] = "yes"
barray[2] = "no"
anotarray = ""
.

DO ix = 1 TO EXTENT(barray):
  IF barray[ix] <> "" OR anotarray <> "" THEN DISP barray[ix].
END.
Run Code Online (Sandbox Code Playgroud)