我正在查看一段 COBOL 代码,其中包含以下行:
SET NO-FURTHER-PROCESSING-REQD TO TRUE
它还包含以下几行:
IF FURTHER-PROCESSING-REQD
...
END-IF.
是否有一些神奇的事情发生,没有“NO-”前缀的变量会自动设置为带有前缀的变量的反面?或者这更有可能是程序员的疏忽?
我正在查看一段 COBOL 代码,其中包含以下行:
SET NO-FURTHER-PROCESSING-REQD TO TRUE
它还包含以下几行:
IF FURTHER-PROCESSING-REQD
...
END-IF.
是否有一些神奇的事情发生,没有“NO-”前缀的变量会自动设置为带有前缀的变量的反面?或者这更有可能是程序员的疏忽?
不。
如果您查看 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,它具有“相反含义”的名称,并且其值与您用于阳性测试的 88 不同。
所以:
IF FURTHER-PROCESSING
do something
SET NO-FURTHER-PROCESSING TO TRUE
END-IF
现在,FURTHER-PROCESSING 在设置后不成立。
你给第二个 88 起的名字对于它的工作方式并不重要(但对于人类读者来说很重要)。重要的是它具有的 VALUE 与您使用的 88 的“真实”值不同。