EBCDIC
Ez a szócikk nem tünteti fel a független forrásokat, amelyeket felhasználtak a készítése során. Emiatt nem tudjuk közvetlenül ellenőrizni, hogy a szócikkben szereplő állítások helytállóak-e. Segíts megbízható forrásokat találni az állításokhoz! Lásd még: A Wikipédia nem az első közlés helye. |
EBCDIC (ejtsd: "ebszidik") az IBM nagyszámítógépein és operációs rendszerein, mint a z/OS, az OS/390, a VM és a VSE, valamint a minikomputerein, mint OS/400 és i5/OS használt 8 bites karakter kódolási, vagy kódlap rendszer. Több más, nem IBM platformon is használják, mint a Fujitsu-Siemens BS2000/OSD, a HP MPE/iX, és az Unisys MCP. Az EBCDIC elnevezés az angol Extended Binary Coded Decimal Interchange Code, azaz a bővített, binárisan kódolt decimális (adat)csere kód rövidítése. A lyukkártya rendszerből származik, és szoros kapcsolatban van a 6 bites binárisan kódolt decimális kóddal, amit az IBM minden számítógépe és perifériája használt a késői 1950-es és a korai 1960-as évek között.
Története
Az EBCDIC rendszert az IBM alakította ki 1963 és 1964 között, és az IBM System/360 rendszerekkel együttesen került bejelentésre. Az akkor már létező, binárisan kódolt decimális kódrendszer bővítése volt. A tervezése az ASCII-tól teljesen függetlenül történt. Az EBCDIC 8 bites kódolású kód, szemben a 7 bites ASCII-vel.
Érdekes, hogy az IBM volt az egyik fő támogatója az ASCII szabványosítási bizottságának. Ugyanakkor, az IBM-nek nem volt ideje elkészítenie az ASCII perifériáit (mint például kártyalyukasztó), ezért a System/360 számítógép rendszereit EBCDIC kódolással szállította, mivel a cég időre csak az EBCDIC perifériáit tudta használni. A System/360 széles körben sikeres lett, vele együtt az EBCDIC is.
Minden IBM nagyszámítógép periféria és operációs rendszer (kivéve a Linux-ot a zSeries-en) egységes EBCDIC kódolást használ, és szoftver kódolja azt át más kódrendszerekre. Sok periféria hardvere nyújt hasonló "fordítási" szolgáltatást a modern nagyszámítógépeknél (mint az IBM zSeries) ideértve azokat a hardver szintű processzor utasításokat, amelyek jelentősen meggyorsítják a különböző kódtáblák közötti konverziókat.
A tervezése idején az EBCDIC a lyukkártyákon keresztül viszonylag egyszerű adatbeviteli lehetőséget nyújtott a nagyszámítógépeken. Mivel a nagyszámítógépeken kívül máig sem használ más lyukkártyákat, az EBCDIC biztosítja a nagyszámítógépes világban a visszafelé kompatibilitás egy fontos részét. A kódolásnak különösebb technikai előnye az ASCII alapú kódokkal, mint az ISO-8859 sorozat vagy a Unicode, nincsen. Mint az egy byte-os bővített ASCII kódtábla, a legtöbb EBCDIC kódtábla is csak 2 nyelvet enged meg (angol és egy másik nyelv) az adatbázisok és szöveges (text) fileok használatánál.
Amikor a soknyelvű szövegek támogatása valódi igényként jelentkezett, a rendszernek sokféle karaktert kellett támogatnia. Ezt általában a Unicode valamilyen formájának a támogatásával oldották meg. Létezik egy EBCDIC Unicode Transzformációs Formátum amit UTF-EBCDIC-nek neveznek, és a Unicode konzorcium javasolta a használatát, de a nyílt adatcsere környezetben, illetve az EBCDIC alapú rendszerekben szinte soha sem használták. Az IBM nagyszámítógépek támogatják az UTF-16-ot, de natív módon nem támogatják az UTF-EBCDIC-et.
Technikai részletek
Az EBCDIC és az ASCII-alapú kódlapok semmilyen szinten nem kompatibilisek egymással. Mivel a számítógépek "számokból" értenek, a kódlapok valójában nem mások, mint számokhoz karakterek rendelése. Azonos értékek különböző karaktereket jelentenek, kódtáblától függően. EBCDIC formában tárolt értékeket konvertálni kell, mielőtt ASCII alapú gépekre, mint személyi számítógép átkerülhet.
Egy egyedülálló EBCDIC byte 8 bitet foglal el, amelyeket két félre, két nibblere oszthatunk. Az első négy bit a zóna – zone és a karakter kategóriáját jeleníti meg, a második négy bit, a szám – digit, ami az adott karaktert azonosítja.
Teljesen összhangban vannak a karakterek hexadecimális kódjai és a lyukkártya kódok az EBCDIC-ben. Ennek az az oka, hogy az IBM a lyukkártyán 12 lyukasztható sort definiált oszloponként, és oszloponként legfeljebb két lyukasztás engedélyezett, az első lyukasztásnak valahol az első 3 sorban kell lennie (ezt nevezték zónának), a második lyukasztás pedig fennmaradó 9 sorban (ezt nevezték számnak) lehet. Így a zónához a 0-3 értékek, míg a számhoz a 0-9 értékek köthetők. Az EBCDIC kezdeti változata csak a (0xf-zone)<<4+szám alapján működött, és csak az alsó-bal 10x4-es részhez (a következő táblán látható) voltak karakterek rendelve.
Az első 64 kódhelyen (00-3F) a vezérlő karakterek vannak, amelyek közül 33 megegyezik az ASCII-val. Meg kell ugyanakkor jegyezni, hogy a 33 karakter azért különböző: míg az ASCII a kocsi vissza – carriage return (CR) és az soremelés – line feed (LF) kódokat használja, amelyek általában sorvég jelölők az ASCII szöveg fájlokban, addig az IBM még pluszban bevezette az új sor – newline (NL) ls a vissza újsor – reverse newline (RNL) kódokat. A többi 31 vezérlő karaktert terminál- és eszköz vezérléshez használják, többnyire az IBM valamilyen saját hardverére jellemző funkcionalitással ruházta fel.
Az EBCDIC kódolásnak számtalan változata létezik, különböző országokra testre szabva. Néhány Kelet-Ázsiai ország az EBCDIC két byte-os bővített változatát használja, ami megengedi a kínai, japán és koreai karakterek megjelenítést a nagyszámítógépeiken. A két byte-os EBCDIC bővítésnél vannak ún. "shift vagy váltó kódok", a [0x0E,0x0F] amelyekkel a két- és egy byte-os mód között lehet váltani.
Az IBM a sokféle kódtáblát egy speciális névvel azonosítja, ami egy szám, ez a CCSID (Coded Character Set IDentifier – kódolt karakterkészlet azonosító). Sajnálatos módon, azonos CCSID érték mellett is lehetségesek különböző karakterkiosztások. Például, az "új sor" karakter más értékű a z/OS UNIX System Services-nél, szemben más EBCDIC alapú operációs rendszerekkel. Ez egy állandó problémát jelent a gépek közötti EBCDIC kódú szövegek átvitelénél.
A kódtábla felépítése
A következő kódtábla, a CCSID 500-as, az EBCDIC egyik változata. A 00–3F között, és FF-en vannak a vezérlő karakterek, 40 a szóköz, 41 a nem törhető szóköz, és CA a soft hyphen. A karaktereket az ISO/IEC 8859-1-nek megfelelő kódokkal ábrázoljuk:
-0 | -1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -A | -B | -C | -D | -E | -F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0- | NUL 00 |
SOH 01 |
STX 02 |
ETX 03 |
SEL |
HT 09 |
RNL |
DEL 7F |
GE |
SPS |
RPT |
VT 0B |
FF 0C |
CR 0D |
SO 0E |
SI 0F |
1- | DLE 10 |
DC1 11 |
DC2 12 |
DC3 13 |
RES ENP |
NL |
BS 08 |
POC |
CAN 18 |
EM 19 |
UBS |
CU1 |
IFS 1C |
IGS 1D |
IRS 1E |
IUS ITB 1F |
2- | DS |
SOS |
FS |
WUS |
BYP INP |
LF 0A |
ETB 17 |
ESC 1B |
SA |
SFE |
SM SW |
CSP |
MFA |
ENQ 05 |
ACK 06 |
BEL 07 |
3- | |
|
SYN 16 |
IR |
PP |
TRN |
NBS |
EOT 04 |
SBS |
IT |
RFF |
CU3 |
DC4 14 |
NAK 15 |
|
SUB 1A |
4- | SP 20 |
RSP A0 |
â E2 |
ä E4 |
à E0 |
á E1 |
ã E3 |
å E5 |
ç E7 |
ñ F1 |
[ 5B |
. 2E |
< 3C |
( 28 |
+ 2B |
! 21 |
5- | & 26 |
é E9 |
ê EA |
ë EB |
è E8 |
í E0 |
î EE |
ï EF |
ì ED |
ß DF |
] 5D |
$ 24 |
* 2A |
) 29 |
; 3B |
^ 5E |
6- | - 2D |
/ 2F |
 C2 |
