在COBOL中打开文件以进行读取

3

我正在使用基于GnuCOBOL的OpenCobolIDE 4.7.4,在Windows 10上尝试编译这个程序以打开一个读取文件:

   IDENTIFICATION DIVISION.
   PROGRAM-ID. HELLO.

   ENVIRONMENT DIVISION.
      INPUT-OUTPUT SECTION.
         FILE-CONTROL.
         SELECT STUDENT ASSIGN TO 'input.txt'
         ORGANIZATION IS LINE SEQUENTIAL.            

   DATA DIVISION.
      FILE SECTION.
      FD STUDENT.
      01 STUDENT-FILE.
         05 STUDENT-ID PIC 9(5).
         05 NAME PIC A(25).

      WORKING-STORAGE SECTION.
      01 WS-STUDENT.
         05 WS-STUDENT-ID PIC 9(5).
         05 WS-NAME PIC A(25).
      01 WS-EOF PIC A(1). 

   PROCEDURE DIVISION.
      OPEN INPUT STUDENT.
         PERFORM UNTIL WS-EOF='Y'
         READ STUDENT INTO WS-STUDENT
            AT END MOVE 'Y' TO WS-EOF
            NOT AT END DISPLAY WS-STUDENT
         END-READ
         END-PERFORM.
      CLOSE STUDENT.
   STOP RUN.
< p > input.txt 与源代码在同一目录中,但我仍然遇到以下错误:

Main.cob:24: libcob: File does not exist (STATUS = 35) File : 'input.txt'

我做错了什么?
3个回答

5

OCIDE有一个输出目录的设置,其默认值为“bin”(相对于源文件)。实际上,它只是将此设置传递给编译器cobc source.cob -o bin\source.exe

您可以在设置中更改此行为(菜单首选项->编译器)

输出目录

此选项允许您选择放置二进制文件的位置,默认情况下,二进制文件将放置在与源文件相邻的bin文件夹中。如果需要,您可以定义另一个相对或绝对目录。

在任何情况下,您都可以在环境中设置实际名称,请查看GC FAQ - 如何将文件名映射到外部名称

作为替代方案,您可以使用环境变量COB_FILE_PATH设置数据目录。

这两个环境选项均可在设置中设置(菜单首选项->运行)


4

大多数其他语言的 IDE 通常会从另一个目录运行可执行文件(例如该文件是在构建时生成的)。

一个简单的测试是编写一个打开文件进行写入操作的测试程序。很快你就会看到会发生什么。


你是对的,这个IDE将可执行文件放在当前用户的bin目录中。 - Quentin

1

或许更好的做法是在选择子句中写入完整路径。

select STUDENT ASSIGN TO '/xpto/folder1/input.txt'

也许不是,因为那样你就会有一个程序的锁定设置。至少要使事情相对。 - Bill Woodger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接