【发布时间】:2011-08-18 05:42:15
【问题描述】:
我的一个 COBOL 程序中有以下代码 sn-p。
IF FIRST < SECOND
MOVE FIRST TO WS
END-IF.
MOVE SECOND TO WS.
MOVE WS TO RESULT.
我需要在 IF 块中使用 GO TO 跳转到最后一条语句(MOVE WS TO RESULT)。
IF FIRST < SECOND
MOVE FIRST TO WS
GO TO <last line.(MOVE WS to RESULT)>
END-IF.
MOVE SECOND TO WS.
MOVE WS TO RESULT.
换句话说,我需要跳过“第二次移动到 WS”。
跳转到cobol中特定行的最简单方法是什么?
我在某处读到,这可以通过定义一个 PARAGRAPH 来实现,但不知道如何定义它。
这可能看起来很简单,但我是 COBOL 编程的新手。
谢谢。
----------------* 更新 *----------
基于@lawerence 解决方案,这是正确的吗?
IF FIRST < SECOND
MOVE FIRST TO WS
GO TO C10-END.
END-IF.
MOVE SECOND TO WS.
C10-END.
MOVE WS TO RESULT.
我刚刚将最后一条语句移回第一级。
【问题讨论】:
-
我不知道 COBOL,但它允许标记语句吗?
-
缩进可能很重要,具体取决于编译器。
IF应与END-IF对齐,MOVE WS TO RESULT也应与END-IF对齐 -
引用“我需要使用 GO TO”——在过去的 30 年中,COBOL 程序员被建议不惜一切代价避免使用 GO TO。它仍然实现的唯一原因是仍然有这么多 40 年的代码。没有人需要使用 GO TO,没有人应该使用 GO TO,任何在 21 世纪编写 GO TO 代码的人都应该考虑转行。
-
@James Anderson--同意。您使用的@mohammad shamsi 不支持 IF ELSE 的 COBOL 方言有多久了?
-
问题不在于编译器缺乏对 IF/ELSE 的支持,它显然有。问题是“GO TO C10-END”结尾的句号。 -- 句号是核武器类型的范围终结符 -- 它终止所有活动范围。删除句点,更新后的代码将正常工作,ELSE 也是如此。