首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java解压COMP-3数字

用Java解压COMP-3数字
EN

Stack Overflow用户
提问于 2017-08-08 19:47:01
回答 4查看 5K关注 0票数 1

我有一个包含一些COMP-3编码字段的文件。谁能告诉我如何在下面的线程中测试这段代码?

How to unpack COMP-3 digits using Java?

我试过的代码是

BufferedReader br =新BufferedReader(新文件名(FileReader){

代码语言:javascript
复制
    String sCurrentLine;
    int i=0;
    String bf =null;
    while ((sCurrentLine = br.readLine()) != null) {
        i++;
        System.out.println("FROM BYTES ");
            System.out.println(unpackData(sCurrentLine.getBytes(), 5));

        for (int j = 0; j < sCurrentLine.length(); j++) {
            char c = sCurrentLine.charAt(j);
            bf =bf + (int)c;
        }

上面的代码没有给出正确的结果。我尝试了单列转换,但没有返回正确的结果。我的输入列

输入文件看起来像这样

我尝试了JRecord,通过cbl的副本和数据文件,它生成的Java代码是不同的结果生成的输出

所需输出

cbl复印本如下图所示

EN

回答 4

Stack Overflow用户

发布于 2017-08-08 20:56:51

如果使用基于AsciiCobol,则接受的答案可能会 in How to unpack COMP-3 digits using Java? work。当使用FileReader读取大型机Ebcdic文件时,它将不起作用。

您已将问题标记为Mainframe - Ebcdic

为了正确处理,

  1. 从大型机(或在大型机上运行)执行二进制传输。请勿执行ascii转换,这将损坏comp-3字段。
  2. 将文件作为流读取,并将其作为字节进行处理。

COMP-3 data unpacking in Java (Embedded in Pentaho)中的答案将会起作用;关于stackoverflow的其他答案也会起作用。

尝试将Comp-3数据作为字符处理容易出错

JRecord

如果你有一个Cobol拷贝本,JRecord library将允许你使用Cobol拷贝本来阅读文件。它包含一个经过基础知识的文档ReadMe_NewUsers.html。

RecordEditor

RecordEditorGenerate >>> Java~JRecord code for cobol菜单选项将从Cobol copybook (以及可选的数据文件)生成Java~JRecord。

在这个答案How do I identify the level of a field in copybook using JRecord in Java?或查看here中有关于生成代码的详细信息

另外,在RecordEditor中,Record Layout >>> Load Cobol Copybook将加载Cobol copybook;然后您可以使用Layout查看该文件。

票数 0
EN

Stack Overflow用户

发布于 2017-08-10 14:43:25

处理压缩小数的最好方法是使用IBM Data Access Accelerator API。它使用名为packed objects的IBM优化,这是一种用于有效处理本机数据的技术。有一些很好的Java代码可用于处理打包的十进制数据,但数据访问加速器是明智的选择。它把凉码吹走了。

票数 0
EN

Stack Overflow用户

发布于 2017-08-11 19:53:54

如果您将copybook与data进行比较,则会发现它不匹配。

特别地,Class-Order-edg被定义为pic 9(3),但在文件中它看起来像是二进制

Bils-count-edg看起来被移位了6个字节。这与字段Class-order-edg --> Country-no-edg更改为comp-3/comp一致。抄写本似乎已经过时了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45567511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档