Как преобразовать простую строку Java в EBCDIC с упакованным десятичным форматом

Я должен преобразовать все данные в файл в EBCDIC с упакованным десятичным форматом.

Все данные в файле в простом текстовом формате.

Насколько мне известно, нам нужно будет сначала преобразовать ASCII в EBCDIC Cp1047 или какой-либо другой формат, а затем применить логику / код "упакованный десятичный код" (может быть, я ошибаюсь)

преобразованный формат должен быть похож на "C3 C5 40 F0 C9 F8"(т.е. упакованный десятичный формат EBCDIC)

1 ответ

Упакованный десятичный код (Comp3 в Cobol)

  • +123 сохраняется как x'123C '
  • -123 сохраняется как x'123D'
  • без знака 123 это x'123F'

Есть ли у вас Cobol Copybook???, если у вас есть, смотрите вопрос JRecord. JRecord также имеет

  • Программа Csv в Cobol (Конвертируйте файл Csv в Cobol, используя Cobol Copybook)
  • Программа Xml-to-Cobol (Преобразование файла Xml в Cobol с использованием тетради Cobol)

Альтернативы JRecord являются

  • Cobol2J
  • legstar
  • различные коммерческие продукты

Примечание: я автор JRecord


Преобразование числа в десятичное число упаковано довольно просто, и есть несколько способов сделать это

Преобразовать в строку

один вариант

  1. Преобразовать число в строку
  2. Добавьте знак Символ в конец строки
  3. Преобразовать строку в байты (шестнадцатеричная строка)

Java-код для преобразования целого числа в десятичный пакет

    String val = Integer.toString(Math.abs(value));
    if (value < 0) {
        val = val.substring(1) + "D"
    } else {
        val += "C";
    }

    byte[] bytes = (new BigInteger(val, BASE_16)).toByteArray();

Подобный вопрос

Как конвертировать распакованный десятичный код обратно в COMP-3?

Другие вопросы по тегам