COBOL程序中EVALUATE语句编译报错,请求排查问题原因
COBOL EVALUATE语句编译错误原因及修正方案
错误原因分析
你的代码中连续使用多个独立的WHEN子句(如WHEN 'P'后直接跟WHEN 'p'),但未将触发同一动作的匹配值合并到同一个WHEN中。COBOL编译器会将这种写法误解为你试图评估多个主体对象(需用ALSO分隔不同主体),但你的EVALUATE仅指定了一个评估对象PAR-STR(1:1),因此触发了"多个对象未用ALSO分隔"等系列错误。
修正后的代码
需将触发同一动作的多个匹配值合并到同一个WHEN子句中,以下两种规范写法均可:
写法1:用逗号分隔多个匹配值
DISPLAY PAR-STR. EVALUATE PAR-STR(1:1) WHEN 'P', 'p' PAR-STR = "X" WHEN 'L', 'l' PAR-STR = "Y" WHEN OTHER PAR-STR = "Z"
写法2:用OR连接多个匹配值
DISPLAY PAR-STR. EVALUATE PAR-STR(1:1) WHEN 'P' OR 'p' PAR-STR = "X" WHEN 'L' OR 'l' PAR-STR = "Y" WHEN OTHER PAR-STR = "Z"
额外注意事项
WHEN OTHER后的赋值建议单独换行,避免编译器解析歧义,同时提升代码可读性。- 确认
PAR-STR在Linkage Section中定义合法,程序调用时传入了有效参数(此点并非本次编译错误的直接原因)。
内容的提问来源于stack exchange,提问作者MJG
相关产品推荐
相关产品推荐

