打开COBOL索引文件时程序挂起

时间:2014-05-06 09:51:56

标签: cobol dosbox cobol85

我最近开始了COBOL课程,由于我的计算机配置(Windows 7 64 BitsGNU/Linux 64Bits),我必须使用Dosbox来编译和执行程序。< / p>

一切进展顺利但是,当我尝试打开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.

3 个答案:

答案 0 :(得分:0)

AGENDA.DAT的绝对路径是什么?

有时使用旧版DOS程序,您无法读取/写入名称中包含空格的文件夹内的文件。比如说,如果您当前的文件夹是C:\ms cobol\,请将其重命名为C:\mscobol\

如果是这种情况,值得一试。

答案 1 :(得分:0)

您是否尝试使用可选短语选择文件。例如,

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

必须为在程序运行时不需要存在的INPUT,I-O或EXTEND打开的文件指定可选短语。

对此问题是你的陈述,即OPEN OUTPUT也会出现问题,程序在任何情况下都应该产生一些输出,但正如其他人所说,COBOL的版本并不为人所知。

顺便把我的程序插入到http://www.compileonline.com/compile_cobol_online.php的在线COBOL中 并且它可以很好地触发FICHERO-NO-EXISTE条件名称。

但这确实提出了另一点。在我的Microfocus手册中,当在不存在的非可选文件上尝试OPEN INPUT,I-O或EXTEND时,将返回文件状态代码35。如果您使用了OPTIONAL短语并且在执行OPEN时该文件不存在,则返回文件状态05。

答案 2 :(得分:0)

DOSBox专为游戏而设计。 问题可能是DOSBox丢失文件和记录锁定。 DOSBox有更多问题,如内部文件缓存,一个启用多用户程序的定时炸弹。 您可以尝试vDos:http://sourceforge.net/projects/vdos/。 它只是Windows,但与它集成得更好。