I informatikk indikerer akronymet EBCDIC (fra den engelske Extended Binary Coded Decimal Interchange Code ) et 8-bits informasjonskodingssystem som brukes i en rekke IBM - produksjonsoperativsystemer , både for datamaskiner i stormaskinklassen (f.eks. z/OS , OS/390 , VM ) og VSE ) og for minidatamaskiner (f.eks. OS / 400 og i5 / OS ). Den brukes også av forskjellige tredjepartsplattformer, som Fujitsu Siemens Computers ' BS2000/OSD , Hewlett-Packards MPE/iX og Unisys ' Master Control Program (MCP) . Den stammer fra den 6-bits binærkodede desimalen , brukt i hullkort og de fleste IBM-tilbehør på slutten av 1950 -tallet og begynnelsen av 1960 -tallet .
EBCDIC-kodingen, utviklet av IBM mellom 1963 og 1964 , ble avduket for publikum ved lanseringen av System / 360 mainframe-linjen . Det var en 8-bits koding som var i stand til å utvide 6-bits BCD -systemet som da var i bruk betydelig; utviklingen var uavhengig av ASCII , som er en 7-bits koding.
Merkelig nok var IBM også en stor talsmann for standardiseringskomiteen for ASCII-koding. Imidlertid klarte ikke selskapet å klargjøre ASCII-periferiutstyr (f.eks. kortstanser) i tide til System / 360-lanseringen, noe som fikk det til å bruke EBCDIC-systemet som en reserve. På den annen side var System / 360 en stor kommersiell suksess og dette favoriserte en bred spredning av EBCDIC.
Alle periferiutstyr og operativsystemer i IBM-stormaskinklassen, med unntak av Linux på zSeries , bruker EBCDIC-koding og har programvare for oversettelse til og fra andre systemer. Mange maskinvareenheter er også i stand til å håndtere oversettelse mellom flere kodinger; nyere stormaskiner som den nevnte zSeries er utstyrt med maskinvareinstruksjoner, på prosessornivå, for å øke hastigheten på konverteringen mellom tegnsett.
På tidspunktet for realiseringen tilbød EBCDIC fordelen av en relativ enkel datainntasting ved hjelp av hullkort; Siden denne støtten nå er fullstendig foreldet, brukes EBCDIC-systemet i moderne datamaskiner kun for nedadgående kompatibilitet. Faktisk gir det ingen tekniske fordeler i forhold til kodetabeller basert på ASCII-koding som de forskjellige ISO-8859 og Unicode . I likhet med kodesett basert på utvidede ASCII -tegnsett med én byte , tillater ikke de fleste EBCDIC-kodetabeller samtidig bruk av mer enn to språk (engelsk og et andrespråk) i hver database eller tekstfil.
Hvis det kreves full støtte for flerspråklige tekster, kreves det systemer som kan håndtere et mye høyere antall tegn. Vanligvis oppnås dette gjennom passende implementeringer av Unicode-spesifikasjonen. Konsortiet som administrerer spesifikasjonen har foreslått et Unicode Transformation Format ( Unicode Transformation Format ) for EBCDIC kalt UTF-EBCDIC, men det er ikke ment å brukes i åpne utvekslingsmiljøer; Dette formatet brukes imidlertid svært sjelden selv i systemer som er helt basert på EBCDIC. IBM stormaskiner støtter UTF-16- format, men ikke UTF-EBCDIC naturlig.
EBCDIC- og ASCII-baserte kodetabeller er ikke kompatible med hverandre. Siden datamaskiner bare kan behandle numeriske data, tildeler begge konvensjonene spesifikke tegn til disse tallene. Derfor tolkes identiske numeriske verdier som forskjellige tegn avhengig av kodesett som brukes. For å bruke data som er lagret i EBCDIC, kreves en konvertering mellom kodesett for å vise informasjonen på datamaskiner basert på ASCII-koding, for eksempel vanlige personlige datamaskiner .
Hvert tegn i EBCDIC-kodingen opptar 8 bits (1 byte ), delt inn i to halvdeler kalt nibble . De 4 mest signifikante bitene, kalt sonering , representerer kategorien som tegnet tilhører, mens de 4 minst signifikante bitene som identifiserer det spesifikke tegnet kalles sifre .
I EBCDIC-kodingen er det en passende samsvar mellom de heksadesimale kodene som representerer tegnene og stansekodene på kortene for disse; denne funksjonen var viktig på det tidspunktet koden ble utviklet. En IBM-puncher kan faktisk kode et 12-linjers kort med maksimalt 2 perforeringer per kolonne, den første i en posisjon inkludert i de tre første linjene ( sonelinjene ) og den andre innenfor de resterende ni (de numeriske linjene ). . Soneinndelingen kan derfor tolkes som en desimalverdi mellom 0 og 3 og den numeriske delen som et siffer mellom 0 (ingen perforering) og 9 (perforering i tilsvarende linje). Den første versjonen av EBCDIC-kodingen svarte på den enkle formelen:
(0xf-soning) "4 + nummerog definerte bare de 10 x 4 cellene i nedre venstre hjørne i tabellen nedenfor. Soneinndelingen ble tilsynelatende reversert for å tillate alfabetisk rekkefølge av bokstavene.
De første 64 symbolene (00 til 3F) er kontrolltegn , hvorav 33 har tilsvarende i ASCII-kodingen. En relevant forskjell mellom de to skjemaene er tilstedeværelsen av separate symboler for vognretur (CR) og linjeskift ( LF) kun i ASCII-koding, der de vanligvis brukes som linjeavslutninger i tekstfiler; omvendt har EBCDIC-koding to tilleggstegn for dette formålet: ny linje ( NL ) og omvendt ny linje (RNL). De resterende 31 kontrollkodene brukes til forskjellige terminal- og enhetskontrollfunksjoner, hovedsakelig relatert til særegenheter ved IBM-maskinvare.
Det finnes flere versjoner av EBCDIC, tilpasset etter behovene til de ulike landene. Noen asiatiske land bruker en dobbelbyte-utvidelse som lar stormaskiner vise kinesiske, japanske og koreanske tegn. Denne utvidelsen inneholder også passende koder for overgang fra "single-byte" til "double-byte"-modus [0x0E, 0x0F].
IBM tildeler vanligvis hver kodetall den definerer en numerisk kode kalt Coded Character Set IDentifier ( CCSID ). Det skal bemerkes at en identisk CCSID kan forutsi forskjellige tegnposisjoner innenfor en kodetabell. For eksempel kan nylinjetegnet i UNIX System Services på z / OS tilsvare andre numeriske verdier enn i andre EBCDIC-baserte operativsystemer. Denne variasjonen må tas i betraktning for å unngå problemer med overføring av tekstdata i EBCDIC-koding mellom ulike plattformer.
Tabellen nedenfor viser CCSID 500, en av variantene av EBCDIC-kodingen. I dette arrangementet er symbolene 00 til 3F og FF kontrolltegn, 40 representerer mellomrommet, 41 det ikke-brytende mellomrommet og CA den valgfrie bindestreken ( myk bindestrek ) . Den tilsvarende ISO 8859-1 -koden vises for hvert tegn :
-0 | -1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -TIL | -B | -C | -D | -OG | -F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0- | NUL 00 |
SOH 01 |
STX 02 |
ETX 03 |
SEL |
HT 09 |
BNI |
AV 7F |
GE |
SPS |
RPT |
VT 0B |
FF 0C |
CR 0D |
SÅ 0E |
JA 0F |
1- | DLE 10 |
DC1 11 |
DC2 12 |
DC3 13 |
RES ENP |
NL |
BS 08 |
POC |
KAN 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 |
HYGGELIG 07 |
3- | |
|
SYN 16 |
IR |
PP |
TRN |
NBS |
EOT 04 |
SBS |
DEN |
RFF |
CU3 |
DC4 14 |
NAK 15 |
|
UNDER 1A |
4- | SP 20 |
RSP A0 |
til E2 |
til E4 |
til E0 |
til E1 |
til E3 |
til E5 |
ç E7 |
ñ F1 |
[ 5B |
. 2E |
< 3C |
( 28 |
+ 2B |
! 21 |
5- | & 26 |
Og E9 |
Og EA |
Og EB |
er E8 |
de E0 |
de EE |
de EF |
de ED |
ß DF |
] 5D |
$ 24 |
* 2A |
) 29 |
; 3B |
^ 5E |
6- | - 2D |
/ 2F |
TIL C2 |
TIL C4 |
TIL C0 |
TIL C1 |
TIL C3 |
TIL C5 |
Ç C7 |
Ñ D1 |
¦ A6 |
, 2C |
% 25 |
_ 5F |
> 3E |
? 3F |
7- | eller F8 |
OG C9 |
OG CA |
OG CB |
ER C8 |
DE CD |
DE CE |
DE CF |
DE CC |
` 60 |
: 3A |
# 23 |
@ 40 |
' 27 |
= 3D |
" 22 |
8- | ELLER D8 |
til 61 |
b 62 |
c 63 |
d 64 |
Og 65 |
f 66 |
g 67 |
h 68 |
de 69 |
" AB |
" BB |
ð F0 |
ý FD |
þ FE |
± B1 |
9- | ° B0 |
j 6A |
k 6B |
L 6C |
m 6D |
n 6E |
eller 6F |
s 70 |
q 71 |
r 72 |
ª AA |
º BA |
æ E6 |
¸ B8 |
Æ C6 |
¤ A4 |
TIL- | µ B5 |
~ 7E |
s 73 |
t 74 |
u 75 |
v 76 |
w 77 |
x 78 |
y 79 |
z 7A |
¡ 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 |
TIL 41 |
B. 42 |
C. 43 |
D. 44 |
Og 45 |
F. 46 |
G. 47 |
H. 48 |
DE 49 |
SJENERT AD |
eller F4 |
eller F6 |
eller F2 |
eller F3 |
eller F5 |
D- | } 7D |
J 4A |
K. 4B |
L 4C |
M. 4D |
Nei. 4E |
ELLER 4F |
P. 50 |
Q 51 |
R. 52 |
¹ B9 |
û FB |
ü FC |
ù F9 |
ú FA |
ÿ FF |
OG- | \ 5C |
÷ F7 |
S. 53 |
T. 54 |
U 55 |
V. 56 |
W 57 |
X 58 |
Y 59 |
Z 5A |
² 82 |
ELLER D4 |
ELLER D6 |
ELLER D2 |
ELLER D3 |
ELLER 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 |