英文:
COBOL LINUX - when compiling, receiving errors
问题
在尝试编译时,我遇到了如下所示的多个错误:
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:~$
*为了提供背景信息,
我在 Visual Studio Code (VSC) 中,打开了远程窗口,并创建了一个包含以下代码的新文件:
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.
然后,我打开了一个新终端,并使用 pwd
和 ls
命令确保我在正确的目录中。如你所见,"/home/user" 是包含文件 "testdoc.cob" 的目录,根据 ls
命令。接着,我使用命令 cobc -x testdoc.cob
进行编译,然后出现了上述一系列错误。为什么会出现这些错误?我在哪里出错了?
我尝试在不同的文件夹中重复这个过程,使用不同的扩展名,但结果都相同。
英文:
When attempting to compile I get these numerous errors as seen below:
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:~$
*For context,
I am in VSC, I open the remote window and create a new file with the following code:
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.
File> Save.
Open new terminal, and use pwd and ls to ensure I am in the right directory, as you can see "/home/user" is the directory where file "testdoc.cob" is located, as per ls command. I then use "cobc -x testdoc.cob" to compile, and then I get these series of errors. Why is this? and where am I going wrong?
Ive tried repeating the process in new folders with different .extentions, all end in the same result.
答案1
得分: 1
这是COBOL编程中关于代码格式的内容。COBOL2002标准引入了自由格式的参考格式,其中有一列"sequence"在1-6列,指示符在第7列,根据使用的标准,代码可以在12-72列之间或包括8-11列(以前只有一些声明在此列)。对于一些仍然仅支持这种格式的COBOL工具,你可能仍然考虑在新代码中使用它。在团队中编写代码时,通常会有关于使用哪种格式的规定。
要了解更多关于这些格式的信息,可以查看你使用的编译器的程序员指南。
GnuCOBOL 3.2使用以下命令进行编译:
> assignment.cob:1: note: free format detected
对于早期版本,你可以通过传递命令行选项--free
来显式设置它,或者如程序员指南中所述,使用编译器指令:
>> SOURCE FORMAT IS FREE
(此指令从第8列开始)。Micro Focus COBOL(在PC上有相当大的市场份额)将其定义为:
$SET SOURCE-FORMAT "FIXED"
(GnuCOBOL支持两者)。
英文:
This is code in free-form reference-format, which was standardized with COBOL2002, the "historical" fixed-form reference-format uses a layout in which there is a "sequence" column 1-6, an indicator column 7 and depending on the standard used the code goes to column 12-72 or also includes 8-11 (where previously only some declarations went).
"Old" code you see will be often in fixed-form reference-format and as some COBOL tools still only support this format, you may consider still using it for new code. When coding in a group (or a "COBOL shop") you will commonly have rules about what to use.
To learn more about formats see the Programmer's Guide for the compiler you use.
GnuCOBOL 3.2 compiles this with
> assignment.cob:1: note: free format detected
for earlier versions either explicit set it by passing the command line option --free
or, as noted in the Programmer's Guide, use a compiler directive:
>> SOURCE FORMAT IS FREE
(that starts in column 8) is the COBOL standard way to set this, Micro Focus COBOL (which has quite a big market in COBOL on PC) defines it as:
$SET SOURCE-FORMAT "FIXED"
(GnuCOBOL supports both)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论