You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下COBOL编译报错原因及解决咨询

问题描述

在VSCode远程窗口创建了testdoc.cob文件,代码内容如下:

identification division.
program-id. Assignment1.

environment division.
configuration section.

data division.
working-storage section.
01 out pic x(11) value "Hello World".
procedure division.
    display out.
    goback.

end program Assignment1.

保存文件后,在终端确认当前目录为/home/user(包含testdoc.cob),执行cobc -x testdoc.cob编译时,出现如下报错:

user@DESKTOP-57BGLNH:~$ pwd
/home/user
user@DESKTOP-57BGLNH:~$ ls
COBOL               testdoc.cob
user@DESKTOP-57BGLNH:~$ cobc -x testdoc.cob
assignment1.cob:1: error: invalid indicator 'f' at column 7
assignment1.cob:2: error: invalid indicator 'm' at column 7
assignment1.cob:4: error: invalid indicator 'n' at column 7
assignment1.cob:5: error: invalid indicator 'u' at column 7
assignment1.cob:7: error: invalid indicator 'i' at column 7
assignment1.cob:8: error: invalid indicator 'g' at column 7
assignment1.cob:10: error: invalid indicator 'u' at column 7
assignment1.cob:11: error: invalid indicator 'a' at column 7
assignment1.cob:12: error: invalid indicator 'k' at column 7
assignment1.cob:14: warning: line not terminated by a newline [-Wothers]
assignment1.cob:14: error: invalid indicator 'r' at column 7
assignment1.cob:9: error: PROGRAM-ID header missing
assignment1.cob:9: error: PROCEDURE DIVISION header missing
assignment1.cob:9: error: syntax error, unexpected PICTURE
user@DESKTOP-57BGLNH:~$ 

报错信息指向assignment1.cob,但并未编译该文件,更换文件夹、修改扩展名后问题依旧,请问报错原因是什么?哪里操作出错了?

报错原因及解决方法

核心原因

这是COBOL的传统格式规范导致的:

  • 传统COBOL代码要求第1-6列为序列区(可留空或填写行号),第7列为续行标记位(仅允许-、+等特定字符作为续行符号),真正的代码内容必须从第8列开始编写。
  • 当前代码直接从第1列开始写,编译器会把每一行第7列的字符误判为续行标记,而这些字符不是合法的续行符号,因此触发报错。
  • 报错中出现assignment1.cob是因为cobc编译器会自动以代码中PROGRAM-ID指定的名称(Assignment1)生成中间编译文件,并非手动创建的文件。

修正方案

调整代码格式,确保所有代码行从第8列开始(即每一行前预留7个空格),修正后的代码如下:

identification division.
       program-id. Assignment1.

       environment division.
       configuration section.

       data division.
       working-storage section.
       01 out pic x(11) value "Hello World".
       procedure division.
           display out.
           goback.

       end program Assignment1.

操作步骤

  1. 按照上述格式修改testdoc.cob文件
  2. 重新执行编译命令cobc -x testdoc.cob即可正常编译

内容的提问来源于stack exchange,提问作者Steve X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 06:40:29