我有哪个 COBOL 数据库?

Which COBOL database do I have?

一个简单但,嘿,仍然很奇怪的问题。希望在好的部分,在整个互联网上找不到合适的答案。

首先,它看起来很像 COBOL(ACUCOBOL?),但我不确定。

我有扩展名为 .AC、.vix、.SC 的二进制文件;每个几个MBytes。大多数文件都是成对的,例如。 ADDRESSES.AC + ADDRESSES.vixCOMPANIES.SC + COMPANIES.vix。 在这些文件的中间我可以看到部分记录,但它似乎是一组二进制文件。

没有人类可读的索引、地图、方言、配置文件,headers 据我所知存在于 Cobol 数据库中——没有任何东西可以使用一些普通的文本工具进行解析。也没有 CPY、RDD、XFD 文件。只是不时包含大量二进制数据和部分 records/ids (?) 的文件。所以我可以确定,例如,一个文件包含一组地址、下一个明显的销售、下一个客户数据等。

问题是:

如何确定我使用的是哪个版本的 COBOL 数据库? (主要是为了获得合适的工具来提取数据。)

如何将此数据库转换为可以解析并移动到其他任何东西的东西 - 甚至 Excel?

我无法访问正在使用该数据库的计算机,因为多年来它一直在垃圾箱深处,没有其他东西留下,只有一个包含数据库文件的文件夹。

有人遇到同样的问题吗?

示例如下:

How to determine which version of COBOL database am I using?

您使用的不是数据库,而是 ISAM 文件,很可能 可能是 ACUCOBOL GT 文件格式 5。有关格式的详细信息,请参阅 official documentation

Mostly to obtain a proper tool to extract the data.

正确的工具是 vutil 和命令 vutil -u -t ADDRESSES.AC ADDRESSES.TXT,它会为您提供一个很可能是固定长度格式的文本文件(可变格式相对不常见)-> 步骤1.

由于数据可能包含二进制字段,您必须调查数据以检查实际的 format/record 布局 --> 第 2 步,并从二进制字段计算十进制值 --> 第 3 步。 但是有一些工具可以帮助你完成第 2 步和第 3 步,我可以推荐 RecordEditor 你会看到数据的地方,可以设置字段 widths/types(定义记录布局,类似于 Excel 导入,还允许您使用二进制 COBOL 类型)并将生成的文件转换为 CSV。

如果您无法访问 vutil(或 Windows 上的 vutil32.exe),您可能会找到有权访问此工具的人并为您转换数据;或获取评估版(将是旧版下载,ACUCOBOL-GT 的新产品所有者是 MicroFocus,仅提供其不兼容 "Visual COBOL" 产品的评估版)。

或者您可以对格式进行逆向工程(记录布局在 vix 文件中,使用十六进制编辑器打开它并深入研究),但这可能是一项更大的任务...

总结:

  • 决定如何执行第 1 步,vutil/vutil32.exe 是最简单的方法
  • 1:将数据转换为文本格式
  • 2:调查文件并检查记录布局(字段宽度、类型)
  • 3:加载文件,转换二进制字段,导出为csv

你肯定有视觉索引数据文件,因为你会看到匹配的 .vix 文件,如果你没有 .vix 文件,那么它是一个带有一组记录的相对文件。

如果您在工具菜单下有 Acubench,则有一个视觉文件实用程序选项,您可以从那里将视觉数据卸载到制表符分隔的文本文件。

从那里您可以导入到 Excel 作为制表符分隔文件,然后重新保存为 csv 文件。

所以毕竟我认为这是 ISAM 版本。

要解决这个问题,需要以下工具:

  1. 首先是一些迁移工具。在我的例子中是 ISMIGRATE GUI WIzard:

这个包来自isCOBOL 2017 R1,你可以找到一些免费的演示下载。请注意,您不需要安装所有包,只需要安装此迁移工具。 然后您可以使用 ctree2 -> jisam 转换或尝试所有可用选项(并非每个选项都可用,因为缺少付费库)

  1. 转换后你会得到这样的结果:

在更糟糕的情况下,会有一些 ASCII 特殊字符,但您可以使用一些工具(如 Notepad++)或什至 Excel 来摆脱它们。我的意思是通过十六进制代码搜索它们并替换为 space(注意,space 将替换一个缺失的字符以保留列顺序)

请注意,您也可以使用从 MS Access/MS Excel 导入 ASCII 文本文件的特殊功能。真的很有帮助。

  1. 要正确定位所有内容,剪切此文件并进行所有调整(并导出到例如 csv),您可以使用 http://record-editor.sourceforge.net 那是免费的。请注意,经过几次试验后,我注意到其他付费工具对您没有帮助。问题出在第一点:转换。

  2. 为确保一切正常,您可以 运行 甚至 MS Access 或类似工具查看如何创建外键并对所有数据库进行逆向工程。有了工作预览,就可以很容易地在更大范围内做到这一点,例如在 PostgreSQL/Oracle.

就是这样。我希望它对某人有用。

什么是不成功

  1. 正在建立 Actian Vector 服务器;它确实是一个很棒的免费工具,但对您的帮助不大

  2. 尝试一些在线工具(尽管谁知道数据将发送到哪里)

  3. 任何其他 ASCII 编辑器,因为在我的情况下它们中的许多都崩溃了,我想是因为文件大小和一些控制字符 (?)