开始使用OpenCOBOL!(“你好,世界!”)

开始使用OpenCOBOL!(“你好,世界!”),cobol,gnucobol,Cobol,Gnucobol,我正在尝试制作一个非常简单的COBOL程序。我已经设置了我的目录、配置等,但是当我去编译它时,我得到了以下错误: sampleCOBOL.cbl: In paragraph 'Main-Paragraph' : sampleCOBOL.cbl:9: Error: syntax error, unexpected "end of file" (“sampleCOBOL.cbl”是我的文件名) 这是我的文件包含的内容: Identification Division. Program-

我正在尝试制作一个非常简单的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行(“停止运行”)。但是,为什么?

标识的
I
必须位于第8列(前面7个空格)


SourgeForge支持gnucobol(以前是OpenCOBOL)

下面是同一错误消息的答案:

您可以让您的COBOL程序遵守传统的固定列开始/结束,您可以将此,
>源格式免费
放在程序的第一行第12列。然后,您可以在不参考列编号的情况下进行编码

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

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

程序部分中不需要句号/句号,除非在段落/章节名称之前和程序结束之前结束程序部分标题。在遥远的过去,您曾经需要很多句号/句号,但很多年都不需要(尽管许多人仍然在编写代码)

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

我已经用Notepad++编写了很多自己的代码。你可以设定下线 使用UNIX而不是windows或UTF编码。这也将解决问题 EOF问题。此外,您还需要确保在以下情况下设置“使用空格” 禁忌。当从windows编辑器使用选项卡时,cobc存在问题

总之,您使用的是Windows、选项卡和OpenCOBOL版本,它不喜欢源代码中的选项卡。为了让它正常工作,您需要直接做两件事,并且您可能希望在方便的时候获得最新版本的GNUCobol


我建议你去这里。如果您没有SourceForge帐户,请加入,如果您有,请登录,然后在
帮助入门中发布。那里有人在使用Windows(我没有),他们应该能够提供帮助。登录/加入的原因是,否则您将等待数小时,等待您的问题首先被“缓和”,并且您将显示为匿名。

找出了问题所在。我在“身份识别部门”和“程序ID”之间加了一行。“

我不知道我是怎么错过的


孩子,我觉得自己很愚蠢。

我最近刚开始学习COBOL时也遇到了同样的问题。重点是每条线都应该以CRLF结尾。您可以参考以了解如何实现这一点。

Notepad++告诉我,它确实从第8列开始。当光标位于“I”之前时,屏幕底部会显示“Col:8”。这是否意味着我的光标已经“通过”了I,或者它是“在”I?在“Hello World!”
之后,您也缺少了一个
我猜您在
显示“Hello World!”
之后缺少了一个点。您是否使用空格或制表符缩进代码?如果使用制表符,请尝试切换到空格。如果不起作用,试着用十六进制查看文件,并用空格替换不可打印的字符。我想可能就是这样,或者至少指向正确的方向,@NealB。可能标签页和窗口都是行尾。我的答案中的链接有详细信息,这也是使用Notepad++的人的问题。我已更新以将详细信息放入正文。您的问题中的程序没有选项卡或其他非显示字符。我将粘贴到Windows one附带的标准记事本中,保存,然后运行编译。如果仍然运行正常,我会在停止运行后添加另一个段落名称,执行该段落名称并将显示放在其中,然后查看是否可以将错误消息设置为“移动”。您似乎混合了LF only和CR-LF行。我不知道这是否重要。我会把你的问题原件粘贴到Windows记事本上。在每行添加七个带文本的前导空格。拯救试试看。几分钟后还可以看到更新的答案。除了使用新的编辑器,我尝试了这里提到的各种解决方案。还是不走运!SPFLite正在下载,我将改用该程序重试。首先,感谢您的耐心和迄今为止的帮助!我已经尝试了你的建议(上面的评论),但我仍然得到同样的错误。我将在SourceForge页面上询问,看看是否可以在那里得到一些帮助。如果我弄明白了,我会带着更新回来。事实上,没必要觉得自己很愚蠢。你可以在那里有四百个空白行,它仍然可以编译。我认为您所做的是删除一行,该行以LineFeed结尾,没有回车符。如果您的程序中没有这样的行,那么您就有了答案。问题本身不是空行本身。
   ---- sampleCOBOL.cob -------------------------
         * Sample COBOL program
          IDENTIFICATION DIVISION.
          PROGRAM-ID. sampleCOBOL.
          PROCEDURE DIVISION.
          DISPLAY "Hello World!".
          STOP RUN.
    ----------------------------------------