Подписанный оверпанч - Википедия - Signed overpunch

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

В ПАКЕТ инструкция по Архитектура IBM System / 360 машины преобразует знак зонного десятичного числа при преобразовании в упакованная десятичная дробь, а соответствующие УНПК Команда установит правильный знак перфорации для своего зонального десятичного вывода.[3]

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

PL / I

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

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

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

КОБОЛ

COBOL использует графический символ "S" для ДИСПЛЕЙ ИСПОЛЬЗОВАНИЯ данные без ЗНАК - ОТДЕЛЬНЫЙ ХАРАКТЕР чтобы обозначить перебор. ЗНАК ВЕДУЩИЙ указывает, что перфорация находится над первым символом поля, по умолчанию, ЗНАК ТРЕБУЕТСЯ, помещает его над последним символом. ЗНАК ТРЕБУЕТСЯ по умолчанию.[5]

C / C ++

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

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

Коды

EBCDIC
персонаж
ЦифраЗнакКод карты[7]
{0+12-0
А1+12-1
B2+12-2
C3+12-3
D4+12-4
E5+12-5
F6+12-6
грамм7+12-7
ЧАС8+12-8
я9+12-9
}0-11-0
J1-11-1
K2-11-2
L3-11-3
M4-11-4
N5-11-5
О6-11-6
п7-11-7
Q8-11-8
р9-11-9

Примеры

10} равно -100
45А это 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, преобразование подписанных полей из EBCDIC в ASCII". Получено 2008-03-15.
  3. ^ Корпорация IBM (октябрь 2001 г.). z / Архитектура Принципы работы (2-е изд.). С. 7–112, 7–158. Получено 7 августа, 2018.
  4. ^ Корпорация IBM (июнь 1995 г.). IBM PL / I для справочника по языку MVS и VM (PDF). стр. 294–296. Получено 2 августа, 2018.
  5. ^ Корпорация IBM. «Enterprise COBOL для z / OS, V4.2, справочник по языку». Центр знаний IBM. Получено 1 мая, 2020.
  6. ^ Корпорация IBM. «Библиотечные функции». Центр знаний IBM. Получено 1 мая, 2020.
  7. ^ Корпорация IBM (1989). Краткое описание расширенной архитектуры System / 370. п. 41.
  8. ^ «Преобразование подписанных полей из EBCDIC в ASCII». Специалисты по DISC Media Conversion. Получено 29 ноя, 2018.