EBCDIC - EBCDIC
sınıflandırma | 8 bitlik temel Latin kodlamaları (ASCII olmayan) |
---|---|
Öncesinde | BCD |
Uzatılmış ikili kodlanmış ondalık değişim kodu ( EBCDIC ; / ɛ b s ɪ d ɪ k / ) bir sekiz olan bit karakter kodlamasını esas kullanılan IBM mainframe ve IBM orta bilgisayar işletim sistemleri. Bu birlikte kullanılan kodun soyundan delikli kartlarla ve ilgili altı bitlik ikili kodlanmış ondalık IBM'in çoğu kullanılan kodun bilgisayar çevre birimleri 1950'lerin sonlarında ve 1960'ların arasında. Bu gibi çeşitli IBM dışı platformlar tarafından desteklenen Fujitsu-Siemens ' BS2000 / OSD , OS IV, MSP ve MSP-EX, SDS Sigma serisi , Unisys VS / 9 Unisys MCP ve ICL VME .
Tarih
EBCDIC, 1963 ve 1964'te IBM tarafından tasarlandı ve IBM System/360 serisi ana bilgisayar bilgisayarlarının piyasaya sürülmesiyle duyuruldu . Yedi bitlik ASCII kodlama şemasından ayrı olarak geliştirilen sekiz bitlik bir karakter kodlamasıdır . Mevcut İkili Kodlu Ondalık (BCD) Değişim Kodunu veya BCDIC'yi genişletmek için oluşturuldu ve kendisi delikli kartlardaki iki bölge ve sayı zımbalarını altı bite kodlamanın etkili bir yolu olarak tasarlandı . 's' ve 'S'nin farklı kodlaması (1 yerine konum 2 kullanılarak) fiziksel kartın bütünlüğünü sağlamak için birbirine çok yakın delgeçlere sahip olmamanın istendiği yerlerde delikli kartlardan korunmuştur .
IBM, ASCII standardizasyon komitesinin baş savunucusuyken, şirketin System/360 bilgisayarlarıyla birlikte gönderilmek üzere ASCII çevre birimlerini (kart delme makineleri gibi) hazırlamak için zamanı yoktu, bu nedenle şirket EBCDIC'e karar verdi. System/360, RCA Spectra 70 , ICL System 4 ve Fujitsu FACOM gibi klonlarla birlikte çılgınca başarılı oldu ve EBCDIC de öyle.
Tüm IBM anabilgisayar ve orta düzey çevre birimleri ve işletim sistemleri , kendi doğal kodlamaları olarak EBCDIC'yi kullanır (ASCII toleransıyla, örneğin z/OS'de ISPF , hem EBCDIC hem de ASCII kodlu dosyalara göz atabilir ve bunları düzenleyebilir). Yazılım ve birçok donanım çevre birimi, kodlamalara ve kodlamalardan çeviri yapabilir ve modern ana bilgisayarlar ( IBM Z gibi ), karakter kümeleri arasındaki çeviriyi hızlandırmak için donanım düzeyinde işlemci yönergelerini içerir.
Unicode konsorsiyumu tarafından önerilen, EBCDIC yazılımının Unicode'u işlemek üzere kolayca güncellenmesine izin vermek üzere tasarlanmış, ancak açık değişim ortamlarında kullanılması amaçlanmayan UTF-EBCDIC adlı bir EBCDIC odaklı Unicode Dönüşüm Formatı vardır . Kapsamlı EBCDIC desteğine sahip sistemlerde bile popüler olmamıştır. Örneğin, z/OS Unicode'u destekler ( özellikle UTF-16'yı tercih eder), ancak z/OS yalnızca UTF-EBCDIC için sınırlı desteğe sahiptir.
Tüm IBM ürünleri EBCDIC kullanmaz; IBM AIX , Linux on IBM Z ve Linux on Power, tümü ASCII kullanır.
ASCII ile uyumluluk
Hem ASCII hem de EBCDIC'de çalışacak yazılım yazmanın birçok zorluğu vardı.
- Harfler arasındaki boşluklar, ASCII'de çalışan basit kod EBCDIC'de başarısız oldu. Örneğin , ASCII kullanılıyorsa alfabeyi A'dan Z'ye yazdırır, ancak EBCDIC'de 41 karakter (bir dizi atanmamış olanlar dahil) yazdırır. Bunu düzeltmek, programcılar tarafından büyük ölçüde direnilen fonksiyon çağrılarıyla kodu karmaşık hale getirmek zorundaydı.
for (c = 'A'; c <= 'Z'; ++c) putchar(c);
- EBCDIC'yi sıralamak, ASCII'nin tam tersi olarak küçük harfleri büyük harflerin önüne ve harfleri sayıların önüne koyar.
- ASCII için tasarlanmış programlama dilleri ve dosya biçimleri ve ağ protokolleri, EBCDIC'de bulunmayan mevcut noktalama işaretlerini (örneğin küme parantezleri { ve } gibi ) hızla kullanmaya başladı ve EBCDIC sistemlerine çeviri yapmayı zorlaştırdı. Tersine EBCDIC , IBM sistemlerinde kullanılan ve ASCII'ye çevrilemeyen ¢ ( ABD cent ) gibi birkaç karaktere sahipti .
- EBCDIC ile kullanılan en yaygın yeni satır kuralı, satırlar arasında bir NEL (SONRAKİ SATIR) kodu kullanmaktır . Diğer kodlamalara dönüştürücüler , hedef kodlamada bir NEL olsa bile, genellikle NEL'yi LF veya CR/LF ile değiştirir . Bu, LF ve NEL'nin aynı karaktere çevrilmesine ve ayırt edilememesine neden olur.
- Yedi bitlik ASCII kullanılmışsa, 8 bitlik baytlarda "kullanılmayan" bir yüksek bit vardı ve birçok yazılım parçası orada başka bilgiler depoladı. Yazılım aynı zamanda yedi biti paketler ve sekizinciyi atar, örneğin beş yedi bitlik ASCII karakterini 36 bitlik bir kelimede paketlemek gibi . On PDP-11 yüksek bit kümesiyle bayt negatif sayılar, kopyalanan bir davranış olarak tedavi edildi C yüksek bit kurulmuştur beklenmedik sorunlara yol. Bunların tümü, ASCII'den 8-bit EBCDIC'ye geçişi zorlaştırdı (ve ayrıca 8-bit genişletilmiş ASCII kodlamalarına geçişi de zorlaştırdı ).
Kod sayfası düzeni
Orijinal EBCDIC karakter kodlamasına dayalı yüzlerce EBCDIC kod sayfası vardır; Çince, Japonca (örn., EBCDIC 930, JEF ve KEIS), Korece ve Yunanca (EBCDIC 875) gibi Latince olmayan komutlar için kod sayfaları da dahil olmak üzere dünyanın farklı yerlerinde kullanılması amaçlanan çeşitli EBCDIC kod sayfaları vardır. ). Harflerin fark edilebilir bir sebep olmadan değiştirildiği çok sayıda varyasyon da vardır.
Aşağıdaki tablo , Latin alfabesini kullanan tüm EBCDIC kod sayfalarında aynı atamalara sahip olması gereken karakterler olan EBCDIC'nin "değişmeyen alt kümesini" göstermektedir . Ayrıca, Kod Sayfası 37'de (EBCDIC'nin kod sayfası türevlerinden biri) bulundukları yerde (gri olarak) eksik ASCII ve EBCDIC noktalama işaretlerini gösterir . Boş hücreler, varyantlarda bölgeye özgü karakterlerle doldurulur, ancak gri renkli karakterler de sıklıkla değiştirilir veya değiştirilir. Her hücrede ilk satır, bir kontrol kodunun veya karakterin kendisinin kısaltmasıdır; ve ikinci satır Unicode kodudur (Unicode'da mevcut olmayan kontroller için boştur).
_0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _NS | _E | _F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ |
SIFIR 0000 |
SOH 0001 |
STX 0002 |
ETX 0003 |
SEL |
HT 0009 |
RNL |
DEL 007F |
GE |
SPS |
RPT |
VT 000B |
FF 000C |
CR 000D |
SO 000E |
SI 000F |
1_ |
DLE 0010 |
DC1 0011 |
DC2 0012 |
DC3 0013 |
res/enp |
NL 0085 |
BS 0008 |
POC |
CAN 0018 |
EM 0019 |
UBS |
CU1 |
IFS 001C |
IGS 001D |
IRS 001E |
ius / itb 001F |
2_ |
DS |
s.o.s. |
FS |
WUS |
byp/inp |
LF 000A |
ETB 0017 |
ESC 001B |
SA |
SFE |
sm/sw |
CSP |
MFA |
ENQ 0005 |
ACK 0006 |
BEL 0007 |
3_ |
SYN 0016 |
kızılötesi |
PP |
KKTC |
NBS |
EOT 0004 |
SBS |
O |
ARFF |
CU3 |
DC4 0014 |
NAK 0015 |
ALT 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_ |
bir 0061 |
b 0062 |
c 0063 |
d 0064 |
e 0065 |
f 0066 |
g 0067 |
saat 0068 |
ben 0069 |
± 00B1 |
||||||
9_ |
j 006A |
k 006B |
l 006C |
m 006D |
n 006E |
o 006F |
p 0070 |
q 0071 |
r 0072 |
|||||||
A_ |
~ 007E |
s 0073 |
t 0074 |
u 0075 |
v 0076 |
ağırlık 0077 |
x 0078 |
y 0079 |
z 007A |
|||||||
B_ |
^ 005E |
[ 005B |
] 005D |
|||||||||||||
C_ |
{ 007B |
bir 0041 |
B 0042 |
C 0043 |
D 0044 |
E 0045 |
F 0046 |
G 0047 |
H 0048 |
ben 0049 |
||||||
NS_ |
} 007D |
J 004A |
K 004B |
L 004C |
M 004D |
N 004E |
O 004F |
P 0050 |
Q, 0051 |
R, 0052 |
||||||
E_ |
\ 005C |
S 0053 |
T 0054 |
U 0055 |
V 0056 |
B 0057 |
X 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 |
Mektup Sayı Noktalama Sembol Başka Tanımsız
ASCII olmayan EBCDIC kontrollerinin tanımları
ASCII kontrol karakterleriyle eşleşmeyen veya ek kullanımları olan EBCDIC kontrol karakterlerinin tanımları aşağıdadır . Unicode ile eşlendiğinde, bunlar çoğunlukla IBM'in Karakter Veri Temsil Mimarisi (CDRA) tarafından belirtilen bir şekilde C1 kontrol karakteri kod noktalarına eşlenir.
Yeni Satırın (NL) varsayılan eşlemesi ISO/IEC 6429 Sonraki Satır (NEL) karakterine karşılık gelse de (davranışı Unicode Ek 14'te de belirtilmiş, ancak gerekli değildir), bu C1 eşlemeli kontrollerin çoğu eşleşir. ne ISO/IEC 6429 C1 setindekiler ne de ISO 6630 gibi diğer kayıtlı C1 kontrol setlerindekiler . Bu, ASCII olmayan EBCDIC kontrollerini etkin bir şekilde benzersiz bir C1 kontrol seti yapsa da, bunlar ISO-IR kayıt defterinde kayıtlı C1 kontrol setleri arasında değildir , yani atanmış bir kontrol seti atama dizisine sahip değildirler ( ISO/ tarafından belirtildiği gibi). IEC 2022 ve isteğe bağlı olarak ISO/IEC 10646'da (Unicode) izin verilir ).
U+0085'in (Sonraki Satır) yanı sıra, Unicode Standardı, C1 kontrol karakterlerinin yorumlanmasını önermez ve yorumlarını daha yüksek seviyeli protokollere bırakır (kullanılmadığında ISO/IEC 6429 yorumlarını önerir, ancak gerektirmez). diğer amaçlar), bu nedenle bu eşlemeye Unicode'da izin verilir, ancak Unicode tarafından belirtilmez.
anımsatıcı | EBCDIC | CDRA eşleştirme | İsim | Açıklama |
---|---|---|---|---|
SEL | 04 | 009C | Seçme | Tek baytlık bir parametre alan cihaz kontrol karakteri. |
RNL | 06 | 0086 | Gerekli Yeni Hat | Satır sonu, Girinti Sekmesi modunu sıfırlama |
GE | 08 | 0097 | Grafik Kaçış | Aşağıdaki karakterin yorumunu değiştiren kilitlenmeyen vites (bkz. örn. Kod sayfası 310 ). ISO / IEC 6429 en karşılaştırın SS2 (008E). |
SPS | 09 | 008D | üst simge | Üst simgeye başlayın veya alt simgeyi geri alın. ISO / IEC 6429 en karşılaştırın PLU (008C). |
RPT | 0A | 008E | Tekrarlamak | Yazdırma arabelleğini tekrarlayan bir çalışma moduna geçin |
RES/ENP | 14 | 009D | Geri Yükle, Sunumu Etkinleştir | Çıktıyı devam ettir ( BYP/INP'den sonra ) |
NL | 15 | 0085 (000A) | Yeni hat | Satır sonu. Varsayılan eşleme (0085) ISO / IEC 6429 en maçları NEL . Eşlemeler bazen UNIX satır kesme kuralına uygun olarak Satır Besleme (EBCDIC 0x25) ile değiştirilir. |
POC | 17 | 0087 | Program Operatör İletişimi | Ardından, belirli bir işlevi tanımlayan iki tek baytlık operatör, örneğin bir ışık veya işlev tuşu. ISO/IEC 6429'un CSI (009B), OSC (009D) ve APC (009F) ile kontrast. |
UBS | 1 A | 0092 | Birim Geri Alımı | Kesirli bir geri boşluk. |
CU1 | 1B | 008F | Müşteri Kullanım Bir | IBM tarafından kullanılmaz; müşteri kullanımı için. |
IUS/ITB | 1F | 001F | Değişim Birimi Ayırıcı, Ara İletim Bloğu | Ya "birim" olarak adlandırılan bir bloğu sonlandırmak için bir bilgi ayırıcı olarak kullanılır ( ASCII'de olduğu gibi ; ayrıca IR'ye bakınız ) ya da bir ara bloğun sonunu sınırlamak için bir iletim kontrol kodu olarak kullanılır. |
DS | 20 | 0080 | Rakam Seçimi | S/360 CPU düzenleme (ED) talimatı tarafından kullanılır |
s.o.s. | 21 | 0081 | Önem Başlangıcı | S/360 CPU düzenleme (ED) talimatı tarafından kullanılır. (Not: ISO / IEC 6429 en farklı SOS .) |
FS | 22 | 0082 | Alan Ayırıcı | S/360 CPU düzenleme (ED) talimatı tarafından kullanılır. (Not: (Değişim) Dosya Ayırıcı , ASCII'de kısaltılmış FS olarak 0x1C'dedir ve kısaltılmış IFS'dir.) |
WUS | 23 | 0083 | Kelime Alt Çizgisi | Hemen önceki kelimenin altını çizer. ISO / IEC 6429 adlı ile Kontrast SGR . |
BYP/INP | 24 | 0084 | Baypas, Sunumu Engelle | Çıkışı devre dışı bırakır, yani bir sonraki RES/ENP'ye kadar iletim kontrol kodları ve RES/ENP dışında tüm grafik karakterleri ve kontrol karakterlerini yok sayar . |
SA | 28 | 0088 | Özelliği Ayarla | Sabit uzunlukta bir cihaza özel kontrol dizisinin başlangıcını işaretler. CSP lehine kullanımdan kaldırıldı . |
SFE | 29 | 0089 | Başlangıç Alanı Genişletilmiş | Değişken uzunluktaki cihaza özel kontrol dizisinin başlangıcını işaretler. CSP lehine kullanımdan kaldırıldı . |
SM/GB | 2A | 008A | Modu Ayarla, Değiştir | Arabellek anahtarı gibi bir çalışma modunu ayarlayan cihaza özel kontrol. |
CSP | 2B | 008B | Kontrol Sırası Öneki | Değişken uzunluktaki cihaza özel kontrol dizisinin başlangıcını işaretler. Ardından, bir kontrol işlevi kategorisini belirten bir sınıf baytı, dizi uzunluğunu veren bir sayım baytı (sayı ve tür baytları dahil, ancak sınıf baytı veya ilk CSP'yi değil), o kategorideki bir kontrol işlevini tanımlayan bir tür baytı ve sıfır veya daha fazla parametre baytı. ISO/IEC 6429'un DCS (0090) ve CSI (009B) ile kontrastı. |
MFA | 2C | 008C | Alan Özelliğini Değiştir | Değişken uzunluktaki cihaza özel kontrol dizisinin başlangıcını işaretler. CSP lehine kullanımdan kaldırıldı . |
30 | 0090 | (rezerve) | IBM tarafından gelecekte kullanılmak üzere ayrılmıştır | |
31 | 0091 | (rezerve) | IBM tarafından gelecekte kullanılmak üzere ayrılmıştır | |
kızılötesi | 33 | 0093 | Endeks Dönüşü | Bir sonraki satırın başına geçin (ayrıca NL'ye bakın ) veya bir bilgi birimini sonlandırın (ayrıca bkz . IUS/ITB ). |
PP | 34 | 0094 | Sunum Konumu | Geçerli konumu ayarlamak için iki adet bir baytlık parametre (ilk olarak işlev, ikinci olarak sütun veya satır sayısı) takip eder. ISO/IEC 6429'un CUP ve HVP'si ile kontrast . |
KKTC | 35 | 0095 | Şeffaf | Ardından, izleyen saydam verilerin bayt sayısını belirten bir bayt parametresi gelir. |
NBS | 36 | 0096 | Sayısal Geri Alım | Bir basamak genişliğini geriye doğru hareket ettirin. |
SBS | 38 | 0098 | alt simge | Alt simgeye başlayın veya üst simgeyi geri alın. ISO / IEC 6429 en karşılaştırın PLD (008B). |
O | 39 | 0099 | Girinti Sekmesi | RNL veya RFF ile karşılaşılıncaya kadar geçerli ve sonraki tüm satırları girintiler . |
ARFF | 3 A | 009A | Gerekli Form Beslemesi | Sayfa sonu, Girinti Sekmesi modunu sıfırlıyor . |
CU3 | 3B | 009B | Müşteri Kullanımı İki | IBM tarafından kullanılmaz; müşteri kullanımı için. |
3E | 009E | (rezerve) | IBM tarafından gelecekte kullanılmak üzere ayrılmıştır | |
EO | FF | 009F | Sekiz Bir | Dolgu olarak kullanılan tüm birler karakteri |
Latin-1 karakter setli kod sayfaları
Aşağıdaki kod sayfaları tam Latin-1 karakter kümesine sahiptir (ISO/IEC 8859-1). İlk sütun, orijinal kod sayfa numarasını verir. İkinci sütun , evrensel para birimi işaretinin (¤) yerini alan euro işaretiyle (€) güncellenen kod sayfasının numarasını verir (veya EBCDIC 924 durumunda, set ISO 8859-15 ile eşleşecek şekilde değiştirilmiştir )
CCSID | Avrupa güncellemesi |
Ülkeler |
---|---|---|
037 | 1140 | Avustralya, Brezilya, Kanada, Yeni Zelanda, Portekiz, Güney Afrika, ABD |
273 | 1141 | Avusturya, Almanya |
277 | 1142 | Danimarka, Norveç |
278 | 1143 | Finlandiya, İsveç |
280 | 1144 | İtalya |
284 | 1145 | Latin Amerika, İspanya |
285 | 1146 | İrlanda, Birleşik Krallık |
297 | 1147 | Fransa |
500 | 1148 | Uluslararası |
871 | 1149 | İzlanda |
1047 | 924 | Açık Sistemler ( MVS C derleyicisi) |
Eleştiri ve mizah
Açık kaynaklı yazılım savunucusu ve yazılım geliştiricisi Eric S. Raymond , Jargon Dosyasında EBCDIC'nin bilgisayar korsanları tarafından nefret edildiğini ve bununla hevesli programcılardan oluşan bir alt kültürün üyelerini kastettiğini yazıyor . Jargon Dosyası 4.4.7 aşağıdaki tanımı verir:
EBCDIC: /eb´s@·dik/, /eb´see`dik/, /eb´k@·dik/, n. [kısaltma, Genişletilmiş İkili Kodlu Ondalık Değişim Kodu] IBM dinozorlarında kullanıldığı iddia edilen bir karakter seti. En az altı birbiriyle uyumsuz sürümde bulunur, tümü bitişik olmayan harf dizileri ve modern bilgisayar dilleri için oldukça önemli olan birkaç ASCII noktalama karakterinin yokluğu gibi zevklere sahiptir (tam olarak hangi karakterlerin bulunmadığı, hangi EBCDIC sürümüne bağlı olduğunuza göre değişir). bakmak). IBM, 1960'ların başında delikli kart kodundan EBCDIC uyarlanan ve (bkz müşteri kontrol taktik olarak yayımlanan konnektör komplo zaten kurulmuş ASCII standardı spurning). Bugün, IBM bir açık sistem şirketi olduğunu iddia ediyor , ancak IBM'in EBCDIC varyantlarına ve bunlar arasında nasıl dönüştürüleceğine ilişkin kendi açıklaması hala dahili olarak çok gizli, okuma öncesi yakma olarak sınıflandırılıyor. Hackerlar EBCDIC adına ağlarlar ve onu en saf kötülüğün bir tezahürü olarak görürler.
— Jargon dosyası 4.4.7
EBCDIC tasarımı aynı zamanda birçok şakanın kaynağıydı. Böyle bir şaka gitti:
Profesör: "Böylece Amerikan hükümeti bir şifreleme standardı bulmak için IBM'e gitti ve onlar—"
Öğrenci: "EBCDIC!"
EBCDIC karakter setine göndermeler klasik Infocom macera oyunu serisi Zork'ta yapılmıştır . Zork II'deki "Makine Odası"nda EBCDIC, anlaşılmaz bir dili ima etmek için kullanılır:
Bu, gürültülü bir şekilde vızıldayan çeşitli ağır makinelerle dolu büyük bir oda. Oda yanmış direnç kokuyor. Bir duvar boyunca sırasıyla yuvarlak, üçgen ve kare olan üç düğme bulunur. Doğal olarak, bu düğmelerin üzerinde EBCDIC ile yazılmış talimatlar vardır...
Ayrıca bakınız
Referanslar
Dış bağlantılar
- IBM'den Karakter Veri Temsil Mimarisi (CDRA) de Wayback Machine (2018-05-13 arşivlenmiş). IBM'in kod sayfaları ve karakter kümeleriyle ilgili resmi bilgilerini içerir.
- IBM'den Ana Bilgisayar Kod Sayfası Referansı , birkaç tek baytlık EBCDIC sayfası için kod çizelgelerini gösterir.
- "Kod Sayfaları" .dan "IBM i küreselleşme" .
- ICU Dönüştürücü Gezgini DBCS EBCDIC (Çift Bayt Karakter Kümesi EBCDIC) dahil, IBM'in CDRA'sından türetilen EBCDIC hakkında daha fazla bilgi içerir
- ICU Karakter Seti Eşleme Tabloları EBCDIC ve diğer birçok karakter seti için bilgisayar tarafından okunabilen Unicode eşleme tablolarını içerir
- Ondalık ve onaltılık değerler, sembolik ad ve karakter/işlev dahil EBCDIC karakter listesi
- Latin-1 karakter kümesine sahip EBCDIC kodu sayfaları (JavaScript)
- Tüm EBCDIC kod sayfaları ve 3270 grafik kodları kaçış en Wayback Machine (Ağustos 27, 2016 arşivlenmiş)