stringtranslate.com

EBCDIC

Расширенный двоично - десятичный код обмена [1] [2] ( EBCDIC ; [1] / ˈɛbsɪdɪk / ) восьмибитная кодировка символов , используемая в основном в операционных системах мэйнфреймов IBM и компьютеров среднего класса IBM . Она произошла от кода, используемого с перфокартами , и соответствующего шестибитного двоично-десятичного кода, использовавшегося в большинстве периферийных устройств компьютеров IBM в конце 1950 - х и начале 1960-х годов. [3] Она поддерживается различными платформами не-IBM, такими как Fujitsu-Siemens ' BS2000/OSD , OS-IV, MSP и MSP-EX, серия SDS Sigma , Unisys VS/9 , Unisys MCP и ICL VME .

История

Перфокарта с кодировкой Холлерита набора символов EBCDIC 1964 года. Контрастность в верхней части увеличена, чтобы показать напечатанные символы. «Цифровые» пробивки (0-9) напрямую переводятся в нижние 4 бита EBCDIC, хотя верхние 4 бита EBCDIC более сложны.

EBCDIC был разработан в 1963 и 1964 годах компанией IBM и был анонсирован с выпуском линейки мэйнфреймов IBM System/360 . Это восьмибитная кодировка символов, разработанная отдельно от семибитной схемы кодирования ASCII . Она была создана для расширения существующего двоично-десятичного (BCD) кода обмена, или BCDIC , который сам по себе был разработан как эффективное средство кодирования двух зонных и числовых перфораций на перфокартах в шесть бит. Отдельное кодирование «s» и «S» (использование позиции 2 вместо 1) сохранилось из перфокарт, где было желательно не располагать перфорации слишком близко друг к другу, чтобы гарантировать целостность физической карты. [4] [ неудачная проверка ]

Хотя IBM была главным сторонником комитета по стандартизации ASCII, [5] у компании не было времени подготовить периферийные устройства ASCII (например, перфокарты) для поставки с компьютерами System/360, поэтому компания остановилась на EBCDIC. [3] System/360 стала невероятно успешной вместе с такими клонами, как RCA Spectra 70 , ICL System 4 и Fujitsu FACOM, а значит, и EBCDIC.

Все операционные системы мэйнфреймов IBM и ее операционная система IBM i для компьютеров среднего уровня используют EBCDIC в качестве своей собственной кодировки [6] (например, с допуском для ASCII, ISPF в z/OS может просматривать и редактировать файлы, закодированные как EBCDIC, так и ASCII). Программное обеспечение может переводить в кодировки и из них, а современные мэйнфреймы (например, IBM Z ) включают инструкции процессора на аппаратном уровне для ускорения перевода между наборами символов.

Существует EBCDIC-ориентированный формат преобразования Unicode, называемый UTF-EBCDIC , предложенный Unicode Consortium , разработанный для обеспечения простого обновления программного обеспечения EBCDIC для обработки Unicode , но не предназначенный для использования в открытых средах обмена. Даже в системах с обширной поддержкой EBCDIC он не стал популярным. Например, z/OS поддерживает Unicode (предпочитая именно UTF-16 ), но z/OS имеет лишь ограниченную поддержку UTF-EBCDIC.

Не все операционные системы, работающие на оборудовании IBM, используют EBCDIC; IBM AIX , Linux на IBM Z и Linux на Power используют ASCII, как и все операционные системы, работающие на персональном компьютере IBM и его последователях.

Совместимость с ASCII

Написание программного обеспечения, работающего как в ASCII, так и в EBCDIC, сопряжено с многочисленными трудностями.

Макет кодовой страницы

Существуют сотни кодовых страниц EBCDIC, основанных на оригинальной кодировке символов EBCDIC; существует множество кодовых страниц EBCDIC , предназначенных для использования в разных частях света, включая кодовые страницы для нелатинских алфавитов, таких как китайский, японский (например, EBCDIC 930, JEF и KEIS), корейский и греческий (EBCDIC 875). Существует также огромное количество вариаций с буквами, переставленными местами без видимой причины. [ необходима цитата ]

