EBCDIC
Ez a szócikknem 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ítsmegbízható forrásokattalálni az állításokhoz! Lásd még:A Wikipédia nem az első közlés helye. |
EBCDIC(ejtsd: "ebszidik" ) azIBMnagyszámítógépeinésoperációs rendszerein,mint az/OS,azOS/390,aVMés aVSE,valamint a minikomputerein, mintOS/400ési5/OShasznált8 biteskarakter kódolási,vagykódlaprendszer. Több más, nem IBM platformon is használják, mint aFujitsu-SiemensBS2000/OSD,aHPMPE/iX,és azUnisysMCP.Az EBCDIC elnevezés az angol Extended Binary Coded Decimal Interchange Code, azaz abővített,binárisan kódolt decimális(adat)cserekódrövidítése. Alyukkártyarendszerből származik, és szoros kapcsolatban van a 6 bitesbinárisan kódolt decimáliskóddal, amit az IBM mindenszámítógépeésperifériájahasznált a késői1950-esés a korai1960-as évekközött.
Története
[szerkesztés]Az EBCDIC rendszert azIBMalakította ki1963és1964között, és azIBM System/360rendszerekkel együttesen került bejelentésre. Az akkor már létező,binárisan kódolt decimáliskódrendszer bővítése volt. A tervezése azASCII-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 IBMnagyszámítógépperifériaésoperációs rendszer(kivéve aLinux-ot azSeries-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 alyukkártyákonkeresztü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 azISO-8859sorozat vagy aUnicode,nincsen. Mint az egy byte-osbővített ASCIIkódtábla, a legtöbb EBCDIC kódtábla is csak 2 nyelvet enged meg (angol és egy másik nyelv) azadatbázisokés szöveges (text)fileokhaszná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 EBCDICUnicode Transzformációs FormátumamitUTF-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 azUTF-16-ot, de natív módon nem támogatják az UTF-EBCDIC-et.
Technikai részletek
[szerkesztés]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, mintszemélyi számítógépátkerülhet.
Egy egyedülálló EBCDIC byte 8 bitet foglal el, amelyeket két félre, kétnibblereoszthatunk. Az első négy bit azóna– zone és a karakter kategóriáját jeleníti meg, a második négy bit, aszám– digit, ami az adott karaktert azonosítja.
Teljesen összhangban vannak a karakterekhexadecimáliskó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) avezérlő karakterekvannak, amelyek közül 33 megegyezik azASCII-val. Meg kell ugyanakkor jegyezni, hogy a 33 karakter azért különböző: míg az ASCII akocsi vissza– carriage return (CR) és azsoremelé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 avissza ú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 aCCSID(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ű az/OSUNIX 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
[szerkesztés]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 avezérlő karakterek,40 aszóköz,41 anem törhető szóköz,és CA asoft hyphen.A karaktereket azISO/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
[szerkesztés]A híresnyílt forráskódú szoftverektámogatója és ismert hacker, Eric S. Raymond írtaJargon 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
[szerkesztés]- Character Data Representation Architecture (CDRA) from IBMContains IBM's official information on codepages and charsets.
- F.0 Appendix F. Code PagesArchiválva2001. március 21-idátummal aWayback Machine-ben fromAS/400 International Application Development V4R2Archiválva2001. február 15-idátummal aWayback Machine-ben
- ICU Converter ExplorerArchiválva2020. január 2-idátummal aWayback Machine-ben Contains more information about EBCDIC, including DBCS EBCDIC (Double Byte Character Set EBCDIC)
- ICU Charset Mapping TablesContains 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 ToolArchiválva2006. december 7-idátummal aWayback Machine-ben Simple on-line tool outputs ASCII from EBCDIC input. 2000 character limit.
- EBCDIC-codepages with Latin-1-charset (JavaScript)Archiválva2007. január 18-idátummal aWayback Machine-ben
- ZIPped versionArchiválva2007. január 23-idátummal aWayback Machine-ben
- Blog resource for EBCDIC
- The Jargon File: E: EBCDIC