标签: ebcdic

C#编码带有压缩小数的EBCDIC文件

我必须为外部实体准备一个文件,并且该实体使用带有COBOL的IBM主机并要求该文件在EBCDIC中编码.我在C#中创建文件.我想这是一个由两部分组成的问题......首先,下面的代码是否足以确保文件以他们可以读取的方式生成?

StreamWriter sw = new StreamWriter(@"C:\EBCDICFileEquivalent.txt", false, Encoding.GetEncoding(37));
Run Code Online (Sandbox Code Playgroud)

其次,文件中的几个字段需要压缩十进制,格式为S(9)13 COMP-3.由于我已经指定了EBCDIC编码,我可以使用以下方法将十进制数字(例如1234500000001)写入文件:

sw.WriteLine("1234500000001C"); 
Run Code Online (Sandbox Code Playgroud)

...并在生成的文件中正确显示?

从未对EBCDIC或COMP-3做过任何事情.

c# encoding decimal ebcdic packed-decimal

7
推荐指数
1
解决办法
3422
查看次数

将EBCDIC String转换为ASCII格式?

我有一个从Db2表中提取的平面文件,平面文件包含char格式的记录以及压缩十进制格式.将打包数据转换为java字符串.有没有办法转换整个平面文件到ASCII格式.

java ebcdic

7
推荐指数
2
解决办法
3万
查看次数

如何使用Java解压缩COMP-3数字?

我有庞大的主机文件,该文件中有一些打包的数字.我想知道如何使用java解压缩后续数字?

打包数字: ?

我阅读了解包数字的教程,并找到了以下规则来计算解包数字所需的字节数:

total_number_of_bytes = (no. of digits + 1) / 2

我写了以下代码来解压缩数字:

