EBCDIC - EBCDIC

Семейство кодирования EBCDIC
Классификация8 бит базовая латынь кодировки (не ASCII)
ПредшествуетBCD

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

История

Перфокарта с кодировкой Холлерита набора символов EBCDIC 1964 года. Контрастность вверху увеличена для отображения напечатанных символов.

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

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

Все мэйнфреймы IBM и средний диапазон периферийные устройства и операционные системы использовать EBCDIC как внутреннюю кодировку[4] (с допуском для 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 AIX работает на RS / 6000 и его потомков, включая IBM Power Systems, Linux работает на IBM Z, и операционные системы, работающие на IBM PC и его потомки используют ASCII, как и AIX / 370 и AIX / 390 работает на Система / 370 и Система / 390 мэйнфреймы.

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

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

  • Пробелы между буквами сделали простой код, который работал в ASCII, не работал на EBCDIC. Например за (c = 'А'; c <= 'Z'; ++c) путчар(c); будет печатать алфавит от A до Z, если используется ASCII, но печатает 41 символ (включая ряд неназначенных) в EBCDIC. Чтобы исправить это, потребовалось усложнить код вызовами функций, чему очень сопротивлялись программисты.
  • Сортировка EBCDIC помещает строчные буквы перед прописными буквами и буквы перед числами, в точности противоположно ASCII.
  • Языки программирования, форматы файлов и сетевые протоколы, разработанные для ASCII, быстро использовали доступные знаки препинания (например, фигурные скобки). { и }), которых не было в EBCDIC, что затрудняло перевод в системы EBCDIC. И наоборот, в EBCDIC было несколько символов, например ¢ (Цент США ), которые использовались в системах IBM и не могли быть переведены в ASCII.
  • Наиболее распространенное соглашение о новой строке, используемое с EBCDIC, - это использование NEL (СЛЕДУЮЩАЯ СТРОКА) код между строками. Конвертеры в другие кодировки часто заменяют NEL на LF или же CR / LF, даже если в целевой кодировке есть NEL. Это приводит к тому, что LF и NEL переводятся в один и тот же символ и не могут быть различимы.
  • Если использовался семибитный ASCII, в 8-битных байтах был «неиспользованный» старший бит, и многие части программного обеспечения сохраняли там другую информацию. Программное обеспечение также упаковывает семь битов и отбрасывает восьмой, например, упаковывая пять семибитных символов ASCII в 36-битный слово.[5] На PDP-11 байты с установленным старшим битом обрабатывались как отрицательные числа, поведение, которое было скопировано в C, вызывая неожиданные проблемы, если был установлен высокий бит. Все это затрудняло переключение с ASCII на 8-битный EBCDIC (это также затрудняло переключение на (8-битный) расширенный ASCII кодировки).

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

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

В таблице ниже показано «инвариантное подмножество»[6] EBCDIC, то есть символы, должен имеют одинаковые назначения на всех кодовых страницах EBCDIC. Он также показывает (серым цветом) отсутствующие знаки препинания ASCII и EBCDIC, расположенные там, где они находятся на кодовой странице 037 (один из вариантов кодовой страницы EBCDIC). Неназначенные коды обычно заполняются международными или региональными символами в различных EBCDIC. кодовая страница варианты, но символы серого цвета также часто перемещаются или меняются местами. В каждой ячейке первая строка представляет собой аббревиатуру управляющего кода или самого символа; а вторая строка - это Unicode код (пусто для элементов управления, которых нет в Unicode).

EBCDIC
_0_1_2_3_4_5_6_7_8_9_A_B_C_D_E_F
0_NUL
0000
SOH
0001
STX
0002
ETX
0003
SEL
 
HT
0009
RNL
 
DEL
007F
GE
 
СПС
 
RPT
 
VT
000B
FF
000C
CR
000D
ТАК
000E
SI
000F
1_DLE
0010
DC1
0011
DC2
0012
DC3
0013
res / enp
 
NL
0085
BS
0008
POC
 
