Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Подписал overpunch это код , используемый для хранения знака числа путем изменения последней цифры. Он используется в символьных данных на мэйнфреймах IBM такими языками, как COBOL , PL / I и RPG . [1] Его цель - сохранить символ, который в противном случае использовался бы в знаковой цифре. [2] Код является производным от кода перфокарты Холлерита , где и цифра, и знак могут быть введены в один и тот же столбец карты. Это называется перфорацией, потому что цифра в этом столбце имеет отметку 12 или 11 над ней, чтобы указать знак. Символьные данные, которые могут содержать перфорированные символы, называются зонными десятичными числами .

Команда PACKна машинах с архитектурой IBM System / 360 преобразует знак зонированного десятичного числа при преобразовании в упакованное десятичное , и соответствующая UNPKкоманда установит правильный знак перфорированного десятичного числа в выходном формате. [3]

Языковая поддержка [ править ]

PL / I [ править ]

PL / I использует PICTUREатрибут для объявления зональных десятичных данных со знаком перетяжки. Каждый символ в числовом изображении, за исключением того V, который указывает положение предполагаемой десятичной точки, представляет собой цифру. Символ изображения T, Iили Rуказывает на позицию цифры, которая может содержать перфорацию. Tуказывает, что позиция будет содержать {–I, если положительное, и} –R, если отрицательное. Iуказывает, что позиция будет содержать {–I, если положительное значение, и 0-9, если оно отрицательное. Rуказывает, что позиция будет содержать 0–9 в случае положительного значения и} –R в случае отрицательного значения.

Например, PICTURE 'Z99R'описывает четырехзначное числовое поле. Первая позиция может быть пустой или содержать цифры 0–9. Следующие две позиции будут содержать цифры, а четвертая позиция будет содержать 0–9 для положительного числа и} –R для отрицательного. [4]

Присвоение значения 1021 изображенному выше изображению сохранит в памяти символы «1021»; присвоение -1021 сохранит "102J".

КОБОЛ [ править ]

COBOL использует символ изображения «S» для USAGE IS DISPLAYданных без SIGN IS SEPARATE CHARACTERуказания перегиба. SIGN IS LEADINGуказывает, что перфорация находится над первым символом поля, по умолчанию,, SIGN IS TRAILINGпомещает его поверх последнего символа. SIGN IS TRAILINGпо умолчанию. [5]

C / C ++ [ править ]

В языке C не предусмотрена зонная десятичная дробь. Компилятор IBM ILE C / C ++ для System i предоставляет функции для преобразования между intили doubleи зонным десятичным числом: [6]

  • QXXDTOZ () - Преобразование двойного числа в зонное десятичное
  • QXXITOZ () - Преобразование целого числа в зонированное десятичное
  • QXXZTOD () - Преобразование зонального десятичного числа в двойное
  • QXXZTOI () - Преобразование зонального десятичного числа в целое число

Коды [ править ]

Примеры [ править ]

10} равно -100
45A равно 451

Десятичные точки обычно подразумеваются и явно не указываются в тексте. Использование чисел с двумя десятичными цифрами:

1000} составляет -100,00

Представление ASCII [ править ]

COBOL-представление подписанных символов переноса "не стандартизировано в ASCII, и разные компиляторы используют разные коды переноса". В большинстве случаев «представление не совпадает с результатом преобразования поля со знаком EBCDIC в ASCII с таблицей преобразования». [8] Компиляторы PL / I в системах ASCII используют тот же набор символов, что и в EBCDIC, для представления перфорированных символов.

Ссылки [ править ]

  1. ^ Корпорация IBM (июнь 1994 г.). Справочник по RPG / 400 (PDF) . п. 403 . Проверено 7 августа 2018 года .
  2. ^ "Tech Talk, COBOL Tutorials, EBCDIC to ASCII Conversion of Signed Fields" . Проверено 15 марта 2008 .
  3. ^ IBM Corporation (октябрь 2001). z / Принципы работы архитектуры (2-е изд.). С. 7–112, 7–158 . Проверено 7 августа 2018 года .
  4. ^ Корпорация IBM (июнь 1995 г.). IBM PL / I for MVS & VM Language Reference (PDF) . С. 294–296 . Проверено 2 августа 2018 года .
  5. ^ Корпорация IBM. «Корпоративный COBOL для z / OS, V4.2, Справочник по языку» . Центр знаний IBM . Проверено 1 мая 2020 года .
  6. ^ Корпорация IBM. «Библиотечные функции» . Центр знаний IBM . Проверено 1 мая 2020 года .
  7. ^ Корпорация IBM (1989). Краткое описание расширенной архитектуры System / 370 . п. 41.
  8. ^ «Преобразование подписанных полей из EBCDIC в ASCII» . Специалисты по преобразованию мультимедиа DISC . Проверено 29 ноября 2018 года .