Чтение файлов переменных EBCDIC с помощью comp-3 без COBOL на MVS?

Есть ли способ с помощью Java или внутри .Net или какого-либо API для чтения файлов EBCDIC, которые являются переменными, и распаковать данные COMPUTANIONAL-3?

Я искал, и все, что я мог найти, это то, что UltraEdit преобразует EBCDIC в ANSI, но файл по-прежнему нельзя использовать из-за переменной длины и COMP-3.


person user6854154    schedule 16.12.2020    source источник
comment
Вы не можете ничего преобразовать в ANSI, поскольку ANSI — это организация.   -  person David Conrad    schedule 17.12.2020
comment
@David Conrad. Действительно существует набор кодовых страниц, который называется ANSI something. Взгляните на docs.microsoft.com/en-us/windows/win32/intl/ и прокрутите вниз до кодовых страниц, начинающихся с CP-1250.   -  person phunsoft    schedule 18.12.2020
comment
@phunsoft Существует множество кодировок, стандартизированных ANSI, который является организацией, и они могут называться как-то ANSI, но они не называются ANSI, что является названием организации, и как вы сами использовали его, они правильно называются CP-1250 или Windows-1252 и т. д.   -  person David Conrad    schedule 19.12.2020


Ответы (1)


В z/OS, откуда исходят ваши данные, существует пакет Java под названием Java Batch Toolkit для z/OS (JZOS), который предлагает множество классов для работы с наборами данных мейнфрейма. > и записи (в мейнфрейме вместо файл). Гугл IBM JZOS.

Поскольку вы упомянули .net, я предполагаю, что вы имеете в виду код, работающий на ПК (Windows), и JZOS не подходит.

Если файлы загружаются с использованием FTP, с использованием bin и quote mode b на стороне клиента записи будут передаваться с добавлением 3-байтового заголовка к каждой записи (см. RFC 959: FTP, глава 3 Функции передачи данных, раздел 3.4.2. Блочный режим).

Заголовок позволяет коду понять, последняя это запись или нет, и, что более важно, длину каждой записи. Обратите внимание, что поле двухбайтовой двоичной длины имеет формат с обратным порядком байтов.

Вам нужно будет понять структуру записи, т.е. из каких полей она состоит. И формат каждого поля, то есть поле символов EBCDIC, упакованное десятичное поле (COMPUTATIONAL-3) и т. д.

Далее вам нужно знать кодовую страницу EBCDIC, используемую на мейнфрейме. Затем вы можете использовать iconv() (или соответствующие методы Java), чтобы преобразовать их в любую кодовую страницу, которая вам нужна.

Что касается упакованных десятичных полей, вам также необходимо знать точность, т.е. сколько цифр предполагается цифрами десятичной дроби.

person phunsoft    schedule 17.12.2020