konvertieren | kodieren | Mainframe

> ebcdic | ibm | legacy <

// EBCDIC – Extended Binary Coded Decimal Interchange Code

0 Zeichen
0 Zeichen
[MAINFRAME]

IBM Mainframe

Standard-Zeichenkodierung für IBM-Mainframe-Systeme.

[CODE PAGES]

Mehrere Varianten

Unterstützt verschiedene EBCDIC-Codepages und Gebietsschemata.

[LEGACY]

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)

ZeichenASCIIEBCDIC (CP037)
A41C1
I49C9
J4AD1
R52D9
S53E2
Z5AE9
a6181
z7AA9
030F0
939F9
␠2040
.2E4B
!215A
\n0A25

// 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.

Weitere Sprachen