> ebcdic | ibm | legacy <
// EBCDIC – Extended Binary Coded Decimal Interchange Code
IBM Mainframe
Standard-Zeichenkodierung für IBM-Mainframe-Systeme.
Mehrere Varianten
Unterstützt verschiedene EBCDIC-Codepages und Gebietsschemata.
Legacy-Unterstützung
Unverzichtbar für die Arbeit mit Legacy-Mainframe-Daten.
>> Technische Infos
Wie EBCDIC funktioniert:
EBCDIC (Extended Binary Coded Decimal Interchange Code) ist eine 8-Bit-Zeichenkodierung, die von IBM entwickelt wurde. Anders als ASCII, das zusammengehörige Zeichen gruppiert, sind EBCDIC-Zeichen über den gesamten Codebereich verteilt – eine Folge seiner Herkunft aus Lochkarten-Codes. Unterschiedliche EBCDIC-Codepages unterstützen verschiedene Sprachen und Regionen; EBCDIC 037 ist die gängigste Variante für USA und Kanada.
Beispiele: EBCDIC vs. ASCII:
Zeichenabbildungen (EBCDIC 037): Zeichen | ASCII | EBCDIC --------|-------|-------- Leerzeichen| 0x20 | 0x40 A | 0x41 | 0xC1 B | 0x42 | 0xC2 0 | 0x30 | 0xF0 1 | 0x31 | 0xF1 a | 0x61 | 0x81 b | 0x62 | 0x82 "ABC" in ASCII: 41 42 43 "ABC" in EBCDIC: C1 C2 C3 "123" in ASCII: 31 32 33 "123" in EBCDIC: F1 F2 F3
Warum EBCDIC verwenden?:
- ▸Erforderlich auf IBM-Mainframes
- ▸Kompatibilität mit Legacy-Systemen
- ▸Datenmigrationsprojekte
- ▸COBOL- und Mainframe-Entwicklung
- ▸Bewahrung historischer Daten
>> Häufig gestellte Fragen
Was ist EBCDIC?
EBCDIC (Extended Binary Coded Decimal Interchange Code) ist eine 8-Bit-Zeichenkodierung, die 1963 von IBM entwickelt wurde. Sie wird vor allem auf IBM-Mainframe- und Midrange-Systemen eingesetzt. Im Gegensatz zu ASCII spiegelt die Anordnung der EBCDIC-Zeichen das Erbe der Lochkarten wider.
Warum unterscheidet sich EBCDIC von ASCII?
EBCDIC entwickelte sich aus Lochkarten-Codes, bei denen Lochpositionen bestimmte Zeichen repräsentierten. Dadurch entstand eine nicht zusammenhängende Anordnung – Buchstaben sind nicht fortlaufend und zwischen Buchstabenblöcken gibt es Lücken. ASCII wurde dagegen von Grund auf für Effizienz entworfen und ist daher für moderne Computerlogik intuitiver.
Was sind EBCDIC-Codepages?
EBCDIC besitzt mehrere Varianten, sogenannte Codepages, für verschiedene Sprachen und Regionen. Häufig verwendete Beispiele sind: EBCDIC 037 (USA/Kanada), EBCDIC 500 (International), EBCDIC 875 (Griechisch) und EBCDIC 1047 (Open Systems). Jede Codepage ordnet Zeichen unterschiedlich zu, um lokale Anforderungen zu erfüllen.
Wo wird EBCDIC heute noch verwendet?
EBCDIC wird weiterhin umfangreich in IBM-Mainframe-Umgebungen (z/OS, z/VM, z/VSE), in Bank- und Finanzsystemen, in behördlichen Legacy-Systemen sowie in COBOL-Anwendungen eingesetzt. Viele Unternehmen betreiben EBCDIC-Systeme für geschäftskritische Prozesse, die seit Jahrzehnten stabil laufen.
// Zeichenzuordnung ASCII ↔ EBCDIC (CP037)
| Zeichen | ASCII | EBCDIC (CP037) |
|---|---|---|
| A | 41 | C1 |
| I | 49 | C9 |
| J | 4A | D1 |
| R | 52 | D9 |
| S | 53 | E2 |
| Z | 5A | E9 |
| a | 61 | 81 |
| z | 7A | A9 |
| 0 | 30 | F0 |
| 9 | 39 | F9 |
| ␠ | 20 | 40 |
| . | 2E | 4B |
| ! | 21 | 5A |
| \n | 0A | 25 |
// EBCDIC im Code und auf der Kommandozeile
Linux iconv -f IBM037 -t UTF-8 input.dat > output.txt
iconv -f UTF-8 -t IBM037 input.txt > output.dat
dd dd conv=ascii < ebcdic.dat > ascii.txt
dd conv=ebcdic < ascii.txt > ebcdic.dat
Python data.decode('cp037') / text.encode('cp037')
Java new String(bytes, "Cp037")
>> Weitere Fragen
F: Warum bilden die Buchstaben A–Z in EBCDIC keinen lückenlosen Block?
A: EBCDIC stammt von Lochkarten-Zonen: A–I liegen bei C1–C9, J–R bei D1–D9, S–Z bei E2–E9. Dazwischen liegen Lücken, weshalb sich Buchstaben nicht einfach per Addition umrechnen lassen.
F: Welche Codepage soll ich wählen?
A: Häufig sind CP037 (USA/Kanada), CP500 (International) und CP1047 (z/OS Unix). Sie unterscheiden sich vor allem bei Satzzeichen wie [ ] ^ ! |. Nimm die Codepage, mit der die Daten erzeugt wurden.
F: Was passiert mit Zeilenumbrüchen bei der Umwandlung?
A: Mainframe-Dateien haben oft Datensätze fester Länge ohne Zeilenumbruch; Zeilenende-Zeichen (LF/NEL) liegen je nach Codepage an anderer Stelle (z. B. LF = 25 in CP037). Prüfe Umbrüche nach der Konvertierung.