COBOL中SECTION内指令末尾句点的作用及两段代码差异问询
COBOL中SELECT SECTION语句末尾句点的影响及两段代码的区别
在COBOL里,句点(.)本质是语句终止符,但在SELECT SECTION这类条件节中,它还会切断语句与当前条件块的逻辑绑定,直接影响代码的执行范围,这也是句点显得至关重要的核心原因。
两段代码的具体区别:
第一段代码(无句点的MOVE语句)
SELECT SECTION. MOVE xxx TO Bbb MOVE ccc TO HHHH END-SELECT. EXIT.
- 两个
MOVE语句末尾都没有句点,说明它们完全属于SELECT SECTION的条件逻辑块,只有当触发该SELECT节的条件满足时,这两个MOVE才会依次执行。 END-SELECT.是条件块的终止标记,后面的EXIT.是独立于SELECT块的语句,不管SELECT条件是否成立,都会执行。
第二段代码(带句点的MOVE语句)
SELECT SECTION. MOVE xxx TO Bbb. MOVE ccc TO HHHH. END-SELECT. EXIT.
- 第一个
MOVE后面的句点直接终止了它与SELECT SECTION的绑定关系:该MOVE仅在SELECT条件满足时执行,但执行完后,句点会让后续代码脱离SELECT的条件控制。 - 第二个
MOVE ccc TO HHHH.已经不属于SELECT SECTION的条件块,变成了无条件执行的语句——不管SELECT的条件是否触发,这个MOVE都会运行。 - 这里的
END-SELECT.逻辑意义被弱化,因为前面的句点已经跳出了SELECT的条件范围。
内容的提问来源于stack exchange,提问作者Ahmed SEDDIK
相关产品推荐
相关产品推荐

