3

我对编程语言 COBOL 的编译器有疑问。我使用程序“OpenCobolIDE”(GnuCOBOL 1.1 Mingw)。

首先这里是一个示例程序的代码。

   IDENTIFICATION DIVISION.
   PROGRAM-ID. HelloWorld.
   DATA DIVISION.
   FILE SECTION.
   WORKING-STORAGE SECTION.
   01  name           pic x(32).
   PROCEDURE DIVISION.
   beginn section.
        DISPLAY "What is your Name?: " with no advancing.
        accept name.
        DISPLAY "Your Name: ",name .
        STOP RUN.
   END PROGRAM HelloWorld.

输入我的名字“Albert”后,控制台不会发回消息“Your Name: Albert”。控制台在“Albert”之后为空。但是如果我将字符串名称的长度设置为 6,因为我的名字是 6 个字符长,那么程序可以正常工作并且控制台显示“您的姓名:阿尔伯特”。

除此之外,该子句with no advancing无法正常工作。当我使用此命令时,控制台不会打印“你的名字是什么?”,它会跳过该行,我必须先输入我的名字,输入我的名字后,控制台会显示:“你的名字是什么?:阿尔伯特”。但是在编译程序的 .exe 中,命令行with no advancing可以正常工作。

为什么会这样,我该如何修复它?

4

1 回答 1

3

看起来您使用嵌入式 python 控制台 OCIDE 用于更好的集成。副作用是:它不是完全可用的,一旦你开始使用非常简单的东西ACCEPT/DISPLAY你应该禁用它:

首选项 (F2) -> 选项卡运行 -> 选中“在外部终端中运行”

顺便说一句:OpenCOBOL IDE 的 Windows 安装附带了 GnuCOBOL 的最新官方 MinGW 包。目前是 1.1,但很快就会是 GnuCOBOL 2.0 rc2(或最终版本),我强烈建议使用这个而不是旧的 GnuCOBOL 1.1。您可以使用 rc1 获得非官方的预览版本和/或继续关注新版本(也可能会添加到 OCIDE)。

编辑:如评论中所见:

问题是 GnuCOBOL 1.1 的旧版本,因为更新后它可以正常工作!

于 2016-10-15T14:38:18.187 回答