2016-07-27 87 views
2
閱讀

我使用OpenCobolIDE 4.7.4(它是基於GnuCOBOL),並試圖編譯這個程序打開文件進行讀取:在Windows 10打開文件在COBOL

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. 

input.txt中是在同一目錄作爲源折軸,但我還是發現了以下錯誤:

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

我在做什麼錯?

回答

4

其他語言的大多數IDE恰好從另一個目錄(例如構建它的目錄)運行可執行文件。

一個簡單的測試就是編寫一個測試程序,打開一個文件進行寫入。 你會很快看到會發生什麼。

+0

你說得對,這個IDE把可執行文件放在當前用戶的bin目錄中。 – Quentin

5

OCIDE有一個輸出目錄的設置,默認是「bin」(相對於源文件)。切實它只是傳遞此設置編譯器cobc source.cob -o bin\source.exe

您可以設置Menu Preferences -> Compiler改變這種行爲:

Output directory

This option let you chose where to put the binaries, by default binaries will be placed into a bin folder next to the source file. You can define another relative or absolute directory if you want.

在任何情況下,你可以在環境中設置的實際名稱,請GC FAQ - How to map a file name to an external name

作爲替代方案,您可以使用環境變量COB_FILE_PATH設置數據目錄。

這兩個環境選項都可以在設置Menu Preferences -> Run中進行設置。

0

也許更好的辦法是在select子句中寫完整路徑。

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

也許不是,因爲那樣你就有了鎖定的程序設置。至少讓事情相對。 –