EBCDIC
EBCDIC ("extended binary-coded decimal interchange code") is een 8-bit-standaard om letters en leestekens op te slaan, ontwikkeld in 1963-1964 door IBM voor hun mainframes en AS/400-computers. De code stamt af van het gebruik van ponskaarten en wordt al jaren als verouderd beschouwd; modernere standaarden voor het voorstellen van tekens zijn onder meer ANSI en Unicode.
De 1-byte-versie van EBCDIC gebruikt acht bits, verdeeld in twee gelijke delen van telkens 4 bits. De eerste 4 bits, de zone, stellen de tekencategorie voor; de laatste 4 bits, de digit, duiden het specifieke teken aan. Er bestaat een aantal EBCDIC-versies, aangepast per land, om speciale tekens voor te stellen. Zo gebruik(t)en sommige Aziatische landen een 2-byte-extensie van EBCDIC om alle Oosterse tekens weer te kunnen geven. Zij maken hierbij gebruik van de zogenaamde shift codes [0x0E,0x0F].
IBM identificeerde alle codepages met een nummer, de CCSID (Coded Character Set IDentifier).
De EBCDIC-tekens zijn als volgt (geel: latere toevoegingen):
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
00 | NUL | SOH | STX | ETX | PF | HT | LC | DEL | SMM | VT | FF | CR | SO | SI | ||||
10 | DLE | DC1 | DC2 | TM | RES | NL | BS | IL | CAN | EM | CC | CU1 | IFS | IGS | IRS | IUS | ||
20 | DS | SOS | FS | BYP | LF | ETB | ESC | SM | CU2 | ENQ | ACK | BEL | ||||||
30 | SYN | PN | RS | UC | EOT | CU3 | DC4 | NAK | SUB | |||||||||
40 | â | ä | à | á | ã | å | ç | ñ | ¢ [ | . | < | ( | + | | | ||||
50 | & | é | ê | ë | è | í | î | ï | ì | ß | ] | $ | * | ) | ; | ~ | ||
60 | - | / | Â | Ä | À | Á | Ã | Å | Ç | Ñ | ¦ | , | % | _ | > | ? | ||
70 | ø | É | Ê | Ë | È | Í | Î | Ï | Ì | ` | : | # | @ | ' | = | " | ||
80 | Ø | a | b | c | d | e | f | g | h | i | « | » | ð | ý | þ | ± | ||
90 | ° | j | k | l | m | n | o | p | q | r | ª | º | æ | ¸ | Æ | ¤ | ||
A0 | µ | ~ | s | t | u | v | w | x | y | z | ¡ | ¿ | Ð | Ý | Þ | ® | ||
B0 | ¢ | £ | ¥ | · | © | § | ¶ | ¼ | ½ | ¾ | ¬ | | | ¯ | ¨ | ' | × | ||
C0 | { | A | B | C | D | E | F | G | H | I | - | ô | ö | ò | ó | õ | ||
D0 | } | J | K | L | M | N | O | P | Q | R | ¹ | û | ü | ù | ú | ÿ | ||
E0 | \ | ÷ | S | T | U | V | W | X | Y | Z | ² | Ô | Ö | Ò | Ó | Õ | ||
F0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ³ | Û | Ü | Ù | Ú |
Dit is CCSID 500, een EBCDIC-variant. De tekens 0x00–0x3F en 0xFF zijn besturingstekens, 0x40 is een spatie, 0x41 is een no-break space 0xCA is een soft hyphen.
Doordat een teken voorgesteld wordt door een 4-bits-waarde, is er een mooie overeenkomst tussen hexadecimale tekens en EBCDIC. De voorstelling van ons Latijns alfabet is echter niet continu: tussen de tekens i en j bevinden zich bijvoorbeeld de tekens «, », ð, ý, þ, ±, °. Dit brengt een aantal lastige praktische problemen met zich mee, bijvoorbeeld bij het alfabetisch sorteren van gegevens.