> ebcdic | ibm | eldre systemer <

// EBCDIC - Extended Binary Coded Decimal Interchange Code

0 tegn
0 tegn
[MAINFRAME]

IBM mainframe

Standard tegnkoding for IBM-mainframe-systemer.

[CODE PAGES]

Flere varianter

Støtte for ulike EBCDIC-kodesider og regioninnstillinger.

[LEGACY]

Legacy-støtte

Viktig for arbeid med eldre mainframe-data.

>> teknisk info

Hvordan EBCDIC fungerer:

EBCDIC (Extended Binary Coded Decimal Interchange Code) er en 8-bits tegnkoding utviklet av IBM. I motsetning til ASCII, som grupperer beslektede tegn, sprer EBCDIC tegnene utover kodeområdet på grunn av sin opprinnelse i hullkortkoder. Ulike EBCDIC-kodesider støtter forskjellige språk og regioner; EBCDIC 037 er den vanligste varianten for USA og Canada.

Eksempler: EBCDIC vs ASCII:

Tegnavbildninger (EBCDIC 037):

Tegn | ASCII | EBCDIC
-----|-------|--------
Mellomrom| 0x20  | 0x40
  A   | 0x41  | 0xC1
  B   | 0x42  | 0xC2
  0   | 0x30  | 0xF0
  1   | 0x31  | 0xF1
  a   | 0x61  | 0x81
  b   | 0x62  | 0x82

"ABC" i ASCII: 41 42 43
"ABC" i EBCDIC: C1 C2 C3

"123" i ASCII: 31 32 33
"123" i EBCDIC: F1 F2 F3

Hvorfor bruke EBCDIC:

  • ▸Påkrevd i IBM-mainframe-miljøer
  • ▸Kompatibilitet med eldre systemer
  • ▸Datamigreringsprosjekter
  • ▸COBOL- og mainframe-utvikling
  • ▸Bevaring av historiske data

>> ofte stilte spørsmål

Hva er EBCDIC?

EBCDIC (Extended Binary Coded Decimal Interchange Code) er en 8-bits tegnkoding utviklet av IBM i 1963. Den brukes hovedsakelig på IBM-mainframe- og mellomklassemaskiner. I motsetning til ASCII gjenspeiler tegnoppsettet i EBCDIC arven fra hullkort.

Hvorfor er EBCDIC annerledes enn ASCII?

EBCDIC utviklet seg fra hullkortkoder, der hull i bestemte posisjoner representerte tegn. Dette førte til en ikke-sammenhengende struktur – bokstaver er ikke sekvensielle, og det finnes mellomrom mellom bokstavgrupper. ASCII ble derimot designet fra bunnen av for effektivitet og er derfor mer logisk for moderne databehandling.

Hva er EBCDIC-kodesider?

EBCDIC har flere varianter kalt kodesider for ulike språk og regioner. Vanlige eksempler er: EBCDIC 037 (USA/Canada), EBCDIC 500 (internasjonal), EBCDIC 875 (gresk) og EBCDIC 1047 (Open Systems). Hver kodeside har egne tegnavbildninger for å støtte lokale krav.

Hvor brukes EBCDIC fortsatt?

EBCDIC brukes fremdeles mye i IBM-mainframe-miljøer (z/OS, z/VM, z/VSE), i bank- og finanssystemer, offentlige legacy-løsninger og COBOL-applikasjoner. Mange organisasjoner beholder EBCDIC-systemer for forretningskritiske prosesser som har kjørt stabilt i flere tiår.

// Tegnkartlegging ASCII ↔ EBCDIC (CP037)

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

// EBCDIC i kode og på kommandolinjen

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

>> Flere spørsmål

S: Hvorfor danner bokstavene A–Z ikke en sammenhengende blokk i EBCDIC?

S: EBCDIC stammer fra hullkortenes soner: A–I ligger på C1–C9, J–R på D1–D9, S–Z på E2–E9, med hull imellom. Derfor kan man ikke konvertere med enkel addisjon.

S: Hvilken kodeside bør jeg velge?

S: Vanlige er CP037 (USA/Canada), CP500 (internasjonal) og CP1047 (z/OS Unix). De skiller seg mest for tegn som [ ] ^ ! |. Velg den som skapte dataene.

S: Hva skjer med linjeskift ved konvertering?

S: Mainframe-filer har ofte poster med fast lengde uten linjeskift; linjeskifttegn (LF/NEL) ligger på ulike steder avhengig av kodesiden (f.eks. LF = 25 i CP037). Kontroller dem etter konvertering.

Andre språk