代码之家  ›  专栏  ›  技术社区  ›  sunleo

这是否可以使用java将EBCDIC Comp-3文件转换为ASCII文件值?

  •  3
  • sunleo  · 技术社区  · 7 年前

    在我之前的一篇文章中,二进制应该是可以工作的。这是什么

    文案:

    001700 01 EMP-RECORD.                                                           
    001900        10  EMP-NO                     PIC 9(10).                         
    002000        10  EMP-NAME                   PIC X(30).                         
    002100        10  EMP-ADDRESS                PIC X(30).                         
    002200        10  EMP-SALARY                 PIC S9(8)V9(2) COMP-3.             
    002200        10  EMP-ZIPCODE                PIC 9(4).                          
    

    二进制COMP-3文件:

      ËÍ>ÁÁ% ,Í_/Ê Ê                Â/>Å/%?ÊÁ                        Á~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ¢|ëá&ç                        ïçñèá ãñá<à                     ÊÊ>     
    

    0000001001suneel kumar r                city                       e¡5671   
    

    计划:

    public static void main(String args[]) throws Exception {
        String salesFile = "empcompnewbinary.txt";
        String copybookName = "EMPCOPYBOOK.txt";
        AbstractLine saleRecord;
    
        int fileStructure = Constants.IO_FIXED_LENGTH;
        CobolIoProvider ioProvider = CobolIoProvider.getInstance();
        AbstractLineReader reader = ioProvider.getLineReader(fileStructure, Convert.FMT_MAINFRAME,
                CopybookLoader.SPLIT_NONE, copybookName, salesFile);
    
        while ((saleRecord = reader.read()) != null) {
            System.out.print(saleRecord.getFieldValue("EMP-NO").asString() + "-"
                    + saleRecord.getFieldValue("EMP-NAME").asString() + "-"
                    + saleRecord.getFieldValue("EMP-ADDRESS").asString() + "-"
                    + saleRecord.getFieldValue("EMP-SALARY").asDouble() + "-"
                    + saleRecord.getFieldValue("EMP-ZIPCODE").asString());
        }
        reader.close();
    }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Joe Zitzelberger    7 年前

    没有“EBCDIC COMP-3字段”这样的东西,它在ASCII码点中也没有等价物。它是二进制格式。所以请理解,您有一个混合字符和二进制格式的记录。

    Comp-3是压缩小数。在不同的机器架构上,符号半字节等的位置可能会有所不同,但它是一种二进制格式,因此任何使用字符集规则进行转换的尝试都会失败。