COBOL中EVALUATE语句执行后控制权传递位置咨询
COBOL EVALUATE语句控制权流转说明
在COBOL中,EVALUATE语句的核心行为是匹配到第一个符合条件的WHEN子句后,执行其内部代码,随后直接跳出整个EVALUATE结构,控制权会转移到END-EVALUATE之后的第一条语句(也就是你代码里的READ语句),不会停留在END-PERFORM之后继续处理后续的WHEN分支。针对你问的三种场景,具体流转如下:
- 当TXN-CODE为'A'时:执行完
PERFORM 1000-ADD-RECORD THRU 1000-ADD-RECORD-END后,直接跳转到END-EVALUATE后的READ语句,不会再检查后续的WHEN条件。 - 当TXN-CODE为'C'时:执行完
PERFORM 1000-UPDATE-RECORD THRU 1000-UPDATE-RECORD-END后,同样直接跳转到END-EVALUATE后的READ语句。 - 当触发
OTHER分支时:执行完WRITE ERROR-RECORD FROM WS-ERROR-RECORD后,控制权依然直接转移到END-EVALUATE后的READ语句。
需要注意的是,这和你之前遇到的SEARCH语句行为不同——SEARCH在匹配后若未使用CONTINUE或EXIT,可能会继续处理后续逻辑,但EVALUATE是「匹配即退出」的逻辑,这是COBOL标准定义的行为,也是这类分支语句的常规设计。
内容的提问来源于stack exchange,提问作者NicholasM
相关产品推荐
相关产品推荐