МОЖЕТ
0018
ЭМ
0019
UBS
 
CU1
 
IFS
001C
IGS
001D
IRS
001E
ius /itb
001F
2_DS
 
SOS
 
FS
 
WUS
 
байп / вход
 
LF
000A
ETB
0017
ESC
001B
SA
 
Лесхоз
 
см / sw
 
CSP
 
МИД
 
ENQ
0005
ACK
0006
BEL
0007
3_SYN
0016
ИК
 
PP
 
РНН
 
NBS
 
EOT
0004
SBS
 
ЭТО
 
RFF
 
CU3
 
DC4
0014
НАК
0015
SUB
001A
4_SP
0020
¢
00A2
.
002E
<
003C
(
0028
+
002B
|
007C
5_&
0026
!
0021
$
0024
*
002A
)
0029
;
003B
¬
00AC
6_-
002D
/
002F
¦
00A6
,
002C
%
0025
_
005F
>
003E
?
003F
7_`
0060
:
003A
#
0023
@
0040
'
0027
=
003D
"
0022
8_а
0061
б
0062
c
0063
d
0064
е
0065
ж
0066
грамм
0067
час
0068
я
0069
±
00B1
9_j
006A
k
006B
л
006C
м
006D
п
006E
о
006F
п
0070
q
0071
р
0072
A_~
007E
s
0073
т
0074
ты
0075
v
0076
ш
0077
Икс
0078
у
0079
z
007A
B_^
005E
[
005B
]
005D
C_{
007B
А
0041
B
0042
C
0043
D
0044
E
0045
F
0046
грамм
0047
ЧАС
0048
я
0049
D_}
007D
J
004A
K
004B
L
004C
M
004D
N
004E
О
004F
п
0050
Q
0051
р
0052
E_
005C
S
0053
Т
0054
U
0055
V
0056
W
0057
Икс
0058
Y
0059
Z
005A
F_0
0030
1
0031
2
0032
3
0033
4
0034
5
0035
6
0036
7
0037
8
0038
9
0039
EO
 

  Письмо  Число  Пунктуация  Символ  Другой  Неопределенный

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

Ниже приведены определения управляющих символов EBCDIC, которые либо не отображаются на Управляющие символы ASCII, или иметь дополнительное использование. При отображении в Unicode они в основном отображаются в кодовые точки управляющего символа C1 способом, указанным в Архитектуре представления символьных данных IBM (CDRA).[7][8]

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

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

МнемоническийEBCDICСопряжение CDRA[7][8]ИмяОписание[14]
SEL04009CВыбиратьУправляющий символ устройства, принимающий однобайтовый параметр.
RNL060086Обязательная новая строкаСброс разрыва строки Табуляция отступа Режим
GE080097Графический побегНеблокирующий сдвиг, который изменяет интерпретацию следующего символа (см., Например, Кодовая страница 310 ). Сравните стандарты ISO / IEC 6429 SS2 (008E).
СПС09008DНадстрочныйНачать надстрочный индекс или отменить подстрочный индекс. Сравните стандарты ISO / IEC 6429 PLU (008C).
RPT0A008EПовторениеПерейти в режим работы, повторяющий буфер печати
RES / ENP14009DВосстановить, включить презентациюВозобновить вывод (после BYP / INP)
NL150085 (000A)Новая линияРазрыв строки. Отображение по умолчанию (0085) соответствует ISO / IEC 6429 NEL. Отображения иногда меняются местами с переводом строки (EBCDIC 0x25) в соответствии с соглашением о переносе строк в UNIX.[7]
POC170087Связь с оператором программыЗа ними следуют два однобайтовых оператора, которые идентифицируют конкретную функцию, например свет или функциональную клавишу. Контраст с ISO / IEC 6429 CSI (009B), OSC (009D) и APC (009F).
UBS0092Единица BackspaceДробный возврат.
CU11B008FКлиент использует одинIBM не использует; для использования клиентами.
IUS / ITB1F001FРазделитель блока обмена, промежуточный блок передачиЛибо используется в качестве разделителя информации для завершения блока, называемого «единицей» (как в ASCII; смотрите также ИК) или используется в качестве кода управления передачей для обозначения конца промежуточного блока.
DS200080Выбор цифрИспользуется инструкцией редактирования процессора S / 360 (ED)
SOS210081Начало значенияИспользуется инструкцией редактирования (ED) процессора S / 360. (Примечание: отличается от ISO / IEC 6429). SOS.)
FS220082Разделитель полейИспользуется инструкцией редактирования (ED) процессора S / 360. (Примечание: (Обмен) Разделитель файлов (сокращенно FS в ASCII, это 0x1C и сокращенно IFS.)[14]
WUS230083Подчеркивание словПодчеркивает непосредственно предшествующее слово. Контраст с ISO / IEC 6429 SGR.
BYP / INP240084Обход, запретить презентациюОтключает выход, т.е. игнорирует все графические символы и символы управления, кроме кодов управления передачей и RES / ENP, до следующего RES / ENP.
SA280088Установить атрибутОбозначает начало последовательности управления устройством фиксированной длины. Устарело в пользу CSP.
Лесхоз290089Начальное поле расширеноОбозначает начало последовательности управления переменной длины для конкретного устройства. Устарело в пользу CSP.
SM / SW008AУстановить режим, переключательСпецифичный для устройства элемент управления, который устанавливает режим работы, например переключатель буфера.
CSP2B008BПрефикс последовательности управленияОбозначает начало последовательности управления переменной длины для конкретного устройства. За ним следует байт класса, определяющий категорию функции управления, байт счетчика, указывающий длину последовательности (включая байты счетчика и типа, но не байт класса или начальный CSP), байт типа, определяющий функцию управления в этой категории, и ноль или больше байтов параметра. Контраст с ISO / IEC 6429 DCS (0090) и CSI (009B).
МИД2C008CИзменить атрибут поляОбозначает начало последовательности управления переменной длины для конкретного устройства. Устарело в пользу CSP.
300090(зарезервированный)Зарезервировано для будущего использования IBM
310091(зарезервированный)Зарезервировано для будущего использования IBM
ИК330093Индекс возвратЛибо перейти к началу следующей строки (см. Также NL) или завершить информационный блок (см. также IUS / ITB).
PP340094Презентационная позицияЗатем следуют два однобайтовых параметра (во-первых, функция, во-вторых, номер столбца или строки) для установки текущей позиции. Контраст с ISO / IEC 6429 CUP и HVP.
РНН350095ПрозрачныйЗа ним следует однобайтный параметр, который указывает количество следующих за ним байтов прозрачных данных.
NBS360096Числовой BackspaceПереместитесь назад на ширину одной цифры.
SBS380098Нижний индексНачать нижний индекс или отменить верхний индекс. Сравните стандарты ISO / IEC 6429 PLD (008B).
ЭТО390099Табуляция отступаСмещает текущую и все последующие строки, пока RNL или же RFF встречается.
RFF009AОбязательная подача формыСброс разрыва страницы Табуляция отступа режим.
CU33B009BКлиент использует дваНе используется IBM; для использования клиентами.
3E009E(зарезервированный)Зарезервировано для будущего использования IBM
EOFF009FВосемьВсе символы используются в качестве наполнителя

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

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

CCSIDЕвро
Обновить
Страны
0371140Австралия, Бразилия, Канада, Новая Зеландия, Португалия, Южная Африка, США
2731141Австрия, Германия
2771142Дания, Норвегия
2781143Финляндия, Швеция
2801144Италия
2841145Латинская Америка, Испания
2851146Ирландия, Соединенное Королевство
2971147Франция
5001148Международный
8711149Исландия
1047924Открытые системы (MVS C компилятор)

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

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

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

— Файл Jargon 4.4.7

Дизайн EBCDIC также был источником множества шуток. Одна такая шутка[нужна цитата ] шел:

Профессор: "Итак, американское правительство обратилось к IBM с предложением стандарт шифрования, и они придумали - "
Студент: "EBCDIC!"

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

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

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

Рекомендации

  1. ^ а б Маккензи, Чарльз Э. (1980). Наборы кодированных символов, история и развитие. Серия системного программирования (1-е изд.). Addison-Wesley Publishing Company, Inc. ISBN  0-201-14460-3. LCCN  77-90165. ISBN  978-0-201-14460-4. Получено 2016-05-22. [1]
  2. ^ а б Бемер, Боб. «EBCDIC и P-Bit (самый большой компьютерный тупик в истории) - виньетки по компьютерной истории». Архивировано из оригинал на 2018-05-13. Получено 2013-07-02. ... но их принтеры и перфораторы не были готовы к работе с ASCII, и IBM просто НАДО было объявить.
  3. ^ «Х3.4-1963». 1963. с. 4. В архиве из оригинала от 12.08.2016. (NB. В последний подкомитет ASA X3.2 из 21 члена IBM входило четыре сотрудника.)
  4. ^ IBMnt (2008). «IBM подтверждает использование EBCDIC в своих мэйнфреймах по умолчанию». Архивировано из оригинал на 2013-01-03. Получено 2008-06-16.
  5. ^ Справочное руководство PDP-10, Книга 2: Сборка исходной программы (PDF). Корпорация цифрового оборудования. п. 221.
  6. ^ IBM Knowledge Center неизменный набор символов
  7. ^ а б c Умамахесваран, В. (1999-11-08). «3.3 Шаг 2: преобразование байтов». UTF-EBCDIC. Консорциум Unicode. Технический отчет Unicode №16. 64 управляющих символа ... символ ASCII DELETE (U + 007F) ... отображаются в соответствии с соглашениями EBCDIC, как определено в Архитектуре представления символьных данных IBM, CDRA, за одним исключением - пара символов перевода строки EBCDIC и новой строки управляющие символы заменяются из их пар по умолчанию CDRA на управляющие символы перевода строки ISO / IEC 6429 (U + 000A) и следующей строки (U + 0085)
  8. ^ а б Стил, Шон (1996-04-24). cp037_IBMUSCanada в таблицу Unicode. Microsoft /Консорциум Unicode.
  9. ^ Хенингер, Энди (2019-02-15). «NL: Next Line (A) (Не адаптируется)». Алгоритм разрыва строки Unicode. Редакция 43. Консорциум Unicode. Приложение № 14 к стандарту Unicode.
  10. ^ ISO / TC 46 (1986-02-01). Дополнительные функции управления для библиографического использования в соответствии с международным стандартом ISO 6630 (PDF). ITSCJ /IPSJ. ISO-IR-124.
  11. ^ Международный регистр кодированных наборов символов ИСО / МЭК для использования с escape-последовательностями (PDF), ITSCJ /IPSJ, ISO-IR
  12. ^ ISO / IEC JTC 1 / SC 2 (2017). «12.4: Идентификация набора функций управления». Информационные технологии - универсальный набор кодированных символов (UCS) (5-е изд.). ISO. С. 19–20. ИСО / МЭК 10646. Для других наборов C0 или C1 последний октет F должен быть получен из Международного регистра наборов кодированных символов .... Если такая escape-последовательность появляется в последовательности кодовых единиц, соответствующей настоящему Международному стандарту, она должна быть дополнена в соответствии с Пункт 11.
  13. ^ Консорциум Unicode (2019). «23.1: Коды управления» (PDF). Стандарт Юникода (12.0.0 ред.). С. 868–870. ISBN  978-1-936213-22-1.
  14. ^ а б «Приложение G-1. Определения управляющих символов EBCDIC». Архитектура представления символьных данных. Корпорация IBM. Архивировано из оригинал на 2018-09-11.
  15. ^ Раймонд, Эрик С. (1997). "Словарь нового хакера". п. 310.
  16. ^ «EBCDIC». Файл жаргона. В архиве из оригинала на 2018-05-13. Получено 2018-05-13.

внешняя ссылка