使用GNUCOBOL编译运行程序无任何输出该如何解决
问题原因
你遇到的无输出问题核心是代码存在语法疏漏,导致PROCEDURE DIVISION未被编译器正确识别:
你的代码中AUTHOR. Myself行末尾缺少必须的句号,COBOL语法要求标识部(IDENTIFICATION DIVISION)的所有描述语句都必须以句号作为终止符,缺失句号时,编译器会把后续所有行都识别为AUTHOR条目的备注内容,相当于你写的过程部代码被完全当成了注释,程序自然没有任何执行逻辑。
另外你使用的GNUCOBOL 2.2.0默认采用COBOL标准固定格式解析代码,如果你的代码是自由格式编写(比如代码内容从第1列就开始写),也会出现解析异常。
解决步骤
- 先修正代码语法,给AUTHOR行补全句号,修正后的完整代码如下:
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. AUTHOR. Myself. PROCEDURE DIVISION. DISPLAY "HELLO WORLD". STOP RUN.
- 如果你的代码是自由格式编写(没有遵守前6列为序号区、第7列为指示符区的固定格式规则),编译时需要添加
-free参数指定自由格式解析:
cobc -x -free hello_world.cob
- 若需要排查其他隐藏问题,可以在编译时添加
-v参数输出详细编译日志,确认过程部是否被正常识别:
cobc -x -v hello_world.cob
修正后重新编译运行,即可正常输出HELLO WORLD。
内容的提问来源于stack exchange,提问作者ABCDEF
相关产品推荐
相关产品推荐

