convertir | codificar | mainframe

> ebcdic | ibm | legado <

// EBCDIC - Extended Binary Coded Decimal Interchange Code

0 caracteres
0 caracteres
[MAINFRAME]

Mainframe IBM

Codificación de caracteres estándar para sistemas mainframe de IBM.

[CODE PAGES]

Múltiples variantes

Soporte para distintas páginas de códigos y configuraciones regionales EBCDIC.

[LEGACY]

Compatibilidad heredada

Esencial para trabajar con datos heredados de mainframe.

>> información técnica

Cómo funciona EBCDIC:

EBCDIC (Extended Binary Coded Decimal Interchange Code) es una codificación de caracteres de 8 bits desarrollada por IBM. A diferencia de ASCII, que agrupa caracteres relacionados, EBCDIC los distribuye por todo el espacio de códigos debido a su origen en tarjetas perforadas. Las diferentes páginas de códigos EBCDIC soportan varios idiomas y regiones, siendo EBCDIC 037 la más común en EE. UU. y Canadá.

Ejemplos EBCDIC vs ASCII:

Mapeos de caracteres (EBCDIC 037):

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

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

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

Por qué usar EBCDIC:

  • ▸Requerido en entornos mainframe IBM
  • ▸Compatibilidad con sistemas heredados
  • ▸Proyectos de migración de datos
  • ▸Desarrollo en COBOL y mainframe
  • ▸Preservación de datos históricos

>> preguntas frecuentes

¿Qué es EBCDIC?

EBCDIC (Extended Binary Coded Decimal Interchange Code) es una codificación de caracteres de 8 bits desarrollada por IBM en 1963. Se utiliza principalmente en sistemas mainframe y de gama media de IBM. A diferencia de ASCII, la disposición de caracteres de EBCDIC refleja su herencia de las tarjetas perforadas.

¿Por qué EBCDIC es diferente de ASCII?

EBCDIC evolucionó a partir de códigos de tarjetas perforadas, donde perforaciones en posiciones concretas representaban caracteres. Esto dio lugar a una disposición no contigua: las letras no son secuenciales y hay huecos entre grupos de letras. ASCII, en cambio, se diseñó desde cero para ser eficiente, por lo que es más lógico para la informática moderna.

¿Qué son las páginas de códigos EBCDIC?

EBCDIC tiene varias variantes llamadas páginas de códigos para distintos idiomas y regiones. Entre las más comunes están: EBCDIC 037 (EE. UU./Canadá), EBCDIC 500 (internacional), EBCDIC 875 (griego) y EBCDIC 1047 (Open Systems). Cada página de códigos asigna los caracteres de forma distinta para adaptarse a las necesidades locales.

¿Dónde se sigue usando EBCDIC?

EBCDIC sigue utilizándose ampliamente en entornos mainframe de IBM (z/OS, z/VM, z/VSE), en sistemas bancarios y financieros, sistemas gubernamentales heredados y aplicaciones COBOL. Muchas organizaciones mantienen sistemas EBCDIC para procesos críticos de negocio que llevan funcionando de forma fiable durante décadas.

// Correspondencia ASCII ↔ EBCDIC (CP037)

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

// EBCDIC en código y en la línea de comandos

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

>> Más preguntas

P: ¿Por qué las letras A–Z no forman un bloque continuo en EBCDIC?

R: EBCDIC procede de las zonas de las tarjetas perforadas: A–I en C1–C9, J–R en D1–D9, S–Z en E2–E9, con huecos entre ellas. Por eso no se convierten con una simple suma.

P: ¿Qué página de códigos debo elegir?

R: Las más comunes son CP037 (EE. UU./Canadá), CP500 (internacional) y CP1047 (z/OS Unix). Difieren sobre todo en signos como [ ] ^ ! |. Elige la que generó los datos.

P: ¿Qué pasa con los saltos de línea al convertir?

R: Los archivos de mainframe suelen tener registros de longitud fija sin salto de línea; los caracteres de fin de línea (LF/NEL) están en posiciones distintas según la página de códigos (p. ej. LF = 25 en CP037). Revísalos tras convertir.

Otros idiomas