COBOL严格模式长语句多行拆分及GnuCOBOL兼容问题咨询
COBOL严格固定格式下长语句续行问题解答
这是COBOL严格固定格式的设计特性,并非GnuCOBOL的特殊限制。
原因说明
COBOL固定格式的续行符(你使用的-)仅负责将下一行内容直接拼接至上一行末尾,不会自动添加分隔空格。当你在数字1后直接换行时,下一行的UNTIL会与上一行的1直接拼接成无效标识符1UNTIL,因此触发编译报错。
解决办法
1. 拆分完整COBOL关键字
将长关键字拆分为两部分分别放在两行,拼接后还原为原关键字,比如你已经验证可行的写法:
PERFORM VARYING WS-INDEX FROM 2 BY 1 UN - TIL WS-INDEX > WS-FILE-LEN
2. 手动添加分隔空格
在第一行末尾的1后添加一个空格再换行,确保拼接后1与UNTIL之间有空格分隔:
PERFORM VARYING WS-INDEX FROM 2 BY 1 - UNTIL WS-INDEX > WS-FILE-LEN
3. 调整编译选项放宽限制
- 如果可以接受扩展行长度,使用
-line-length=N选项增加固定格式的行长度上限,比如设置为132列:
这样大部分长语句无需续行即可容纳。cobc -x -std=cobol2014 -line-length=132 - 若无需严格固定格式,可添加
-free选项启用自由格式,此时直接换行即可,无需续行符:cobc -x -std=cobol2014 -free
内容的提问来源于stack exchange,提问作者FERcsI
相关产品推荐
相关产品推荐

