【问题标题】:convert cobol COMP data to ASCII将 cobol COMP 数据转换为 ASCII
【发布时间】:2026-01-21 04:25:01
【问题描述】:

我正在使用实用程序 vutil 将一些 COBOL dat 文件转换为 ASCII:

vutil -extract input.dat > output.txt

我无法从 COMP 数据字段中获得人类可读的响应。 这是我的 FD 文件的一部分

05 FAT-TIPOFT   PIC 9(4).
05 FAT-DINI     PIC 9(8).
05 FAT-DFIN     PIC 9(8).
05 FAT-IMPON    PIC S9(7)V99 COMP.
05 FAT-INPS     PIC 99.
05 FAT-IMPINPS  PIC S9(7)V99 COMP.
05 FAT-IVA      PIC 99.

这里是一个 ASCII 转换示例:

0107200230062003 ‚p00    20  ³° 6 00     6       

转换只适用于 NON-COMP 字段

是否有任何额外的命令或替代实用程序或技术来转换 COMP 字段?

注意我不想进入Cobol世界,我只是想转换数据并摆脱它!

【问题讨论】:

  • 不想进入COBOL世界,为什么要使用COBOL标签?在你“转换”它之前,你幻想它是什么编码?该系统是 AcuCOBOL 系统。假设有人是最新的许可证,请联系 Micro Focus 支持。我建议向他们重新提出问题,虽然,因为你付钱给他们,他们会回答,无论你输入什么愚蠢的东西。
  • 我还想知道对该问题的支持。没有转换。如果您有同事/朋友为您的问题投票以使其看起来更有趣,那么它没有奏效。这是一些文档:supportline.microfocus.com/documentation/acucorpproducts/docs/…。甚至没有任何暗示有任何编码转换(因为没有)。您最好将问题重写为“这是一个四字节的二进制字段,当 COBOL PICture 指示两位小数时,我如何理解小数部分的表示方式。
  • 假设您有一个四字节整数,以您喜欢的任何语言存储在文件中。现在,您的任务是获取该数据,并用它“做某事”以“将其转换为 ASCII”,而不参考创建该记录的原始程序。
  • 如果没有其他解决方案,如何将四字节整数转换为 ASCII 将是我的下一个尝试。我只有几张表要转换,我希望我不必为这个临时问题学习如此低级的头痛。
  • 这不是希望您不必学习这种低级头痛的问题,而是您将无能为力(您不知道自己在说什么) .如何将二进制值转换为 ASCII?这是一个毫无意义的陈述。 @Bruce Martin 的第三条是您继续进行的唯一合理方式,因为您知道的不够多,也无意发现。你需要用勺子喂,布鲁斯做到了。请不要自行尝试将这些二进制值转换为字符。

标签: cobol


【解决方案1】:

可能的解决方案:

  1. 您可能不想编写 Cobol 程序,对于一个文件,它可能是最快且最便宜的解决方案。

  2. 有各种商业软件包声称可以读取 Acu Cobol 文件,但可能很昂贵。

  3. 对于这个文件,你可以看看RecordEditor,稍微摆弄一下你可能(我的意思是可能)让它工作.对于本 Cobol-Cobol-Copybook,请尝试将其作为 Mainframe 或 Open-Cobol Copybook 导入。我怀疑 Open-?Cobol Microfocus 可能会更好。 (注:我是RecordEditor的作者)


我认为数据可能是,没有二进制文件和原始数据,我无法确定。

提供的数据中的前 16 个字节看起来像 2 个日期,所以我已与 FAT-DINI/FAT-DFIN 对齐,但这只是一个猜测:

    0107200230062003  ‚p00    20
22223333333333333333008733000033
00000107200230062003002000000020

在我得到的记录编辑器中:


在 RecordEditor lib 目录中,有一个 JRecord.properties 用于“定义 Cobol 方言”。

【讨论】:

  • I don't want to enter into Cobol world, I just want to convert data and get rid of it! 所以 1(大量 COBOL 代码)和 3(需要抄写本)都不可行 :-) 3 号是要走的路,不过...
  • 一个转换数据的外部工具,不用再去想它们这是我需要的最佳解决方案。我正在玩 The recordEditor,如果它对我有用,我现在就让你玩。
  • 终于成功了!感谢 Bruce Martin 和他非常出色的软件,您为我节省了大量时间。
  • 您为 copybook 、“Mainframe”和“Open-Cobol”建议的配置都有效。我只是在导入有关列的字帖时遇到了一些问题(我发现编译器忽略了大多数 COBOL 布局中的第 1-6 列,第 72 列之后的所有内容也是如此)。
  • 对于 s9(7)V99 comp;无论 Cobol 编译器如何(大端 4 字节整数),它几乎总是相同的。困难在于正 comp 和其他大小(例如 s99 comp 是一个或两个字节)。 RecordEditor 有一个 JRecord.properties,可以让你指定新的方言(当然有限制)。