COBOL 的 EVALUATE:如何有一个空的 WHEN OTHER 子句?

COBOL's EVALUATE: How to have an empty WHEN OTHER clause?

EVALUATE MyValue
WHEN 1
    DISPLAY "My value is 1"
WHEN 2
    DISPLAY "My value is 2"
WHEN OTHER
* Actually I don't need to do anything
END-EVALUATE

我想在某处读到 COBOL 应用程序会因 EVALUATE 而崩溃,其中 WHEN 子句不包含评估变量的值,如果没有 WHEN OTHER 陈述存在。所以,为了避免崩溃,我想添加这个空WHEN OTHER

在什么情况下需要这样做,如果需要,这种做法是否正确?

Under which circumstances is this necessary ...

在我所知道的每个 COBOL 环境中都没有(可能 是 "some");并且对于任何 COBOL 85/2002/2014/未来的编译器都不是必需的。

... and if so, is this approach correct?

不,实际上 COBOL 85/2002/2014/future-compliant 编译器会因为缺少命令式语句而引发错误(有些编译器允许这样做 "extension" [我会说这是一个错误],有些人至少发出警告,有些人保持沉默)。
如果有一些 "really strange reasons" 总是包含 WHEN OTHER:使用(几乎无操作)语句 CONTINUE as "statement".

Under which circumstances is this necessary

如果编译器配置为在缺少 when other 语句时中止,则绝对有必要。 ;-)

否则,我认为编写 when other 语句是一种很好的做法,即使它只需要 continue.

您的代码应如下所示:

EVALUATE MyValue
WHEN 1
    DISPLAY "My value is 1"
WHEN 2
    DISPLAY "My value is 2"
WHEN OTHER
    CONTINUE
END-EVALUATE.