public String unpackData(String packedData, int decimalPointLocation) {
        String unpackedData = "";
        char[] characters = packedData.toCharArray();
        final int impliedPositive = 15;
        final int positiveNumber = 12;
        final int negativeNumber = 13;
        for (int currentCharIndex = 0; currentCharIndex < characters.length; currentCharIndex++) {
            byte[] unpackedDigits = unpackByte((byte) characters[currentCharIndex]);
            if(currentCharIndex == (characters.length - 1)) {
                if(unpackedDigits[1] == impliedPositive || unpackedDigits[1] == positiveNumber) {
                    unpackedData += String.valueOf(unpackedDigits[0]);
                } else if(unpackedDigits[1] == …
Run Code Online (Sandbox Code Playgroud)

ascii mainframe ebcdic packed-decimal

7
推荐指数
1
解决办法
1万
查看次数

Java:将String转换为压缩十进制

新来的!

情况:我正在开发一个需要与AS/400服务器通信的项目.我的任务是基本上处理将发送到AS/400服务器的请求.为此,所有用户输入应为EDCDIC字节.

问题:
我已设法将压缩小数转换为String,其代码如下,在此论坛中找到:

public class PackedDecimal {
    public static long parse(byte[] pdIn) throws Exception {
        // Convert packed decimal to long
        final int PlusSign = 0x0C; // Plus sign
        final int MinusSign = 0x0D; // Minus
        final int NoSign = 0x0F; // Unsigned
        final int DropHO = 0xFF; // AND mask to drop HO sign bits
        final int GetLO = 0x0F; // Get only LO digit
        long val = 0; // Value to return

        for (int i …
Run Code Online (Sandbox Code Playgroud)

java byte ascii ebcdic ibm-midrange

5
推荐指数
1
解决办法
1万
查看次数

解码Ebcdic

我正在传递ebcdic编码的数据。就像是:

s = u'@@@@@@@@@@@@@@@@@@@ÂÖÉâÅ@ÉÄ'
Run Code Online (Sandbox Code Playgroud)

尝试.decode('cp500')是错误的,但是正确的方法是什么?如果我将字符串复制到类似Notepad ++的文件中,则可以将其从EBCDIC转换为ascii,但是我似乎在python中找不到可行的方法来实现这一点。对于它的价值,正确的结果是:(BOISE ID加或减空格)。

该信息是从JSON对象行的文件中检索的。该文件如下所示:

{ "command": "flush-text", "text": "@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O" }
{ "command": "flush-text", "text": "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\u00C9\u00C4@\u00D5\u00A4\u0094\u0082\u0085\u0099z@@@@@@@@@@\u00D9\u00F5\u00F9\u00F7\u00F6\u00F8\u00F7\u00F2\u00F4" }
{ "command": "flush-text", "text": "@@@@@OmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmO" }
{ "command": "flush-text", "text": "@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O" }
Run Code Online (Sandbox Code Playgroud)

处理循环如下所示:

with open('myfile.txt', 'rb') as fh:
  for line in fh:
    data = json.loads(line)
Run Code Online (Sandbox Code Playgroud)

python character-encoding ebcdic

5
推荐指数
1
解决办法
5167
查看次数

如何为 Cobol 字帖生成 java~jrecord 代码

如何使用RecordEditor从Cobol Copybook生成Java~JRecord代码 来读取/写入二进制 EBCDIC 大型机文件

这是一个问题答案,试图防止提出一些糟糕/误导性的问题或可以指出答案。

java cobol mainframe ebcdic jrecord

5
推荐指数
1
解决办法
7969
查看次数

使用任何开源代码或工具将Mainframe Binary转换为Ascii

如何将具有cobol copybook作为记录布局信息的大型机二进制文件(EBCDIC)转换为ASCII文件,并记住使用任何Java API或开源工具的打包和分区十进制格式?

java cobol ascii mainframe ebcdic

4
推荐指数
1
解决办法
7005
查看次数

EBCDIC编码中String的Java比较器

我遇到过一个要求,我需要将字符串转换为EBCDIC编码然后对其进行排序.我们需要用EBCDIC对它进行排序,因为字符串必须进入大型机.我将排序的字符串仅包含captial和integers中的字母.

我用Google搜索了一些然后我遇到了IBM链接,它已按顺序列出了字符

我意识到EBCDIC排序与普通的java词典排序完全相反(至少对于我要处理的数据类型).

我的问题是我的认识对吗?如果不是我错过了什么?或者是否有任何可用于EBCDIC编码的java比较器.

java ebcdic comparator

4
推荐指数
2
解决办法
1916
查看次数

ASCII 到 EBCDIC 字符编码

将 ASCII 字符串转换为 EBCDIC 时:

\n\n
System.out.println(new String("0810C2200000820000000400000000000000052852304131419391011590620022300270".getBytes("UTF-8"), "CP1047"));\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到以下输出字符串:

\n\n
\xc3\xa4??????\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,我想要的是:

\n\n
F0 F8    F1 F0    C2 20    00 00    82 00    00 00    04 00  00 00    00 00    00 00   F4 F1    F0 F1    F1 F5  F9 F0    F6 F2    F0 F0    F2 F2    F3 F0    F0 F2    F7 F0\n
Run Code Online (Sandbox Code Playgroud)\n\n

我怎样才能实现它?任何帮助将不胜感激。

\n\n

谢谢

\n

java hex ascii character-encoding ebcdic

3
推荐指数
1
解决办法
5801
查看次数

如何检查字符常量是否符合ASCII?

对早期版本的评论这个回答我的提醒我的事实,我不能想当然地认为'A','B','C'等有连续的数值.我有点假设C或C++语言标准保证这是这种情况.

那么,我该如何确定连续字母字符的值本身是否连续?或者更确切地说,我如何确定单引号内可以表达的字符常量是否具有数字值的ASCII代码?

我问的是如何在C和C++中做到这一点.显然C语言也适用于C++,但是如果有一个C++ ish工具来做这个我也对它感兴趣.另外,我问的是最新的相关标准(C11,C++ 17).

c c++ ascii ebcdic language-lawyer

3
推荐指数
1
解决办法
400
查看次数