В таблице ниже показано «инвариантное подмножество» [9] EBCDIC, которое представляет собой символы, которые должны иметь одинаковые назначения на всех кодовых страницах EBCDIC, использующих латинский алфавит. (Сюда входит большая часть инвариантного репертуара ISO/IEC 646 , за исключением восклицательного знака .) Также показаны (серым цветом) отсутствующие знаки препинания ASCII и EBCDIC, расположенные там, где они находятся в кодовой странице 37 (один из вариантов кодовой страницы EBCDIC). Пустые ячейки заполнены регионально-специфичными символами в вариантах, но символы серого цвета также часто меняются местами или заменяются. Как и ASCII, инвариантное подмножество работает только для языков, использующих базовый латинский алфавит ISO , таких как английский (исключая заимствованные слова и некоторые необычные орфографические вариации) и голландский (если лигатуры «ij» и «IJ» написаны как два символа).

Определения элементов управления EBCDIC, отличных от ASCII

Ниже приведены определения управляющих символов EBCDIC, которые либо не отображаются на управляющие символы ASCII , либо имеют дополнительные применения. При отображении в Unicode они в основном отображаются на кодовые точки управляющих символов C1 способом, указанным в IBM's Character Data Representation Architecture (CDRA). [10] [11]

Хотя отображение по умолчанию символа новой строки (NL) соответствует символу следующей строки (NEL) ISO/IEC 6429 (поведение которого также указано, но не обязательно, в Приложении 14 к Unicode), [12] большинство этих отображенных в C1 элементов управления не соответствуют ни элементам в наборе C1 ISO/IEC 6429 , ни элементам в других зарегистрированных наборах элементов управления C1, таких как ISO 6630. [13] Хотя это фактически делает элементы управления EBCDIC, не входящие в ASCII, уникальным набором элементов управления C1, они не входят в число наборов элементов управления C1, зарегистрированных в реестре ISO-IR , [14] что означает, что им не назначена последовательность обозначения набора элементов управления (как указано в ISO/IEC 2022 и опционально разрешено в ISO/IEC 10646 (Unicode)). [15]

За исключением U+0085 (следующая строка), стандарт Unicode не предписывает интерпретацию управляющих символов C1, оставляя их интерпретацию протоколам более высокого уровня (он предлагает, но не требует, их интерпретации ISO/IEC 6429 при отсутствии использования для других целей) [16] , поэтому это отображение допустимо в Unicode, но не определено им.

Кодовые страницы с наборами символов Latin-1

Следующие кодовые страницы имеют полный набор символов Latin-1 (ISO/IEC 8859-1). В первом столбце указан исходный номер кодовой страницы. Во втором столбце указан номер кодовой страницы, обновленной со знаком евро (€), заменяющим универсальный знак валюты (¤) (или в случае EBCDIC 924, с набором, измененным для соответствия ISO 8859-15 )

Разные страны имеют разные кодовые страницы, поскольку эти кодовые страницы изначально были кодовыми страницами с наборами символов, специфичными для каждой страны, и позднее были расширены, чтобы содержать весь набор ISO 8859-1, что означает, что заданный символ ISO 8859-1 может иметь разные значения кодовых точек в разных кодовых страницах. Они известны как Country Extended Code Pages ( CECP ). [20]

Критика и юмор

Сторонник и разработчик программного обеспечения с открытым исходным кодом Эрик С. Рэймонд пишет в своем Жаргонном файле , что EBCDIC ненавидели хакеры, под которыми он подразумевал [21] членов субкультуры энтузиастов-программистов. Жаргонный файл 4.4.7 дает следующее определение: [22]

