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

问题描述 投票:0回答:4

我最近开始了

COBOL
课程,由于我的电脑配置(
Windows 7 64 Bits
GNU/Linux 64Bits)
)我必须使用
Dosbox
来编译和执行程序。

一切都很顺利,但是,当我尝试打开

Indexed file
I-O
Ouput
模式)时,我发现了一些麻烦。我可以编译和链接,但在执行时,
dosbox
被冻结。

我的编译器版本是

MS-COBOL 5.0
DosBox
是 0.74(最新版本)。

有人遇到过这个问题吗?谁能告诉我如何修复它。

我的代码是这个。

提前致谢。

 识别部门。

   程序 ID。议程。
   作者。何塞·玛丽亚·拉米雷斯·米拉。
   书写日期。 2014 年 6 月 5 日。
   编译日期。 2014 年 6 月 5 日。

   环境部。

   配置部分。

   源计算机。 IBM-PC。
   对象计算机。 IBM-PC。

   特殊名称。
       小数点是逗号。

   输入输出部分。
   文件控制。

       选择分配给磁盘“AGENDA.DAT”的议程
              组织被索引
              访问是随机的
              记录密钥是 AG-NICK
              文件状态为 AG 状态。

   数据部门。

   文件部分。
   FD议程
      记录包含 112 个字符
      标签记录是标准
      数据记录是AG-PERSONA。

   01 AG角色。
      03 AG-NICK PIC X(25)。
      03 AG-NOMBRE PIC X(25)。
      03 AG-APELLIDOS PIC X(50)。
      03 AG-TELEFONO PIC X(12)。

   工作存储部分。

   77 AG 状态图 99。
      88 退出值 00。
      88 CLAVE-重复值 22。
      88 CLAVE-NO-ENCONTRADA 价值 23。
      88 SIN-ESPACIO-EN-DISCO 价值 34。
      88 不存在的费舍罗价值 35。
      88 EOF 值 10。

   程序部门。
   主要程序。

       显示“PROCEDO A ABRIR EL ARHIVO”。
       打开 I-O 议程。
       如果退出那么
          显示“EL ARCHIVO SE HA ABIERTO”
       别的
          评估真实
             当费切罗不存在时
                显示“埃尔档案不存在”
          最终评估
       万一。
       结束议程。
       停止运行。

   结束计划议程。
cobol dosbox cobol85
4个回答
1
投票

您是否尝试过使用 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.

对于为 INPUT、I-O 或 EXTEND 打开的文件,必须指定 OPTIONAL 短语,这些文件在程序运行时不需要出现。

与此相反,问题是你的陈述,问题也发生在 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
投票

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

有时,使用旧版 DOS 程序,您无法读取/写入名称带有空格的文件夹内的文件。比如说,如果您当前的文件夹是

C:\ms cobol\
,请将其重命名为
C:\mscobol\

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


0
投票

DOSBox 专为游戏而设计。 问题可能是 DOSBox 缺少文件和记录锁定。 DOSBox 还有更多问题,例如内部文件缓存、多用户程序的定时炸弹。 您可以尝试 vDos:http://sourceforge.net/projects/vdos/。 它仅适用于 Windows,但与其集成得更好。


0
投票

如果您将 GnuCOBOL 与 VBISAM 结合使用,则“文件名”不得包含 Windows 上的文件扩展名,因为它将假定存在“filename.dat”和“filename.idx”。

如果您使用 GnuCOBOL 和 Berkeley Database 来模拟 ISAM 文件,那么 ISAM 文件将不会有单独的 .DAT 和 .IDX 文件。备用索引文件会使这两种情况变得复杂。

DOSBOX 通常用于在虚拟机中运行 MS-DOS 16 位软件。因此,较旧的 Microfocus COBOL 5 必须在 Windows 7 上的 DOSBOX 中运行。

© www.soinside.com 2019 - 2024. All rights reserved.