2014-05-06 68 views
0

我最近開始了COBOL課程,因爲我的電腦配置(Windows 7 64 BitsGNU/Linux 64Bits)我不得不使用Dosbox編譯和執行程序。程序打開COBOL索引文件

一切都很順利,但何時掛起, I'n發現了一些麻煩,當我試圖打開一個Indexed file,無論是I-OOuput模式。我可以編譯和鏈接,但在執行時,dosbox獲得凍結。

我的編譯器版本是MS-COBOL 5.0DosBox爲0.74(最後一個版本)。

有沒有人有過這個問題?有人可以告訴如何解決它。

我的代碼是這一個。

在此先感謝。

 IDENTIFICATION DIVISION. 

    PROGRAM-ID. AGENDA. 
    AUTHOR. JOSE MARIA RAMIREZ MIRA. 
    DATE-WRITTEN. 06/05/2014. 
    DATE-COMPILED. 06/05/2014. 

    ENVIRONMENT DIVISION. 

    CONFIGURATION SECTION. 

    SOURCE-COMPUTER. IBM-PC. 
    OBJECT-COMPUTER. IBM-PC. 

    SPECIAL-NAMES. 
     DECIMAL-POINT IS COMMA. 

    INPUT-OUTPUT SECTION. 
    FILE-CONTROL. 

     SELECT AGENDA ASSIGN TO DISK "AGENDA.DAT" 
       ORGANIZATION IS INDEXED 
       ACCESS IS RANDOM 
       RECORD KEY IS AG-NICK 
       FILE STATUS IS AG-STATUS. 

    DATA DIVISION. 

    FILE SECTION. 
    FD AGENDA 
     RECORD CONTAINS 112 CHARACTERS 
     LABEL RECORD IS STANDARD 
     DATA RECORD IS AG-PERSONA. 

    01 AG-PERSONA. 
     03 AG-NICK    PIC X(25). 
     03 AG-NOMBRE    PIC X(25). 
     03 AG-APELLIDOS   PIC X(50). 
     03 AG-TELEFONO   PIC X(12). 

    WORKING-STORAGE SECTION. 

    77 AG-STATUS     PIC 99. 
     88 EXITO     VALUE 00. 
     88 CLAVE-DUPLICADA  VALUE 22. 
     88 CLAVE-NO-ENCONTRADA VALUE 23. 
     88 SIN-ESPACIO-EN-DISCO VALUE 34. 
     88 FICHERO-NO-EXISTE  VALUE 35. 
     88 EOF     VALUE 10. 

    PROCEDURE DIVISION. 
    MAIN-PROCEDURE. 

     DISPLAY "PROCEDO A ABRIR EL ARCHIVO". 
     OPEN I-O AGENDA. 
     IF EXITO THEN 
      DISPLAY "EL ARCHIVO SE HA ABIERTO" 
     ELSE 
      EVALUATE TRUE 
      WHEN FICHERO-NO-EXISTE 
       DISPLAY "EL ARCHIVO NO EXISTE" 
      END-EVALUATE 
     END-IF. 
     CLOSE AGENDA. 
     STOP RUN. 

    END PROGRAM AGENDA.
+2

您使用的是過時的軟件。除非課程絕對要求使用COBOL,否則我會選擇在Sourceforge上可以找到的更新的開源GNU COBOL。有它的支持。我懷疑你會得到MS COBOL V5的任何支持。看到這個最近的話題,http://stackoverflow.com/questions/21970061/indexed-file-processing-in-cobol-error –

+0

感謝您的評論。是的,我使用的是GNU COBOL(以前的openCOBOL)plus和使用python構建IDE,但正如您所懷疑的,我參與的課程要求使用該版本編譯程序。 – Dhouard

+0

如果你已經支付了課程費用,那麼堅持要他們協助你完成這項工作,或者給你退款。任何訪問此處的人都不可能在DOSBOX下積極使用該COBOL作任何有用的用途,並且能夠爲您提供幫助。除了NealB在其他主題中提供的內容外,我認爲你不會從這裏獲得太多。如果您正在爲COBOL課程付費,那麼您不想花費數天的時間嘗試簡單地開展工作,因爲軟件已有20年的歷史了,因爲您的計算機上已經出現了新的COBOL。 –

回答

0

什麼是AGENDA.DAT的絕對路徑?

有時在傳統的DOS程序中,您無法讀取/寫入其名稱上帶有空格的文件夾內的文件。說,如果您當前的文件夾是C:\ms cobol\,請將其重命名爲C:\mscobol\

這是值得一試,如果這是你的情況。

+0

謝謝,但我對路徑非常小心。我認爲這是一個索引文件問題,因爲在打開sequetial文件時沒有問題。 – Dhouard

0

您是否嘗試過使用OPTIONAL短語選擇文件?例如,

SELECT OPTIONAL AGENDA ASSIGN TO DISK "AGENDA.DAT" 
       ORGANIZATION IS INDEXED 
       ACCESS IS RANDOM 
       RECORD KEY IS AG-NICK 
       FILE STATUS IS AG-STATUS. 

可選的短語必須爲文件中指定打開輸入,I-O,或擴展程序運行時的需求不存在。

針對這個問題,您的問題是您的聲明,即OPEN OUTPUT也出現問題,並且程序在任何情況下都應該產生一些輸出,但是其他人已經指出COBOL的版本並不爲人所知。

順便說一下,我把你的程序插入在線COBOL的http://www.compileonline.com/compile_cobol_online.php ,它工作正常,觸發FICHERO-NO-EXISTE條件名稱。

但這確實提出了另一點。在我的Microfocus手冊中,當在不存在的非可選文件上嘗試OPEN INPUT,I-O或EXTEND時,會返回文件狀態碼35。如果您使用OPTIONAL短語並且執行OPEN時文件不存在,則返回文件狀態05。

+0

你的課程筆記很受歡迎,我最近幾次看到他們的鏈接。你介意我是否通過你網站上的電子郵件鏈接與你聯繫? –

+0

我不介意與我聯繫的人。將COBOL或NIRVANA納入該主題,以通過垃圾郵件過濾器。 – MikeC

0

DOSBox是專爲遊戲而設計的。 問題可能是DOSBox丟失文件和記錄鎖定。 DOSBox有更多的問題,如內部文件緩存,多用戶啓用程序的定時炸彈。您可以嘗試vDos:http://sourceforge.net/projects/vdos/。 它只是Windows,但與它更好地集成在一起。