Hollerith hulkort

Fra DDHFwiki
Spring til navigation Spring til søgning

Herman Hollerith var en amerikansk statistiker som opfandt hulkort til registrering af data. Ideen kom ikke fra Jacquards vævemaskine, men ved at observere hvordan billetter blev klippet ved verifikation af rejsehjemmel. Hollerith var på rejse på den transkontinentale jernbane i USA. I stedet for at have et foto af indehaveren af billetten, blev der hullet til en kategoriseret beskrivelse: Køn, hårfarve, øjenfarve o.lign.

Hollerith grundlagde Tabulating Machine Company i 1896, en af de virksomheder som senere blev slået sammen til det, som kom til at blive IBM. Hollerith blev den standard, som IBM byggede deres hulkortimperium på med senere udvidelser for bogstaver og brug i datamaskiner, som ikke længere havde hulkort.

Den første udgave

Den tidligste udgave af hulkort havde 10 rækker og 45 kolonner. Det var kun muligt at skrive tal, og det var designet således at kun blev lavet ét hul per kolonne. "0" var et hul i række 1, "1" i række 2 osv. Øverst til venstre på billedet er et 45-hullers kort fra slutningen af 1800-tallet.

Tallene 0 til 9 som huller
0 1 2 3 4 5 6 7 8 9
Række 1
Række 2
Række 3
Række 4
Række 5
Række 6
Række 7
Række 8
Række 9
Række 10

Alfanumeriske hulkort

I slutningen af 1920erne opstod der et behov for at kunne gemme bogstaver såvel som tal på et hulkort og i 1928 introducerede IBM et nyt kort med 2 ekstra rækker og 80 kolonner i samme fysiske format - 7⅜ x ​3¼ engelske tommer. Hullerne blev gjort rektangulære for at kunne få flere kolonner. De to nye rækker blev placeret i toppen af kortet som række 11 og 12. De bliver betegnet zoner. Rækkerne 1 til 10 blev omnummereret til at matche det tal de kunne indeholde, altså række 0 til 9. Tallet 0 (række 0) bliver også brugt som zone. Hvis der er to huller i en kolonne, så bruges zonerne, ellers er det et tal fra 0 til 9, '&' eller '-' og er derved bagudkompatibelt med Hollerith formatet.

Af hensyn til pladsen viser et tal/bogstav viser hvad hulpositionen betyder. F.eks. hvis en kolonne har huller i række 12 og række 6 er det et 'F'. Hvis der er et enkelt hul i kolonnen i række 12, er det et '&'. Den eneste kombination hvor der er to huller tæt på hinanden i en kolonne er skråstreg ('/').


Række 12 &
Række 11 -
Række 0 0
Række 1 1 A J /
Række 2 2 B K S
Række 3 3 C L T
Række 4 4 D M U
Række 5 5 E N V
Række 6 6 F O W
Række 7 7 G P X
Række 8 8 H Q Y
Række 9 9 I R Z

Mellemrum er repræsenteret ved intet hul i kolonnen.

De forskellige computerfirmaer opfandt forskellige måder at gemme hulkorts informationen i hukommelse, typisk i 2+4 bit, således at zonerne bliver til de to første bit, og resten kodes i 4 bit. Ingen zone kodes til 00, zone 12 til 01, zone 11 til 10 og 0 til 11. Der var ingen standardisering, ikke engang i samme firma, og det var også muligt at se Ingen-0-11-12.

Når 10 muligheder indkodes i 4 bit, så bliver der 6 pladser tilovers. Det blev udnyttet til at få flere tegn og dermed blev Binary-Coded Decimal (BCD) etableret.

Tegnsæt

Binary-Coded Decimal (BCD)

BCD betegner en række løsninger for at kode hulkortsdata i 6 bit. For at kunne udnytte alle 64 muligheder blev 8-tallet (række 8) indraget som zone og der kan være tre huller i en kolonne. Nedenstående er et eksempel på et tegnsæt i IBM 716 printeren.

IBM 716 printer tegnsæt G
Række 12 &
Række 11 -
Række 0 0
Række 1 1 A J /
Række 2 2 B K S + . $ ,
Række 3 3 C L T - * %
Række 4 4 D M U
Række 5 5 E N V
Række 6 6 F O W
Række 7 7 G P X
Række 8 8 H Q Y
Række 9 9 I R Z

EBCDIC

Extended Binary Coded Decimal Interchange Code (EBCDIC) er et tegnsæt, der bliver primært brugt på IBM mainframes. Det blev etableret i 1964 sammen med IBM System/360 produktlinjen for bla. at have små bogstaver og flere specialtegn. For at kunne læse/skrive til hulkort blev 9-tallet nu også brugt som zone til kontroltegn. Der kan derfor være op til 3 huller i en kolonne. EBCDIC tabel for IBM 029 Card Punch vist som det ville være kodet på et hulkort. Zone 9 er ikke vist i tabellen.

Række 12 & Zone 12
Række 11 - Zone 11
Række 0 0 Zone 0
Række 1 1 A J / a j ° : ¢ !
Række 2 2 B K S b k s # . $ ,
Række 3 3 C L T c l t @ < * %
Række 4 4 D M U d m u ' ( ) _
Række 5 5 E N V e n v = + ; >
Række 6 6 F O W f o w " | ¬ ?
Række 7 7 G P X g p x
Række 8 8 H Q Y h q y Zone 8
Række 9 9 I R Z i r z Zone 9