我最近开始了
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” 别的 评估真实 当费切罗不存在时 显示“埃尔档案不存在” 最终评估 万一。 结束议程。 停止运行。 结束计划议程。
您是否尝试过使用 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。
AGENDA.DAT
的绝对路径是什么?
有时,使用旧版 DOS 程序,您无法读取/写入名称带有空格的文件夹内的文件。比如说,如果您当前的文件夹是
C:\ms cobol\
,请将其重命名为 C:\mscobol\
。
如果这是您的情况,值得一试。
DOSBox 专为游戏而设计。 问题可能是 DOSBox 缺少文件和记录锁定。 DOSBox 还有更多问题,例如内部文件缓存、多用户程序的定时炸弹。 您可以尝试 vDos:http://sourceforge.net/projects/vdos/。 它仅适用于 Windows,但与其集成得更好。
如果您将 GnuCOBOL 与 VBISAM 结合使用,则“文件名”不得包含 Windows 上的文件扩展名,因为它将假定存在“filename.dat”和“filename.idx”。
如果您使用 GnuCOBOL 和 Berkeley Database 来模拟 ISAM 文件,那么 ISAM 文件将不会有单独的 .DAT 和 .IDX 文件。备用索引文件会使这两种情况变得复杂。
DOSBOX 通常用于在虚拟机中运行 MS-DOS 16 位软件。因此,较旧的 Microfocus COBOL 5 必须在 Windows 7 上的 DOSBOX 中运行。