Комментарий в вашем коде неверный.У упакованных данных с положительным знаком в последнем клеве есть x'A ', x'C', x'E 'или x'F'.У мэйнфреймов также есть понятие «предпочтительный знак», который представляет собой x'C 'в последнем кусочке для положительного и x'D' в последнем кусочке для отрицательного.
Обычно данные мэйнфреймов включают в одну запись как текстовые, так и двоичные данные, например, имя, сумму валюты и количество:
Hopper Grace ar% .
... что будет ...
x'C8969797859940404040C799818385404040404081996C004B'
... в гексагоне.Это кодовая страница 37, обычно называемая EBCDIC.
Не зная, что фамилия ограничена первыми 10 байтами, данное имя ограничено последующими 10 байтами, сумма валюты указана в упакованном десятичном формате (также известном как двоично-десятичный код) в следующих 3 байтах.и количество в следующих двух байтах, вы не можете точно передать данные, потому что преобразование кодовой страницы уничтожит сумму валюты.При преобразовании в кодовую страницу 1250, обычно используемую в Microsoft Windows, вы получите ...
x'486F707065722020202047726163652020202020617225002E'
... где текстовые данные переведены, но упакованные данныеуничтожены.Упакованные данные больше не имеют действительного знака в последнем полубайте (нижняя половина последнего байта), сама сумма валюты была изменена так же, как и количество (с десятичного 75 на десятичное 11 776 из-за преобразования кодовой страницы и искажениябольшой порядковый номер как порядковый номер).
На этот вопрос есть несколько ответов, которые могут вам помочь.Моя рекомендация состоит в том, чтобы преобразовать все данные в мэйнфрейм в текст до их переноса на другую платформу.В этом есть превосходные утилиты для мэйнфреймов.