converti | codifica | mainframe

> ebcdic | ibm | legacy <

// EBCDIC - Extended Binary Coded Decimal Interchange Code

0 caratteri
0 caratteri
[MAINFRAME]

Mainframe IBM

Codifica caratteri standard per i sistemi mainframe IBM.

[CODE PAGES]

Varianti multiple

Supporto per diverse code page EBCDIC e impostazioni locali.

[LEGACY]

Supporto legacy

Fondamentale per lavorare con dati legacy provenienti da mainframe.

>> informazioni tecniche

Come funziona EBCDIC:

EBCDIC (Extended Binary Coded Decimal Interchange Code) è una codifica di caratteri a 8 bit sviluppata da IBM. A differenza di ASCII, che raggruppa insieme i caratteri correlati, EBCDIC li distribuisce nello spazio dei codici a causa della sua origine nei codici delle schede perforate. Le diverse code page EBCDIC supportano lingue e regioni differenti; EBCDIC 037 è la variante più comune per Stati Uniti e Canada.

Esempi EBCDIC vs ASCII:

Mappature dei caratteri (EBCDIC 037):

Carattere | ASCII | EBCDIC
----------|-------|--------
Spazio    | 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

Perché usare EBCDIC:

  • ▸Richiesto negli ambienti mainframe IBM
  • ▸Compatibilità con sistemi legacy
  • ▸Progetti di migrazione dei dati
  • ▸Sviluppo COBOL e mainframe
  • ▸Conservazione dei dati storici

>> domande frequenti

Che cos’è EBCDIC?

EBCDIC (Extended Binary Coded Decimal Interchange Code) è una codifica di caratteri a 8 bit sviluppata da IBM nel 1963. È utilizzata principalmente sui sistemi mainframe e midrange IBM. A differenza di ASCII, la disposizione dei caratteri EBCDIC riflette l’eredità delle schede perforate.

Perché EBCDIC è diverso da ASCII?

EBCDIC si è evoluto dai codici delle schede perforate, in cui fori in posizioni specifiche rappresentavano i caratteri. Ciò ha portato a una disposizione non contigua: le lettere non sono sequenziali e ci sono spazi tra i gruppi di lettere. ASCII, invece, è stato progettato da zero per l’efficienza, risultando più logico per l’informatica moderna.

Cosa sono le code page EBCDIC?

EBCDIC include diverse varianti chiamate code page per lingue e regioni differenti. Tra le più comuni troviamo: EBCDIC 037 (USA/Canada), EBCDIC 500 (internazionale), EBCDIC 875 (greco) ed EBCDIC 1047 (Open Systems). Ogni code page mappa i caratteri in modo diverso per soddisfare le esigenze locali.

Dove si usa ancora EBCDIC?

EBCDIC è ancora ampiamente utilizzato negli ambienti mainframe IBM (z/OS, z/VM, z/VSE), nei sistemi bancari e finanziari, nei sistemi legacy governativi e nelle applicazioni COBOL. Molte organizzazioni mantengono sistemi EBCDIC per processi aziendali critici che funzionano in modo affidabile da decenni.

// Corrispondenza ASCII ↔ EBCDIC (CP037)

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

// EBCDIC nel codice e da riga di comando

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")

>> Altre domande

D: Perché le lettere A–Z non formano un blocco continuo in EBCDIC?

R: EBCDIC deriva dalle zone delle schede perforate: A–I in C1–C9, J–R in D1–D9, S–Z in E2–E9, con lacune in mezzo. Per questo non si converte con una semplice somma.

D: Quale code page devo scegliere?

R: Le più comuni sono CP037 (USA/Canada), CP500 (internazionale) e CP1047 (z/OS Unix). Differiscono soprattutto per segni come [ ] ^ ! |. Scegli quella con cui sono stati prodotti i dati.

D: Che fine fanno i ritorni a capo nella conversione?

R: I file mainframe hanno spesso record a lunghezza fissa senza a capo; i caratteri di fine riga (LF/NEL) si trovano in posizioni diverse a seconda della code page (ad es. LF = 25 in CP037). Controllali dopo la conversione.

Altre lingue