7

我正在尝试制作一个非常简单的 COBOL 程序。我已经设置好我的目录、配置等,但是当我去编译它时,我得到了这个错误:

sampleCOBOL.cbl: In paragraph 'Main-Paragraph' :
sampleCOBOL.cbl:9: Error: syntax error, unexpected "end of file"

(“sampleCOBOL.cbl”是我的文件名)

这是我的文件包含的内容:

   Identification Division.
   Program-ID. sampleCOBOL.

   Data Division.

   Procedure Division.
   Main-Paragraph.
       Display "Hello World!"
       Stop Run.

我知道错误发生在第 9 行(“停止运行”)。然而,为什么?

4

4 回答 4

2

SourgeForge 支持 GNU COBOL(以前称为 OpenCOBOL)。

从那里,这里是相同错误消息的答案:https ://sourceforge.net/p/open-cobol/discussion/109660/thread/cdfe04a5/#0996

您可以让您的 COBOL 程序遵循传统的固定列开始/结束,您可以将其放在>>SOURCE FORMAT IS FREE程序的第一行第 12 列。然后,您可以在不参考列号的情况下进行编码。

如果使用列号,则第 1-6 列不用于代码,第 7 列用于注释、调试或新页标记,或者在极少数情况下,继续使用无法放入前一行的文字。

然后代码从第 8-11 列(又名“区域 a”)或第 12-71 列(“区域 b”)开始。

除了结束 PROCEDURE DIVISION 标题、段落/SECTION 名称之前和程序结束之前,您不需要在 PROCEDURE DIVISION 中使用句号/句点。在遥远的过去,您曾经需要很多句号/句号,但很多年都不需要(尽管许多人仍在编写代码)。

如果您向下滚动链接到的讨论,请查看您对其他答案的评论和 NealB 对您的问题的评论:

我已经使用 Notepad++ 进行了很多我自己的编码。您可以将 EOL 设置为使用 UNIX 而不是 windows 或 UTF 编码。这也将解决 EOF 问题。此外,您需要确保在切换时设置“使用空格”。当从 Windows 编辑器中使用选项卡时,cobc 会出现问题。

综上所述,您使用的是 Windows、选项卡和不喜欢源代码中选项卡的 OpenCOBOL 版本。您需要直接做两件事才能使其正常工作,并且您可能希望在方便时获得最新版本的 GNU COBOL。

我建议你去这里,http://sourceforge.net/p/open-cobol/discussion/2526793/。如果您没有 SourceForge 帐户,请加入,如果有,请登录,然后在Help getting started. 有些人使用 Windows(我没有)应该能够提供帮助。登录/加入的原因是,否则您将等待数小时让您的问题首先“审核”,然后您将显示为匿名者。

于 2014-01-28T20:33:59.910 回答
2

弄清楚出了什么问题。我在“标识部门”和“程序 ID”之间多了一条线。

我不知道我是怎么错过的。

男孩,我是不是觉得自己很傻。

于 2014-01-30T02:14:13.060 回答
1

IIDENTIFICATION 必须在第 8 列(前面有 7 个空格)。

   ---- sampleCOBOL.cob -------------------------
         * Sample COBOL program
          IDENTIFICATION DIVISION.
          PROGRAM-ID. sampleCOBOL.
          PROCEDURE DIVISION.
          DISPLAY "Hello World!".
          STOP RUN.
    ----------------------------------------
于 2014-01-28T18:39:03.900 回答
0

I faced the same problem recently when I just started learning COBOL. The point is each line should end with CRLF. You can refer here to see how you can achieve this.

于 2015-01-22T07:24:21.673 回答