B 的值将是 2。总是,每次,无论 PERFORM 中发生什么,也不管 RETKD。
IF 由第一个句号/句号终止,“下一个句子”将“转到”紧跟该句号/句号的行。
Cobol 中的 EXIT 什么都不做。没有什么。没有什么。从代码中可以看出作者(我假设您已经选择了一个用于“维护”的程序)期望 EXIT 实际执行某些操作。它没有。它是一个“无操作”动词,如 CONTINUE。
这“似乎”是一种逻辑类型(显然可以用不同的方式编写),从缩进和假设代码感觉 EXIT 做了一些事情(否则 IF 本身毫无意义,如下面的 NealB 代码所示) )。
IF ( A EQUAL TO B )
AND ( A EQUAL TO C )
PERFORM SOMETHING THRU SOMETHING-END
IF RETKD NOT EQUAL TO ZERO
MOVE 2 TO B
ELSE
CONTINUE
ELSE
MOVE 2 TO B
END-IF
.
正如 NealB 所评论的,这就是程序正在做的事情:
IF (A = B) AND (A NOT = C)
PERFORM SOMETHING THRU SOMETHING-END
END-IF
MOVE 2 TO B
CONTINUE 和 EXIT 是等价的,实际上是可以互换的(虽然我不推荐它,因为有些人在某些代码中间看到 EXIT,往往认为它做了一些事情,不是吗?)。
对于新代码,请不要使用 NEXT SENTENCE 并且不要使用句号/句点来终止条件。对前者使用 CONTINUE,对后者使用“范围终止符”(END-IF、END-EVALUATE、END-PERFORM 等)。
试试这段代码来了解继续/退出做什么(什么都不做)。
IF A EQUAL TO B
CONTINUE
MOVE 2 TO A
ELSE
IF A EQUAL TO C
CONTINUE
MOVE 3 TO A
ELSE
do something
END-IF
CONTINUE
MOVE 4 TO C
END-IF
A = 1 B = 1 C = 1
使用上述值,A 最后的值为 2,C 的值为 1。
A = 1 B = 不是 1 C = 1
现在 A 为 3,C 为 4。
A = 1 B = 非 1 C = 非 1
现在 A 为 1,C 为 4。
然后将所有 CONTINUE 更改为 EXIT 并注意结果。