ASCII-standarden antogs 1963, och idag Ă€r det knappast nĂ„gon som anvĂ€nder en kodning vars första 128 tecken skiljer sig frĂ„n ASCII. Trots detta anvĂ€ndes EBCDIC aktivt fram till slutet av förra seklet â den standardkodning som anvĂ€ndes för IBM-mainframes och deras sovjetiska kloner, ES EVM. EBCDIC Ă€r fortfarande huvudkodning i z/OS â standardoperativsystemet för moderna IBM Z-mainframes.
Det som omedelbart slÄr en nÀr man tittar pÄ EBCDIC Àr att bokstÀverna inte följer varandra: mellan I och J och mellan R och S finns det oanvÀnda positioner (pÄ ES EVM kyrilliska tecken). Vem kunde tro att man skulle koda bokstÀver med ojÀmna mellanrum mellan angrÀnsande bokstÀver?

SjĂ€lva namnet EBCDIC ("Extended BCDIC") antyder att denna kodning â till skillnad frĂ„n ASCII â inte skapades pĂ„ en tom plats, utan baserades pĂ„ den sexbitarskodning som kallades BCDIC, vilken anvĂ€ndes frĂ„n (1954):

Det finns ingen direkt bakĂ„tkompatibilitet: en bekvĂ€m egenskap hos BCDIC, som förlorades vid övergĂ„ngen till EBCDIC, var att siffrorna 0â9 motsvarar koderna 0-9. ĂndĂ„ fanns det redan sju koder mellan I och J och Ă„tta koder mellan R och S i BCDIC. Var kom de ifrĂ„n?
Historien om (E)BCDIC börjar samtidigt som historien om IBM â lĂ„ngt innan elektroniska datorer. IBM bildades genom sammanslagning av fyra företag, dĂ€r det mest teknologiskt avancerade var "Tabulating Machine Company", grundat 1896 av Herman Hollerith â uppfinnaren av De första tabulatorerna rĂ€knade helt enkelt antalet perforerade kort som hade stansats pĂ„ en viss plats; men 1905 började Hollerith tillverka decimala tabulatorer. Varje kort för den decimala tabulatorn bestod av fĂ€lt av godtycklig lĂ€ngd, och siffror, skrivna i dessa fĂ€lt i den vanliga decimalformen, summerades över hela kortleken. Delningen av kortet i fĂ€lt bestĂ€mdes genom att trĂ„dar kopplades samman pĂ„ tabulatorns kopplingspanel. Till exempel, pĂ„ detta perforerade kort av Hollerith, i Kongressbiblioteket, finns tydligt stansat numret 23456789012345678, som oklart Ă€r delat i fĂ€lt:

De mest observanta kunde mÀrka att kortet av Hollerith har 12 rader för hÄlen, Àven om tio rÀcker för siffrorna; och i BCDIC anvÀnds endast 12 koder av 16 möjliga för varje vÀrde av de tvÄ högsta bitarna.
SjĂ€lvklart Ă€r detta inte en tillfĂ€llighet. Ursprungligen avsĂ„g Hollerith att anvĂ€nda extra rader för "specialmarkeringar" som inte summerades utan bara rĂ€knades â liksom i de allra första tabulatorerna. (Idag skulle vi kalla dem "bitfĂ€lt".) Dessutom kunde man bland "specialmarkeringar" ange grupplika indikatorer: om tabuleringen krĂ€vde inte bara slutliga summor utan ocksĂ„ mellanliggande, sĂ„ stoppade tabulatorn nĂ€r den upptĂ€ckte en förĂ€ndring i nĂ„gon av grupplika indikatorerna, och operatören var tvungen att skriva ner mellanliggande summor frĂ„n de digitala tavlorna pĂ„ papper, nollstĂ€lla tavlorna och Ă„teruppta tabuleringen. Till exempel, nĂ€r man rĂ€knade bokslut kunde en grupp kort motsvara ett datum eller en motpart.
Vid 1920, nĂ€r Hollerith redan hade gĂ„tt i pension, hade "tryckande tabulatorer" kommit i bruk, som kunde anslutas till teletype och sjĂ€lva skriva ut mellanliggande summor utan att krĂ€va operatörens ingripande. Nu lĂ„g komplexiteten i att faststĂ€lla vad varje tryckt nummer hörde till. Ă
r 1931 bestÀmde IBM sig för att anvÀnda "specialmarkeringar" för att indikera bokstÀver: en markering i rad 12 angav bokstaven frÄn A till I, i rad 11 frÄn J till R, i rad 0 frÄn S till Z. Den nya "alfabetiska tabulatorn" kunde skriva ut namnet pÄ varje grupp kort tillsammans med mellanliggande summor; under tiden blev en icke-tryckt kolumn ett mellanslag mellan tecknen. Observera att S angivits av kombinationen av hÄl 0+2, medan kombinationen 0+1 ursprungligen inte anvÀndes av rÀdsla för att tvÄ hÄl bredvid varandra i samma kolumn skulle orsaka mekaniska problem i lÀsaren.

Nu kan vi se pÄ BCDIC-tabellen frÄn en nÄgot annan vinkel:

Förutom att 0 och mellanslag har bytt plats, definierar de tvĂ„ högsta bitarna "specialmarkeringen" som frĂ„n 1931 stansades i perforeringskortet för motsvarande tecken; de fyra lĂ€gre bitarna definierar siffran som stansas i kortets huvuddel. Stödet för tecken & - / lades in IBM:s tabeller pĂ„ 1930-talet, och kodningen av dessa tecken i BCDIC motsvarar de fickkombinationer som slogs ut för dem. NĂ€r det blev nödvĂ€ndigt att stödja ett Ă€nnu större antal tecken började man slĂ„ en extra "specialmarkering" i rad 8 â pĂ„ sĂ„ sĂ€tt kunde det finnas upp till tre hĂ„l i en kolumn. Detta format för hĂ„lkort har förblivit i stort sett oförĂ€ndrat fram till slutet av seklet. I Sovjetunionen behöll man IBM:s kodningar för latinska bokstĂ€ver och interpunktion, och för kyrilliska bokstĂ€ver slog man flera "specialmarkeringar" i raderna 12, 11, 0 â utan att begrĂ€nsa sig till tre hĂ„l i en kolumn.
NÀr IBM 704:s dator skapades tÀnkte man inte lÀnge pÄ teckenkodningen för den: man tog koden som redan anvÀndes dÄ i hÄlkorten och satte bara 0 "pÄ plats". à r 1964, vid övergÄngen frÄn BCDIC till EBCDIC, lÀmnade man de fyra lÀgsta bitarna av varje tecken oförÀndrade, Àven om man omorganiserade de högre bitarna lite. PÄ sÄ sÀtt pÄverkade formatet för hÄlkorten, som Hollerith valde i början av förra seklet, arkitekturen för alla IBM-datorer, inklusive IBM Z.
KĂ€lla: habr.com
