将VB EBCDIC文件转换为ASCII,其中copybook记录以01分隔



我们有一个VB(可变长度)记录的EBCDIC文件。与此EBCDIC相对应,我们有copybook,其中记录用01类型&单个记录还包含打包的十进制字段。请建议我们如何将这种EBCDIC文件转换为ASCII。

由于公司安全政策,我们无法安装RecordEditor。我们正在使用JRecord库,我们正在创建这样的对象:
ICobolIOBuilder iob = CobolIoProvider.getInstance() 
.newIOBuilder(copybookName) 
.setCopybookFileFormat(Convert.FMT_MAINFRAME) 
.setFileOrganisation(Constant.IO_VB) 
.setSplitCopybook(CopybookLoader.SPLIT_01_LEVEL) .setFont("cp037");

之后,当我们使用AbstarctLineReader逐行读取文件时,它会带有许多特殊字符。请建议。

在ebcdicc和其他任何代码页中都没有"打包小数"。打包十进制是一种二进制数字格式,IBM大型机(和其他)处理器通过一组本机机器指令支持这种格式。它是BCD(二进制编码十进制)格式的实现。参见维基百科上的二进制编码十进制。

基础知识

在你做任何事情之前,你需要:

  • 工作记录如何区分各种记录类型。它可以是记录开头的一个字段(名称中可以有记录类型)。
  • 如果你正在从主机传输文件,你需要小心

转换可能有用的包

  • RecordEditor应该能够使用Cobol Copybook编辑文件(您需要导入Copybook)。RecordEditor也可以将文件写入Xml。

  • java项目JRecord及其子项目如CobolToXml可以进行转换。RecordEditor为JRecord提供了一些代码生成选项

最后看一下如何生成Java~JRecord代码

压缩后的十进制,在EBCDIC中是这样的:

005F  005C  005D

第一个值005F是一个PIC 999 COMP-3无符号值5。每个数字由一个字节表示,最后一个字节是符号字节。每个字节包含两个十进制数字,最右边的字节除外。最右的字节保存左半字节中最右的数字和右半字节中的符号。

第二个值005C是PIC S999的p -3正值5。

第三个值005D为PIC S999 COMP-3负值-5。

现在,当你把它转换成ASCII码后,我不知道打包的十进制是什么样子的。您必须将ASCII文件中的一些行以十六进制的形式添加到问题中,这样我们就可以看到转换器做了什么。

相关内容

  • 没有找到相关文章

最新更新