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 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 thumb|upright=1.888|Holerit lyukkártya 1964-ben szabványosított EBCDIC karakter készlettel. A lyukkombinációknak megfeleltette karakterek a kártya tetején láthatók nyomtatva. 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) ok 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 -F0- NUL00 SOH01 STX02 ETX03 SEL HT09 RNL DEL7F GE SPS RPT VT0B FF0C CR0D SO0E SI0F1- DLE10 DC111 DC212 DC313 RESENP NL BS08 POC CAN18 EM19 UBS CU1 IFS1C IGS1D IRS1E IUSITB1F2- DS SOS FS WUS BYPINP LF0A ETB17 ESC1B SA SFE SMSW CSP MFA ENQ05 ACK06 BEL073- SYN16 IR PP TRN NBS EOT04 SBS IT RFF CU3 DC414 NAK15 SUB1A4- SP20 RSPA0 âE2 äE4 àE0 áE1 ãE3 åE5 çE7 ñF1 [ 5B .2E <3C (28 +2B !215- &26 éE9 êEA ëEB èE8 íE0 îEE ïEF ìED ßDF ] 5D $24 *2A )29 ;3B ^5E6- -2D /2F ÂC2 ÄC4 ÀC0 ÁC1 ÃC3 ÅC5 ÇC7 ÑD1 ¦A6 ,2C %25 _5F >3E ?3F7- øF8 ÉC9 ÊCA ËCB ÈC8 ÍCD ÎCE ÏCF ÌCC `60 :3A #23 @40 ' 27 =3D "228- ØD8 a61 b62 c63 d64 e65 f66 g67 h68 i69 «AB »BB ðF0 ýFD þFE ±B19- °B0 j6A k6B l6C m6D n6E o6F p70 q71 r72 ªAA ºBA æE6 ¸B8 ÆC6 ¤A4A- µB5 ~7E s73 t74 u75 v76 w76 x77 y78 z79 ¡A1 ¿BF ÐD0 ÝDD ÞDE ®AEB- ¢A2 £A3 ¥A5 ·B7 ©A9 §A7 ¶B6 ¼BC ½BD ¾BE ¬AC |7C ¯AF ¨A8 ´B4 ×D7C-{ 7BA41B42C43D44E45F46G47H48I49 SHYAD ôF4 öF6 òF2 óF3 õF5D-} 7DJ4AK4BL4CM4DN4EO4FP50Q51R52 ¹B9 ûFB üFC ùF9 úFA ÿFFE-\ 5C÷F7S53T54U55V56W57X58Y59Z5A ²82 ÔD4 ÖD6 ÒD2 ÓD3 ÕD5F-030131232333434535636737838939 ³83 ÛD8 ÜDC ÙD9 ÚDAEO
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 from AS/400 International Application Development V4R2 ICU Converter Explorer 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
Unicode Technical Report #16: UTF-EBCDIC Online tool to convert from EBCDIC to ASCII and vice versa EBCDIC-to-ASCII Test Tool Simple on-line tool outputs ASCII from EBCDIC input. 2000 character limit. EBCDIC-codepages with Latin-1-charset (JavaScript) ZIPped version Blog resource for EBCDIC The Jargon File: E: EBCDIC
Kategória:Karakterkódolások