我需要直接操作大型机中的文件。文本将以 EBCDIC 进行编码。数据可以包含二进制和压缩十进制字段。我知道我可以处理这些数据。我试图避免转换。 (以及基于文本或二进制转换每个字段的麻烦)。我熟悉大型机、USS和CentOS系统。我想做的是将 CentOS 翻转为纯粹的 EBCDIC。在互联网和 StackExchange 上进行搜索后,发现的信息很少。
我看到一篇文章,其中 Sammyrulez “...通过向 /etc/i18n/sysconfig 添加 lang 和编码,成功向 CentOS 机器添加了 EBCDIC 支持。”
似乎应该有比这更多的事情。
我计划通过 GCC 或任何效果最好的产品来使用 COBOL。(一次克服一个障碍)
有人经历过这个吗?
答案1
不,让整个系统在 EBCDIC 中工作是不可能的。这需要重新编译所有程序并修改其中相当多的程序的源代码(许多程序做出诸如“ASCII 大写字母恰好是A
和之间的字符Z
”之类的假设)。
您可以使特定程序与 EBCDIC 配合使用。没有很多程序支持它——如今它只是一个小众应用程序。该程序dd
可以在 ASCII 和 EBCDIC(至少一种 EBCDIC)之间进行转换,但它会转换其整个输入,而不是选定的字段。对于像您这样的混合数据,最好的办法是仔细编程,如果您需要将 EBCDIC 字段解释为文本,则将它们转换为 ASCII 并返回。
答案2
正如贾尔斯所说,不。但是您可以使用一些工具来处理 EBCDIC。您不能对这些文件使用标准的 linux/unix 工具集。
此外,您在传输 Mainframe VB 文件时可能会遇到问题(并非所有文件传输程序都处理 Mainframe-VB 文件)。
许多 Java 程序(例如J编辑)可以处理 EBCDIC(CP037 或 IBM037 是 US Ebcdic),但大多数不会处理固定宽度或者VB大型机上使用的文件结构。
从记忆里GNU-Cobol(+许多其他 Cobol 编译器)具有处理 EBCDIC 文件的方法。 GNU-Cobol 还有一个大型机兼容模式,它将使用大型机二进制大小。一些 Cobol 供应商 (Microfocus) 提供智能 Cobol-Cobol 转换程序,可以将大型机 Cobol 文件转换为自己的格式。显然,重新定义是一个大问题。
我自己的无耻插件软件:记录编辑器可以使用 Cobol Copybook 编辑/更新固定宽度/VB 格式的大型机文件。它还具有 Cobol-to-Cobol 实用程序,可以尝试将简单的大型机 Ebcidic 文件转换为等效的 Gnu-Cobol ascii 文件。重新定义又是一个大问题。