【问题标题】:Programs hangs when opening COBOL Indexed file打开 COBOL 索引文件时程序挂起
【发布时间】:2014-05-06 09:51:56
【问题描述】:

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

一切顺利,但是当我尝试打开Indexed fileI-OOuput 模式时,我发现了一些麻烦。我可以编译和链接,但在执行时,dosbox 会被冻结。

我的编译器版本是MS-COBOL 5.0DosBox 是 0.74(最新版本)。

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

我的代码就是这个。

提前致谢。

 识别部。

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

   环境科。

   配置部分。

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

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

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

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

   数据部门。

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

   01 AG-角色。
      03 AG-尼克图片 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-DUPLICADA 值 22。
      88 CLAVE-NO-ENCONTRADA 值 23。
      88 SIN-ESPACIO-EN-DISCO 价值 34。
      88 FICHERO-不存在的价值 35。
      88 EOF 值 10。

   程序部。
   主要程序。

       显示“PROCEDO ABRIR EL ARCHIVO”。
       开放 I-O 议程。
       如果退出然后
          显示“EL ARCHIVO SE HA ABIERTO”
       别的
          评估为真
             当 FICHERO 不存在时
                显示“EL ARCHIVO 不存在”
          最终评估
       万一。
       关闭议程。
       停止运行。

   结束计划议程。

【问题讨论】:

  • 您使用的是非常旧的软件。除非课程绝对需要 COBOL,否则我会选择更新的、开源的 GNU COBOL,您可以在 Sourceforge 找到它。有它的支持。我怀疑你会得到对 MS COBOL V5 的任何支持。看到这个最近的话题,stackoverflow.com/questions/21970061/…
  • 感谢您的评论。是的,我正在使用 GNU COBOL(以前的 openCOBOL)plus 和使用 python 构建的 IDE,但正如您所怀疑的,我参与的课程要求使用该版本编译程序。
  • 如果您已支付课程费用,请坚持让他们协助您完成这项工作或退还您的钱。访问这里的任何人极不可能将 DOSBOX 下的 COBOL 用于任何有用的目的并且能够为您提供帮助。除了 NealB 在其他主题中提供的内容外,我认为您不会从这里得到太多。如果您正在为 COBOL 课程付费,您不想仅仅因为该软件已经 20 年了,而您的机器上已经有一个全新的 COBOL,就花几天时间尝试让一些简单的东西工作起来。
  • 感谢您的关注。我不为这门课付钱。我考虑过使用 Dosbox 来让这么旧的东西正常工作。我的老师说它在 Windows XP 中运行良好,但正如我解释的那样,我的笔记本电脑中有 Windows 7 和 GNU/Linux。无论如何,谢谢您的回复。

标签: cobol dosbox cobol85


【解决方案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 手册中,当在不存在的非可选文件上尝试打开输入、I-O 或扩展时,返回的文件状态代码为 35。如果您使用了 OPTIONAL 短语并且在执行 OPEN 时文件不存在,则返回文件状态 05。

【讨论】:

  • 您的课程笔记很受欢迎,我最近多次看到指向它们的链接。您介意我通过您网站上的电子邮件链接就其中一个问题与您联系吗?
  • 我不介意人们与我联系。将 COBOL 或 NIRVANA 放入主题中以使其通过垃圾邮件过滤器。
【解决方案2】:

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

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

如果您遇到这种情况,值得一试。

【讨论】:

  • 谢谢,但我对路径非常小心。我认为这是一个索引文件问题,因为打开顺序文件没有问题。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2012-09-17
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    • 2019-12-21
    相关资源
    最近更新 更多