Jump to content

Подписанный удар

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

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

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

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

[ редактировать ]

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 для отрицательного числа. [6]

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

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

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

  • QXXDTOZ() — Преобразовать двойное число в зонное десятичное число
  • 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
45А это 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 используют строчные буквы от «p» до «y» для обозначения отрицательных значений от «0» до «9». [11] [12]

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

  1. ^ Корпорация IBM (июнь 1994 г.). Справочник по RPG/400 (PDF) . п. 403 . Проверено 7 августа 2018 г.
  2. ^ «Tech Talk, учебные пособия по COBOL, преобразование знаковых полей EBCDIC в ASCII» . Проверено 15 марта 2008 г.
  3. ^ Ван Оверберг-младший, Альберт Г. (1987). Техник обработки данных третьего класса . Программа военно-морского образования и подготовки. стр. 3–8 . Проверено 12 января 2022 г.
  4. ^ Корпорация IBM. Принципы работы IBM System/360 (PDF) . п. 34 . Проверено 12 января 2022 г.
  5. ^ Корпорация IBM (октябрь 2001 г.). z/Принципы работы архитектуры (2-е изд.). стр. 7–112, 7–158 . Проверено 7 августа 2018 г.
  6. ^ Корпорация IBM (июнь 1995 г.). Справочник по языку IBM PL/I для MVS и VM (PDF) . стр. 294–296 . Проверено 2 августа 2018 г.
  7. ^ Корпорация IBM. «Enterprise COBOL для z/OS, V4.2, справочник по языку» . Центр знаний IBM . Проверено 1 мая 2020 г.
  8. ^ Корпорация IBM. «Библиотечные функции» . Центр знаний IBM . Проверено 1 мая 2020 г.
  9. ^ Корпорация IBM (1989). Краткое описание расширенной архитектуры System/370 . п. 41.
  10. ^ «Преобразование знаковых полей EBCDIC в ASCII» . Специалисты по конвертации носителей DISC . Проверено 29 ноября 2018 г.
  11. ^ «Руководство программиста GnuCOBOL» . СоурсФордж . Проверено 12 января 2022 г.
  12. ^ «Micro Focus Visual COBOL 5.0 для Visual Studio 2019» . Микро Фокус . Проверено 12 января 2022 г.
  13. ^ Корпорация Кеднос. «Справочное руководство Kednos PL/I для систем OpenVMS» . Кеднос.com . Проверено 12 января 2022 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4c7733a1683875f5b5f4213f6dd53948__1711565940
URL1:https://arc.ask3.ru/arc/aa/4c/48/4c7733a1683875f5b5f4213f6dd53948.html
Заголовок, (Title) документа по адресу, URL1:
Signed overpunch - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)