Ä C4 |
À C0 |
Á C1 |
à C3 |
Å C5 |
Ç C7 |
Ñ D1 |
¦ A6 |
, 2C |
% 25 |
_ 5F |
> 3E |
? 3F |
7- | ø F8 |
É C9 |
Ê CA |
Ë CB |
È C8 |
Í CD |
Î CE |
Ï CF |
Ì CC |
` 60 |
: 3A |
# 23 |
@ 40 |
' 27 |
= 3D |
" 22 |
8- | Ø D8 |
a 61 |
b 62 |
c 63 |
d 64 |
e 65 |
f 66 |
g 67 |
h 68 |
i 69 |
« AB |
» BB |
ð F0 |
ý FD |
þ FE |
± B1 |
9- | ° B0 |
j 6A |
k 6B |
l 6C |
m 6D |
n 6E |
o 6F |
p 70 |
q 71 |
r 72 |
ª AA |
º BA |
æ E6 |
¸ B8 |
Æ C6 |
¤ A4 |
A- | µ B5 |
~ 7E |
s 73 |
t 74 |
u 75 |
v 76 |
w 76 |
x 77 |
y 78 |
z 79 |
¡ A1 |
¿ BF |
Ð D0 |
Ý DD |
Þ DE |
® AE |
B- | ¢ A2 |
£ A3 |
¥ A5 |
· B7 |
© A9 |
§ A7 |
¶ B6 |
¼ BC |
½ BD |
¾ BE |
¬ AC |
| 7C |
¯ AF |
¨ A8 |
´ B4 |
× D7 |
C- | { 7B |
A 41 |
B 42 |
C 43 |
D 44 |
E 45 |
F 46 |
G 47 |
H 48 |
I 49 |
SHY AD |
ô F4 |
ö F6 |
ò F2 |
ó F3 |
õ F5 |
D- | } 7D |
J 4A |
K 4B |
L 4C |
M 4D |
N 4E |
O 4F |
P 50 |
Q 51 |
R 52 |
¹ B9 |
û FB |
ü FC |
ù F9 |
ú FA |
ÿ FF |
E- | \ 5C |
÷ F7 |
S 53 |
T 54 |
U 55 |
V 56 |
W 57 |
X 58 |
Y 59 |
Z 5A |
² 82 |
Ô D4 |
Ö D6 |
Ò D2 |
Ó D3 |
Õ D5 |
F- | 0 30 |
1 31 |
2 32 |
3 33 |
4 34 |
5 35 |
6 36 |
7 37 |
8 38 |
9 39 |
³ 83 |
Û D8 |
Ü DC |
Ù D9 |
Ú DA |
EO |
Apróságok
A híres nyílt forráskódú szoftverek támogatója és ismert hacker, Eric S. Raymond írta Jargon File-jában, hogy az EBCDIC volt az, amit korai programozók és hackerek általánosan utáltak, mivel rendkívül sok, egymással nem kompatibilis változata volt, ami miatt még programokat is kellett módosítani, és az IBM versenyt támasztott a már általánosan bevezetésre kész ASCII-vel.
Egy másik állandó kifogás volt az EBCDIC-el szemben, hogy mivel követte a lyukkártya kódolást, nem volt zárt a karakterkódok sorozata, szemben az ASCII-vel. A kódtábla alapján látható, hogy az "I" és a "J", valamint az "R" és az "S" karakterek kódjai nem folyamatosan követik egymást, ezért a programokban külön ciklussal lehet csak vizsgálni, hogy egy karakter valóban "betű-e".
Ennek az ellentmondásnak köszönhető, hogy az EBCDIC sok vicc forrása lett. Egy a legismertebbek közül:
- Tanár: Így az amerikai kormányzat az IBM-hez fordult egy adattitkosítási szabványért, és ezért elkészült –
Diák: Az EBCDIC!
Egyéb, angol nyelvű hivatkozások
- Character Data Representation Architecture (CDRA) from IBM Contains IBM's official information on codepages and charsets.
- F.0 Appendix F. Code Pages Archiválva 2001. március 21-i dátummal a Wayback Machine-ben from AS/400 International Application Development V4R2 Archiválva 2001. február 15-i dátummal a Wayback Machine-ben
- ICU Converter Explorer Archiválva 2020. január 2-i dátummal a Wayback Machine-ben Contains more information about EBCDIC, including DBCS EBCDIC (Double Byte Character Set EBCDIC)
- ICU Charset Mapping Tables Contains Unicode mapping tables for EBCDIC and many other character sets
- LegacyJ- EBCDIC Table
- Computer Character Set Table (angol nyelven). [2007. október 27-i dátummal az [ eredetiből] archiválva]. (Hozzáférés: 2009. augusztus 25.)
- Unicode Technical Report #16: UTF-EBCDIC
- Online tool to convert from EBCDIC to ASCII and vice versa
- EBCDIC-to-ASCII Test Tool Archiválva 2006. december 7-i dátummal a Wayback Machine-ben Simple on-line tool outputs ASCII from EBCDIC input. 2000 character limit.
- EBCDIC-codepages with Latin-1-charset (JavaScript) Archiválva 2007. január 18-i dátummal a Wayback Machine-ben
- ZIPped version Archiválva 2007. január 23-i dátummal a Wayback Machine-ben
- Blog resource for EBCDIC
- The Jargon File: E: EBCDIC