Progress 4gl 进度if语句

Progress 4gl 进度if语句,progress-4gl,openedge,Progress 4gl,Openedge,我是一个进步能手,实际上在基本积木方面有问题 下面这个问题在我的if-else声明中。当它只是if,then,else-then时,它工作得很好,但是当我想在if部分中放入多个语句时,我必须将它放入一个块中,所以我使用if,then-do:else,then-do:但是这些语句对我不起作用。你能看到任何明显的错误吗?我的错误消息是**冒号后跟空格终止语句。(199) 从“r:\\u content\stephen\4gl apps\dpl\output.csv”输入。 重复: 分配i_cntr=

我是一个进步能手,实际上在基本积木方面有问题

下面这个问题在我的if-else声明中。当它只是if,then,else-then时,它工作得很好,但是当我想在if部分中放入多个语句时,我必须将它放入一个块中,所以我使用if,then-do:else,then-do:但是这些语句对我不起作用。你能看到任何明显的错误吗?我的错误消息是**冒号后跟空格终止语句。(199)

从“r:\\u content\stephen\4gl apps\dpl\output.csv”输入。
重复:
分配i_cntr=(i_cntr+1)。
myRow=”“。
导入分隔符“,”myRow。
如果myRow[5]”,请执行以下操作:
/*将此更改为分配2行-2创建-2组四行*/
c_fname=myRow[1]。
消息
c_fname跳过
myRow[2]跳过
myRow[3]跳过
myRow[4]跳过
myRow[5]跳过
我
查看为警报框信息按钮确定。
结束。/*如果结束,则执行以下操作:*/
否则,如果myRow[5]=“”则执行以下操作:
消息
myRow[1]跳过
myRow[2]跳过
myRow[3]跳过
myRow[4]跳过
我
查看为警报框信息按钮确定。
结束。/*如果结束,则执行:**
结束。/*重复结束*/

与其使用嵌套的IF/ELSE,不如使用如下CASE语句:

CASE varname:
WHEN ""      THEN DO: /*something */ END.
WHEN "value" THEN DO: /*something */ END.
OTHERWISE         DO: /*something */ END.
END CASE.

有关更多详细信息,请查看此对账单上的文档

一个非常简单的语法错误:END语句后至少需要一个空格

END. /*end of if, then do:*/
/*  ^ Make sure there's space above here! */
IF expression1 THEN DO:
  /* Code goes here */
END.
ELSE IF expression2 THEN DO:
  /* Code goes here */
END.
ELSE DO:
  /* Code goes here */
END.
如果您不想遵循Tims中的建议,请回答(用例)。这是IF语句的“完整”语法

END. /*end of if, then do:*/
/*  ^ Make sure there's space above here! */
IF expression1 THEN DO:
  /* Code goes here */
END.
ELSE IF expression2 THEN DO:
  /* Code goes here */
END.
ELSE DO:
  /* Code goes here */
END.
表达方式:

值为逻辑值(TRUE或FALSE)的常量、字段名、变量名或表达式。表达式可以包括比较、逻辑运算符和括号

您也可以省略DO:END。当要执行的IF代码仅包含一条语句时:

IF TRUE THEN DISPLAY "TRUE".
ELSE DISPLAY "NOT TRUE".

您也可以使用其他块语句(例如FOR或REPEAT),但这很可能只会创建难以读取的代码

我解决了这个问题。这不是由编码错误引起的。显然,Progress不喜欢注释过于接近代码,这导致它抛出错误

END. /*end of if, then do:*/ => This is ok.
END./*end of if, then do:*/ => This caused the issue comments too close to statement.

感谢Tim Kuehn的回答。

不止一个,然后是用例,争论结束:-Dasking问题是我们如何学习:)一个好办法是进行语法检查,它应该已经为您强调了一个问题-在“结束”之后会说一些无法理解的话,您也不需要(如果myRow[5]=”那么)在ELSE和DO之间:因为只有2个选项和=:-)