Подписанный оверпанч

Метод кодирования данных

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

В терминологии IBM младшие четыре бита байта в памяти называются цифрой , а старшие четыре бита — зоной . [ 4] Цифровые биты содержат числовое значение от 0 до 9. Биты зоны содержат либо 'F'x, образуя символы от 0 до 9, либо позиция символа, содержащая надрез , содержит шестнадцатеричное значение, указывающее положительное или отрицательное значение, образуя другой набор символов. (Зоны A, C, E и F указывают положительные значения, B и D — отрицательные).

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

Языковая поддержка

ПЛ/И

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

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

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

КОБОЛ

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

С/С++

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

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

Коды перфорации EBCDIC


символ EBCDIC
ЦифраЗнакКод карты [9]
{0+12-0
А1+12-1
Б2+12-2
С3+12-3
Д4+12-4
Э5+12-5
Ф6+12-6
Г7+12-7
ЧАС8+12-8
я9+12-9
}0-11-0
Дж.1-11-1
К2-11-2
Л3-11-3
М4-11-4
Н5-11-5
О6-11-6
П7-11-7
В8-11-8
Р9-11-9

Примеры

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

ASCII-представление

Представление знаковых символов перекодировки «не стандартизировано в ASCII, и разные компиляторы используют разные коды перекодировки». В некоторых случаях «представление не совпадает с результатом преобразования поля со знаком EBCDIC в ASCII с помощью таблицы перевода». [10] В других случаях они одинаковы, чтобы сохранить совместимость исходных данных при потере связи между кодом символа и соответствующей цифрой.

Отрицательное поле EBCDIC, заканчивающееся цифрой «1», будет кодировать эту цифру как «D1'x», заглавную «J», где цифра — «1», а зона — «D», чтобы указать на отрицательное поле. Заглавная «J» ASCII — это «4A'x», где шестнадцатеричное значение не имеет никакого отношения к числовому значению. Альтернативная кодировка использует для этого представления строчные «q», «71'x», где цифра — «1», а зона — «7». Это сохраняет цифру и последовательность сортировки за счет необходимости распознавать и переводить поля с перештамповками по отдельности.

Примеры

В Gnu COBOL и MicroFocus COBOL для представления отрицательных чисел от «0» до «9» используются строчные буквы от «p» до «y». [11] [12]

Компиляторы PL/I в системах ASCII используют тот же набор символов ({, J–R), что и EBCDIC, для представления надстрочных знаков. [13]

Ссылки

  1. ^ IBM Corporation (июнь 1994 г.). Справочник RPG/400 (PDF) . стр. 403 . Получено 7 августа 2018 г. .
  2. ^ "Tech Talk, COBOL Tutorials, Преобразование знаковых полей из EBCDIC в ASCII" . Получено 15.03.2008 .
  3. ^ Ван Оверберге, младший, Альберт Г. (1987). Техник по обработке данных третьего класса. Программа военно-морского образования и подготовки. стр.  3–8 . Получено 12 января 2022 г.
  4. ^ IBM Corporation. IBM System/360 Principles of Operation (PDF) . стр. 34 . Получено 12 января 2022 г. .
  5. ^ IBM Corporation (октябрь 2001 г.). z/Architecture Principles of Operation (2-е изд.). стр.  7– 112, 7– 158. Получено 7 августа 2018 г.
  6. ^ IBM Corporation ( июнь 1995 г.). IBM PL/I for MVS & VM Language Reference (PDF) . стр.  294–296 . Получено 2 августа 2018 г. .
  7. ^ IBM Corporation. "Enterprise COBOL for z/OS, V4.2, Language Reference". IBM Knowledge Center . Получено 1 мая 2020 г.
  8. ^ IBM Corporation. "Библиотечные функции". IBM Knowledge Center . Получено 1 мая 2020 г.
  9. ^ Корпорация IBM (1989). System/370 Extended Architecture Reference Summary . стр. 41.
  10. ^ "Преобразование знаковых полей из EBCDIC в ASCII". Специалисты по преобразованию медиаданных DISC . Получено 29 ноября 2018 г.
  11. ^ "GnuCOBOL Programmer's Guide". SourceForge . Получено 12 января 2022 г. .
  12. ^ "Micro Focus Visual COBOL 5.0 для Visual Studio 2019". Micro Focus . Получено 12 января 2022 г. .
  13. ^ Корпорация Kednos. "Справочное руководство по системам Kednos PL/I для OpenVMS". Kednos.com . Получено 12 января 2022 г. .
Получено с "https://en.wikipedia.org/w/index.php?title=Signed_overpunch&oldid=1215911355"