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.
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.