COBOL&x27;s EVALUATE:当其他子句为空时,如何使其为空?

COBOL&x27;s EVALUATE:当其他子句为空时,如何使其为空?,cobol,Cobol,我想我在某个地方读到过,如果没有而存在其他语句,那么当WHEN子句没有覆盖被求值变量的值时,COBOL应用程序将因求值而崩溃。因此,为了避免崩溃,我想在其他时添加这个空的 在什么情况下有必要这样做?如果有,这种方法正确吗 在什么情况下这是必要的 在任何情况下,对于我所知道的每个COBOL环境(可能是“一些”);并且对于任何COBOL85/2002/2014/future编译器都不是必需的 。。。如果是,这种方法正确吗 不,实际上COBOL 85/2002/2014/future兼容编译器会因为缺

我想我在某个地方读到过,如果没有
而存在其他
语句,那么当
WHEN
子句没有覆盖被求值变量的值时,COBOL应用程序将因
求值
而崩溃。因此,为了避免崩溃,我想在其他
时添加这个空的


在什么情况下有必要这样做?如果有,这种方法正确吗

在什么情况下这是必要的

在任何情况下,对于我所知道的每个COBOL环境(可能是“一些”);并且对于任何COBOL85/2002/2014/future编译器都不是必需的

。。。如果是,这种方法正确吗

不,实际上COBOL 85/2002/2014/future兼容编译器会因为缺少命令语句而引发错误(有些编译器允许将其作为“扩展”[我认为这是一个bug],有些编译器至少会发出警告,有些编译器保持沉默)。
如果有一些“非常奇怪的原因”总是包含
,而其他
:使用(几乎没有op)语句
继续
作为“语句”

在什么情况下需要这样做

如果编译器配置为在缺少其他
语句时中止
,则这是绝对必要的。;-)


否则,在我看来,当其他
语句出现时编程一个
,即使只需要一个
继续
语句,也是一个很好的做法。您的代码应该如下所示:

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

根据我们都读过的文档,另一个是可选的。如果要对WHEN OTHER子句进行编码,CONTINUE可以用作占位符。这不是必需的,但最好在计算时对WHEN OTHER进行编码。它让代码的读者知道您显式选择处理或忽略哪些条件,而不仅仅是您记得处理的条件。@JimCastro“这对一些人来说是好的做法,对其他人来说是坏的做法——按照团队的规则去做,如果没有规则的话:按照你调整的程序去做,保持简洁;如果它是新的:下定决心”。谢谢你,我需要确认这个疑问。你能详细说明实际上可以配置的任何编译器(配置)吗?
WHEN OTHER
子句需要编码吗?
EVALUATE MyValue
WHEN 1
    DISPLAY "My value is 1"
WHEN 2
    DISPLAY "My value is 2"
WHEN OTHER
    CONTINUE
END-EVALUATE.