我正在查看一段包含以下行的COBOL代码:
SET NO-FURTHER-PROCESSING-REQD TO TRUE
它还包含以下几行:
IF FURTHER-PROCESSING-REQD
...
END-IF.
是否有一些神奇的事情,没有“NO-”前缀的变量会自动设置为带有前缀的变量的反面?或者这更可能是程序员的疏忽?
答案 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的价值。