EBCDIC: /eb´s@·dik/, /eb´see`dik/, /eb´k@·dik/, сущ. [аббревиатура, Extended Binary Coded Decimal Interchange Code] Предполагаемый набор символов, использовавшийся на динозаврах IBM. Существует по крайней мере в шести взаимно несовместимых версиях, все из которых обладают такими прелестями, как несмежная последовательность букв и отсутствие нескольких знаков препинания ASCII, довольно важных для современных компьютерных языков (какие именно символы отсутствуют, зависит от того, какую версию EBCDIC вы смотрите). IBM адаптировала EBCDIC из кода перфокарт в начале 1960-х и обнародовала его как тактику контроля со стороны клиентов (см. заговор коннекторов ), отвергнув уже устоявшийся стандарт ASCII. Сегодня IBM заявляет, что является компанией открытых систем , но собственное описание IBM вариантов EBCDIC и того, как конвертировать между ними, по-прежнему является совершенно секретным для внутреннего использования, сжигать перед прочтением. Хакеры бледнеют от одного названия EBCDIC и считают его проявлением чистейшего зла.

—  Файл жаргона 4.4.7

Дизайн EBCDIC также был источником многих шуток. Одна из таких шуток, найденная в файле Unix fortune 4.3BSD Reno (1990) [23] , гласила:

Профессор: «Итак, американское правительство обратилось в IBM, чтобы разработать стандарт шифрования , и они придумали...»
Студент: «EBCDIC!»

Ссылки на набор символов EBCDIC сделаны в серии компьютерных игр Zork 1979 года . В «Машинном зале» в Zork II EBCDIC используется для обозначения непонятного языка:

Это большая комната, полная разной тяжелой техники, которая шумно жужжит. В комнате пахнет горелыми резисторами. Вдоль одной стены расположены три кнопки, которые соответственно круглые, треугольные и квадратные. Естественно, над этими кнопками находятся инструкции, написанные на EBCDIC...

В 2021 году стало известно, что бельгийский банк в 2019 году все еще использовал EBCDIC внутри компании. Клиент настаивал на том, что правильное написание его фамилии включало умлаут , который банк пропустил, и клиент подал жалобу, ссылаясь на гарантию в Общем регламенте по защите данных права на своевременное «исправление неточных персональных данных». Аргумент банка включал тот факт, что их система использовала EBCDIC, а также то, что она не поддерживала буквы с диакритическими знаками (или строчные буквы, если на то пошло). Апелляционный суд вынес решение в пользу клиента. [24] [25]

Смотрите также

Ссылки

  1. ^ ab Mackenzie, Charles E. (1980). Coded Character Sets, History and Development (PDF) . The Systems Programming Series (1-е изд.). Addison-Wesley Publishing Company, Inc. ISBN 0-201-14460-3. LCCN  77-90165 . Получено 2022-04-06 .
  2. ^ Донован, Джон Дж. (1972). Системное программирование . McGraw-Hill. стр. 65. ISBN 0-07-085175-1.
  3. ^ ab Bemer, Bob . "EBCDIC и P-Bit (Самая большая компьютерная глупость) - Computer History Vignettes". Архивировано из оригинала 2018-05-13 . Получено 2013-07-02 . ...но их принтеры и перфораторы не были готовы к обработке ASCII, и IBM просто ДОЛЖНА была объявить об этом.
  4. ^ "Коды перфокарт Дуга Джонса". homepage.cs.uiowa.edu . Получено 14.01.2023 .
  5. ^ "X3.4-1963". 1963. стр. 4.(Примечание. В окончательном составе подкомитета ASA X3.2, состоящем из 21 члена, было четыре сотрудника IBM.)
  6. ^ IBMnt (2008). "IBM подтверждает использование EBCDIC в своих мэйнфреймах как практику по умолчанию". Архивировано из оригинала 2013-01-03 . Получено 2008-06-16 .
  7. ^ "Rationale for International Standard – Programming Languages ​​– C" (PDF) . Редакция 5.10. Апрель 2003 г. § MSE.4: Поддержка инвариантного ISO/IEC 646. Архивировано (PDF) из оригинала 2016-06-06 . Получено 2022-11-24 .
  8. ^ Справочник PDP-10, Книга 2: Сборка исходной программы (PDF) . Digital Equipment Corporation . стр. 221.
  9. ^ "Инвариантный набор символов". IBM Knowledge Center . 2018-08-14.
  10. ^ abc Umamaheswaran, VS (1999-11-08). "3.3 Шаг 2: Преобразование байтов". UTF-EBCDIC . Консорциум Unicode . Технический отчет Unicode № 16. 64 управляющих символа... символ ASCII DELETE (U+007F)... отображаются в соответствии с соглашениями EBCDIC, как определено в IBM Character Data Representation Architecture, CDRA, с одним исключением — пары управляющих символов перевода строки EBCDIC и новой строки заменяются парами CDRA по умолчанию на управляющие символы перевода строки (U+000A) и следующей строки (U+0085) ISO/IEC 6429
  11. ^ ab Steele, Shawn (1996-04-24). "cp037_IBMUSCanada to Unicode table". Microsoft / Unicode Consortium .
  12. ^ Хенингер, Энди (2019-02-15). "NL: Следующая строка (A) (неадаптируемая)". Алгоритм разбиения строк Unicode . Редакция 43. Консорциум Unicode . Приложение к стандарту Unicode № 14.
  13. ^ ISO/TC 46 (1986-02-01). Дополнительные функции контроля для библиографического использования в соответствии с международным стандартом ISO 6630 (PDF) . ITSCJ/ IPSJ . ISO-IR -124.{{citation}}: CS1 maint: numeric names: authors list (link)
  14. ^ Международный регистр кодированных наборов символов ISO/IEC для использования с управляющими последовательностями (PDF) , ITSCJ/ IPSJ , ISO-IR
  15. ^ ISO/IEC JTC 1/SC 2 (2017). "12.4: Идентификация набора функций управления". Информационные технологии — Универсальный набор кодированных символов (UCS) (5-е изд.). ISO . стр. 19–20. ISO/IEC 10646. Для других наборов C0 или C1 последний октет F должен быть получен из Международного регистра наборов кодированных символов... Если такая управляющая последовательность появляется в последовательности кодовых единиц, соответствующей настоящему международному стандарту, она должна быть дополнена в соответствии с разделом 11.{{citation}}: CS1 maint: numeric names: authors list (link)
  16. ^ Консорциум Unicode (2019). "23.1: Управляющие коды". Стандарт Unicode (PDF) (ред. 12.0.0). С. 868–870. ISBN 978-1-936213-22-1.
  17. ^ abcd "Приложение G-1. Определения управляющих символов EBCDIC". Архитектура представления символьных данных . IBM Corporation . Архивировано из оригинала 2018-09-11.
  18. ^ abcdefghij ГОСТ (1993). "Информационная технология. Наборы 8-битных кодированных символов. Двойной код обработки информации" [Информационные технологии. 8-битные кодированные наборы символов. Двоичный код обработки информации. ГОСТ 19768-93.
  19. ^ IBM . "Архитектура представления символьных данных (CDRA)". IBM . стр. 327. Мнемоника для управляющего символа начала значения в EBCDIC была изменена, чтобы включить точку (.) в конце (SOS.). Это было сделано для того, чтобы отличить ее от мнемоники SOS, используемой в ISO-8 для управляющего символа начала строки. Точка никак не изменяет свойство элемента управления.
  20. ^ "iso8859.txt". Проект Kermit / Колумбийский университет .
  21. ^ Рэймонд, Эрик С. (1997). «Новый словарь хакера». стр. 310.
  22. ^ "EBCDIC". Файл жаргона . Архивировано из оригинала 2018-05-13 . Получено 2018-05-13 .
  23. ^ 4.3BSD-Reno/share/games/fortune/fortunes
  24. ^ «Апелляционный суд Брюсселя - 2019/AR/1006 - GDPRhub».
  25. ^ Иден, Теренс (2021-10-25). «EBCDIC несовместим с GDPR – блог Теренса Идена».

Внешние ссылки