有没有办法使用 Java 或 .Net 或某种 API 来读取可变的 EBCDIC 文件并解压缩 COMPUTANIONAL-3 数据?
我已经搜索过,我能找到的只是 UltraEdit 将 EBCDIC 转换为 ANSI,但由于可变长度和 COMP-3,该文件仍然不可用。
在您的数据来源的 z/OS 上,有一个名为Java Batch Toolkit for z/OS (JZOS)的 Java 包,它提供了许多类来处理大型机数据集和记录(大型机代表文件)。谷歌“IBM JZOS”。
由于您提到.net,我假设您指的是在 PC (Windows) 上运行的代码,而 JZOS 不是一个选项。
如果文件是使用 FTP 下载的,则在客户端使用bin
和quote mode b
,将在每条记录前添加一个 3 字节标头的记录(请参阅RFC 959:FTP,第 3 章“数据传输功能”,“3.4.2.块模式”部分" )。
标头允许代码了解这是否是最后一条记录,更重要的是,了解每条记录的长度。请注意,两字节二进制长度字段采用大端格式。
您需要了解记录结构,即记录由哪些字段组成。并且,每个字段的格式,即EBCDIC字符字段、压缩十进制字段(COMPUTATIONAL-3)等。
接下来,您需要知道大型机上使用的 EBCDIC 代码页。然后,您可以使用 iconv()(或相应的 Java 方法)将它们转换为您需要的任何代码页。
至于压缩十进制字段,您还需要知道精度,即假定有多少位是小数位。