Расширенный двоично-десятичный код обмена [1] [2] ( EBCDIC ; [1] / ˈ ɛ b s ɪ d ɪ k / ) — восьмибитная кодировка символов , используемая в основном в операционных системах мэйнфреймов IBM и IBM среднего уровня . Он произошел от кода, используемого в перфокартах , и соответствующего шестибитного двоично-десятичного кода, который использовался в большинстве компьютерных периферийных устройств IBM в конце 1950-х - начале 1960-х годов. [3] Он поддерживается различными платформами сторонних производителей, такими как Fujitsu-Siemens BS2000 /OSD , OS-IV, MSP и MSP-EX, серия SDS Sigma , Unisys VS/9 , Unisys MCP и ICL VME .
EBCDIC был разработан в 1963 и 1964 годах компанией IBM и анонсирован с выпуском линейки мэйнфреймов IBM System/360 . Это восьмибитная кодировка символов, разработанная отдельно от семибитной схемы кодирования ASCII . Он был создан для расширения существующего двоично-десятичного кода обмена (BCD), или BCDIC , который сам по себе был разработан как эффективное средство кодирования двух зон и номеров на перфокартах в шесть бит. Отдельное кодирование «s» и «S» (с использованием позиции 2 вместо 1) сохранялось на перфокартах, где было желательно не располагать дыроколы слишком близко друг к другу, чтобы обеспечить целостность физической карты. [4] [ не удалось проверить ]
Хотя IBM была главным сторонником комитета по стандартизации ASCII, [5] у компании не было времени подготовить периферийные устройства ASCII (например, перфокарты) для поставки с компьютерами System/360, поэтому компания остановилась на EBCDIC. [3] Система/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 , предназначенный для простого обновления программного обеспечения EBCDIC для обработки Unicode , но не предназначенный для использования в средах открытого обмена. Даже в системах с обширной поддержкой EBCDIC он не пользовался популярностью. Например, z/OS поддерживает Unicode ( особенно UTF-16 ), но z/OS имеет лишь ограниченную поддержку UTF-EBCDIC.
Не все операционные системы, работающие на оборудовании IBM, используют EBCDIC; IBM AIX , Linux на IBM Z и Linux на Power используют ASCII, как и все операционные системы на персональном компьютере IBM и его преемниках.
Было множество трудностей при написании программного обеспечения, которое работало бы как в ASCII, так и в EBCDIC.
for (c = 'A'; c <= 'Z'; ++c) putchar(c);
Существуют сотни кодовых страниц 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 , либо имеют дополнительное применение. При сопоставлении с Unicode они в основном сопоставляются с кодовыми точками управляющих символов C1 способом, указанным в архитектуре представления символьных данных IBM (CDRA). [10] [11]
Хотя отображение новой строки (NL) по умолчанию соответствует символу следующей строки (NEL) ISO/IEC 6429 (поведение которого также указано, но не обязательно, в Приложении 14 Юникода), [12] большинство из этих C1- Сопоставленные элементы управления не совпадают ни с элементами набора ISO/IEC 6429 C1 , ни с элементами других зарегистрированных наборов элементов управления 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] поэтому такое сопоставление разрешено, но не указано в Юникоде.
Следующие кодовые страницы имеют полный набор символов Latin-1 (ISO/IEC 8859-1). В первом столбце указан исходный номер кодовой страницы. Во втором столбце указан номер кодовой страницы, обновленной знаком евро (€), заменяющим универсальный знак валюты (¤) (или, в случае EBCDIC 924, с измененным набором в соответствии с ISO 8859-15 ).
В разных странах используются разные кодовые страницы, поскольку эти кодовые страницы возникли как кодовые страницы с репертуаром символов для конкретной страны, а затем были расширены и теперь содержат весь репертуар ISO 8859-1, что означает, что данный символ ISO 8859-1 может иметь разные значения кодовых точек. в разных кодовых страницах. Они известны как расширенные кодовые страницы страны ( CECP ). [20]
Сторонник программного обеспечения с открытым исходным кодом и разработчик программного обеспечения Эрик С. Рэймонд пишет в своем «Жаргонном файле» , что хакеры ненавидели EBCDIC, имея в виду [21] членов субкультуры программистов-энтузиастов. Файл жаргона 4.4.7 дает следующее определение: [22]
EBCDIC: /eb´s@·dik/, /eb´see`dik/, /eb´k@·dik/, сущ. [аббревиатура, расширенный двоично-десятичный код обмена] Предполагаемый набор символов, используемый на динозаврах IBM. Он существует как минимум в шести взаимно несовместимых версиях, каждая из которых отличается такими прелестями, как несмежные последовательности букв и отсутствие нескольких символов пунктуации ASCII, что довольно важно для современных компьютерных языков (какие именно символы отсутствуют, зависит от того, какую версию EBCDIC вы используете). смотря на). IBM адаптировала EBCDIC из кода перфокарты в начале 1960-х годов и пропагандировала его как тактику контроля клиентов (см. « Заговор соединителей »), отвергнув уже установленный стандарт ASCII. Сегодня IBM утверждает, что является компанией открытых систем , но собственное описание IBM вариантов EBCDIC и способов преобразования между ними по-прежнему находится под грифом «совершенно секретно» и подлежит записи перед чтением. Хакеры недовольны самим названием EBCDIC и считают его проявлением чистейшего зла.
— Файл жаргона 4.4.7.
Дизайн EBCDIC также стал источником множества шуток. Одна из таких шуток, найденная в файле состояний Unix 4.3BSD Reno (1990) [23], гласила:
Профессор: «Итак, американское правительство обратилось в IBM, чтобы разработать стандарт шифрования , и они придумали…»
Студент: «EBCDIC!»
Ссылки на набор символов EBCDIC сделаны в серии компьютерных игр Zork 1979 года . В «Машинном зале» Zork II EBCDIC используется для обозначения непонятного языка:
Это большая комната, полная разнообразной тяжелой техники, шумно жужжащей. В комнате пахнет сгоревшими резисторами. Вдоль одной стены расположены три кнопки круглой, треугольной и квадратной формы соответственно. Естественно, над этими кнопками находятся инструкции, написанные в EBCDIC...
В 2021 году стало известно, что бельгийский банк все еще использовал EBCDIC внутри компании в 2019 году. Это привлекло внимание, поскольку клиент настоял на том, чтобы правильное написание его фамилии включало умлаут , который банк пропустил. Клиент подал жалобу, сославшись на гарантию в Общем регламенте защиты данных права на своевременное «исправление неточных персональных данных». Банк частично утверждал, что не мог выполнить требования, поскольку его компьютерная система была совместима только с EBCDIC, который не поддерживает умлауты. Апелляционный суд вынес решение в пользу заказчика. [24] [25]
...но их принтеры и перфораторы не были готовы обрабатывать ASCII, и IBM просто ДОЛЖНА была объявить об этом.
64 управляющих символа... символ ASCII DELETE (U+007F)... отображаются в соответствии с соглашениями EBCDIC, как определено в архитектуре представления символьных данных IBM, CDRA, за одним исключением - сочетание перевода строки EBCDIC и новой строки. управляющие символы заменяются из пар CDRA по умолчанию на управляющие символы перевода строки (U+000A) и следующей строки (U+0085) ISO/IEC 6429.
{{citation}}
: CS1 maint: numeric names: authors list (link)Для других наборов C0 или C1 последний октет F должен быть получен из Международного реестра наборов кодированных символов.... Если такая escape-последовательность появляется в последовательности кодовой единицы, соответствующей настоящему международному стандарту, она должна быть дополнено в соответствии с пунктом 11.
{{citation}}
: CS1 maint: numeric names: authors list (link)Мнемоника управляющего символа начала значения в EBCDIC была изменена и теперь включает точку (.) в конце (SOS.).
Это было сделано для того, чтобы отличить его от мнемоники SOS, используемой в ISO-8 для управляющего символа начала строки.
Точка никоим образом не изменяет свойство элемента управления.