2014-02-23 44 views
0

我有以下用於處理索引文件的代碼,但運行程序時出現運行時錯誤,「索引文件系統不可用」。我不確定如何編碼索引文件和數據文件。我是否正在進行初始化?什麼做錯了?Cobol錯誤中的索引文件處理?

   IDENTIFICATION DIVISION. 
    PROGRAM-ID. INDEXFILE. 

    ENVIRONMENT DIVISION. 
    INPUT-OUTPUT SECTION. 
    FILE-CONTROL. 

     SELECT VENDOR-FILE ASSIGN TO DISK 
     ORGANIZATION IS INDEXED 
     ACCESS MODE IS RANDOM 
     RECORD KEY IS VENDOR-NUMBER. 


    DATA DIVISION. 
    FILE SECTION. 

    FD VENDOR-FILE 
     LABEL RECORDS ARE STANDARD 
     VALUE OF FILE-ID IS "input.txt" 
     DATA RECORD IS VENDOR-RECORD.   

    01 VENDOR-RECORD. 
     05 VENDOR-NUMBER PIC 9(5). 
     05 VENDOR-NAME  PIC X(30). 

    WORKING-STORAGE SECTION. 

    01 VNAME PIC X. 

    PROCEDURE DIVISION. 
    PARA1. 
     OPEN INPUT VENDOR-FILE. 
     DISPLAY 'ENTER VENDOR NO: '. 
     ACCEPT VENDOR-NUMBER. 
     DISPLAY VENDOR-NUMBER. 
     READ VENDOR-FILE 
      INVALID KEY DISPLAY 'NO SUCH RECORD'. 

     CLOSE VENDOR-FILE. 
     STOP RUN.   
+1

請告訴我們您正在使用哪種編譯器,並提供您收到的錯誤消息的完整文本。錯誤信息應該包括它所適用的行號。 – cschneid

+0

我正在使用DSBOX作爲我的編譯。我編輯了代碼,錯誤顯示運行時錯誤,索引文件系統不可用。 – user3211403

+0

什麼是DSBOX?你有更多的細節嗎?您應該對所有文件使用FILE STATUS(假設它對您可用)並且在每種類型的文件訪問之後測試良好狀態。例如,當您獲得OPEN的非零值時,實際的FILE STATUS代碼可能會提供更多信息。你確定你正在分配的文件是一個索引文件嗎?你的.txt文件是一個索引文件嗎?如果是這樣,我會給它一個不同的文件類型以避免混淆。 –

回答

0

我們真正知道的是,你正在運行的東西,它允許舊的軟件來運行,因爲它在過去(DOSBOX)做了一些時間。

我們不知道你有哪個編譯器。您應該嘗試通過查找編譯程序時生成的任何文本輸出來查找名稱,或者嘗試將「/? /h /help -? -h -help --help」之類的「開關」添加到您編譯程序時所具有的內容中。

您是否有編譯器的任何文檔?一旦你找出它是哪個編譯器,你可以用你最喜歡的搜索引擎找到一些編譯器。

要創建您的第一個索引文件,請編寫一個小程序,該程序將打開OUTPUT的索引文件。 WRITE您要的記錄,然後CLOSE該文件並停止該程序。

這通常足以獲得索引文件。您應該可以在另一個程序中使用該文件作爲INPUTI-O

使用FILE STATUS總是一個好主意。如果您不確定如何使用它,但仍然沒有手冊,請查看SourceForge上的GNU COBOL文檔。

1

DOSBOX模擬MS-DOS操作系統,因爲它可以在舊的IBM PC兼容計算機上運行。 DOSBOX主要開發爲 ,以支持在升級操作系統的新機器上運行老式電腦遊戲。 DOSBOX不是您正在使用的編譯器 - 它是操作系統。因此,我們 仍然不知道您嘗試在此使用的COBOL的「味道」。除此之外,您收到的消息是:索引文件系統 不可用並且這暗示您缺少您正在使用的COBOL版本的某些運行時支持庫。

索引文件系統不直接支持MS-DOS操作系統(或任何其他PC類型的操作系統)。除簡單順序之外,文件訪問需要某種類型的運行時支持,我懷疑在操作環境中缺少這些組件。如果沒有找到遺漏的組成部分,進一步發展的可能性很低。