“NO”的前缀在COBOL变量中是否有任何特殊含义?

时间:2013-09-10 14:33:06

标签: cobol

我正在查看一段包含以下行的COBOL代码:

SET NO-FURTHER-PROCESSING-REQD TO TRUE

它还包含以下几行:

IF  FURTHER-PROCESSING-REQD
...
END-IF.

是否有一些神奇的事情,没有“NO-”前缀的变量会自动设置为带有前缀的变量的反面?或者这更可能是程序员的疏忽?

1 个答案:

答案 0 :(得分:9)

没有。

如果你查看DATA DIVISION,你会在同一个数据项下找到两个88级。

01  A-FLAG PIC X.
    88  FURTHER-PROCESSING VALUE "Y".
    88  NO-FURTHER-PROCESSING VALUE "N".

88允许您使用名称测试字段的值,而不仅仅是文字。

在大多数COBOL中,你不能将88设置为FALSE。因此,如果使用SET,通常所做的是制作第二个88,其具有相反的含义" name,其值与您用于阳性测试的88不同。

所以:

IF FURTHER-PROCESSING
    do something
    SET NO-FURTHER-PROCESSING TO TRUE
END-IF

现在,在集合之后,进一步处理是不正确的。

你给第二个88的名字对它的工作原理并不重要(但对于人类读者来说很重要)。重要的是,它所拥有的价值不同于"真相"你正在使用的88的价值。