EBCDIC

Compartir Imprimir Citar
Sistema de codificación de caracteres de 8 bits inventado por IBM

Código de intercambio decimal codificado en binario extendido (EBCDIC;) es una codificación de caracteres de ocho bits que se utiliza principalmente en los sistemas operativos de computadoras centrales IBM y de rango medio de IBM. Desciende del código utilizado con las tarjetas perforadas y el correspondiente código decimal codificado en binario de seis bits utilizado con la mayoría de los periféricos informáticos de IBM de finales de la década de 1950 y principios de la de 1960. Es compatible con varias plataformas que no son de IBM, como Fujitsu-Siemens' BS2000/OSD, OS-IV, MSP y MSP-EX, la serie SDS Sigma, Unisys VS/9, Unisys MCP e ICL VME.

Historia

Tarjeta acolchada con la codificación Hollerith del conjunto de caracteres EBCDIC 1964. El contraste en la parte superior se mejora para mostrar los caracteres impresos.

EBCDIC fue ideado en 1963 y 1964 por IBM y se anunció con el lanzamiento de la línea IBM System/360 de computadoras mainframe. Es una codificación de caracteres de ocho bits, desarrollada por separado del esquema de codificación ASCII de siete bits. Fue creado para extender el Código de Intercambio Decimal de Codificación Binaria (BCD) existente, o BCDIC, que en sí mismo fue diseñado como un medio eficiente para codificar los dos puntos de zona y número en tarjetas perforadas en seis bits. La codificación distinta de 's' y 'S' (utilizando la posición 2 en lugar de la 1) se mantuvo a partir de tarjetas perforadas en las que era deseable no tener perforaciones demasiado cercanas entre sí para garantizar la integridad de la tarjeta física.

Si bien IBM fue uno de los principales defensores del comité de estandarización ASCII, la empresa no tuvo tiempo de preparar los periféricos ASCII (como las máquinas perforadoras de tarjetas) para enviarlos con sus computadoras System/360, por lo que se decidió por EBCDIC. El System/360 tuvo un gran éxito, junto con clones como RCA Spectra 70, ICL System 4 y Fujitsu FACOM, al igual que EBCDIC.

Todos los sistemas operativos de mainframe y de rango medio de IBM utilizan EBCDIC como su codificación inherente (con tolerancia para ASCII, por ejemplo, ISPF en z/OS puede explorar y editar archivos codificados EBCDIC y ASCII). El software puede traducir hacia y desde codificaciones, y los mainframes modernos (como IBM Z) incluyen instrucciones de procesador, a nivel de hardware, para acelerar la traducción entre conjuntos de caracteres.

Existe un formato de transformación Unicode orientado a EBCDIC llamado UTF-EBCDIC propuesto por Unicode Consortium, diseñado para permitir una fácil actualización del software EBCDIC para manejar Unicode, pero no destinado a ser utilizado en entornos de intercambio abierto. Incluso en sistemas con amplio soporte EBCDIC, no ha sido popular. Por ejemplo, z/OS admite Unicode (prefiriendo específicamente UTF-16), pero z/OS solo tiene compatibilidad limitada con UTF-EBCDIC.

No todos los productos de IBM utilizan EBCDIC; IBM AIX, Linux en IBM Z y Linux en Power utilizan ASCII.

Compatibilidad con ASCII

Hubo numerosas dificultades para escribir software que funcionara tanto en ASCII como en EBCDIC.

Diseño de página de códigos

Hay cientos de páginas de códigos EBCDIC basadas en la codificación de caracteres EBCDIC original; hay una variedad de páginas de códigos EBCDIC destinadas para su uso en diferentes partes del mundo, incluidas páginas de códigos para alfabetos no latinos como chino, japonés (por ejemplo, EBCDIC 930, JEF y KEIS), coreano y griego (EBCDIC 875). También hay una gran cantidad de variaciones con las letras intercambiadas sin razón aparente.

La siguiente tabla muestra el "subconjunto invariable" de EBCDIC, que son caracteres que deben tener las mismas asignaciones en todas las páginas de códigos EBCDIC que utilizan el alfabeto latino. (Esto incluye la mayor parte del repertorio invariable de ISO/IEC 646, excepto el signo de exclamación). También muestra (en gris) la puntuación ASCII y EBCDIC faltante, ubicada donde se encuentran en la página de códigos 37 (una de las variantes de la página de códigos de EBCDIC). Las celdas en blanco se llenan con caracteres específicos de la región en las variantes, pero los caracteres en gris a menudo también se intercambian o reemplazan. Al igual que ASCII, el subconjunto invariable solo funciona en inglés, sin incluir los préstamos.

EBCDIC
0 1 2 3 4 5 6 7 8 9 A B C D E F
0x NULSOHSTXETXSELHTRNLDELGESPSRPTVTFFCRSOSI
1x DLEDC1DC2DC3RES/ENPNLBSPOCCANEMUBSCU1IFSIGSIRSIUS/
ITB
2x DSSOSSMWUSBYP/INPLFETBESCSASFESM/SWCSPMFAENQACKBEL
3x SYNIRPPTRNNBSEOTSBSITRFFCU3DC4NAKSUB
4x SP¢ . . () + Silencio
5x " ! $ * ) ; ¬
6x - / . , % ¿Qué? ?
7x ` : # @ ' = "
8x a b c d e f g h i ±
9x j k l m n o p q r
Ax ~ s t u v w x Sí. z
Bx ^ [ ]
Cx {} A B C D E F G H I
Dx } J K L M N O P Q R
Ex S T U V W X Y Z
Fx 0 1 2 3 4 5 6 7 8 9 EO

Definiciones de controles EBCDIC no ASCII

Las siguientes son las definiciones de los caracteres de control EBCDIC que no se asignan a los caracteres de control ASCII o tienen usos adicionales. Cuando se asignan a Unicode, estos se asignan principalmente a puntos de código de caracteres de control C1 de una manera especificada por la arquitectura de representación de datos de caracteres (CDRA) de IBM.

Aunque la asignación predeterminada de Nueva línea (NL) corresponde al carácter de siguiente línea (NEL) ISO/IEC 6429 (cuyo comportamiento también se especifica, pero no es obligatorio, en el Anexo 14 de Unicode), la mayoría de estos C1- los controles asignados no coinciden con los del conjunto ISO/IEC 6429 C1 ni con los de otros conjuntos de control C1 registrados, como ISO 6630. Aunque esto hace que los controles EBCDIC que no son ASCII sean un conjunto de control C1 único, no se encuentran entre los controles C1. conjuntos registrados en el registro ISO-IR, lo que significa que no tienen una secuencia de designación de conjunto de control asignada (según lo especificado por ISO/IEC 2022, y opcionalmente permitido en ISO/IEC 10646 (Unicode)).

Además de U+0085 (siguiente línea), el estándar Unicode no prescribe una interpretación de los caracteres de control C1, dejando su interpretación a protocolos de nivel superior (sugiere, pero no requiere, sus interpretaciones ISO/IEC 6429 en ausencia de uso para otros fines), por lo que esta asignación está permitida en Unicode, pero no está especificada por este.

MnemonicEBCDICPareja CDRANombreDescripción
SEL04009CSeleccionePersonaje de control de dispositivos que toma un parámetro de un solo byte.
PFPunch OffListed in this location by GOST 19768-93.
RNL060086Nueva línea requeridaReasentamiento de ruptura de líneas Tab Indent modo
LCCaso inferiorListed in this location by GOST 19768-93.
GE080097Escape gráficoCambio sin bloqueo que cambia la interpretación del siguiente carácter (véase, por ejemplo, la página 310) del Código. Compare las SS2 de ISO/IEC 6429 (008E).
SPS09008DSuperscriptComience superscript o deshacer subscript. Compare el PLU de ISO/IEC 6429 (008C).
RPT0A008ERepitoCambiar a un modo de operación repitiendo un búfer de impresión
SMMInicio del Mensaje ManualListed in this location by GOST 19768-93.
RES/ENP14009DRestaurar, habilitar la presentaciónReanuda la producción (después BYP/INP)
NL150085 (000A)New LineRompe la línea. El mapeo por defecto (0085) coincide con el NEL de ISO/IEC 6429. Mappings a veces intercambiado con Line Feed (EBCDIC 0x25) de acuerdo con la convención de ruptura de línea UNIX.
POC170087Program Operator CommunicationSeguido por dos operadores de un byte que identifican la función específica, por ejemplo una llave de luz o función. Contraste con CSI (009B) de ISO/IEC 6429, OSC (009D) y APC (009F).
ILIdleListed in this location by GOST 19768-93.
UBS1A0092Unit BackspaceUn backspace fraccional.
CCControl del cursorListed in this location by GOST 19768-93.
CU11B008FUso del clienteNo utilizado por IBM; para el uso del cliente.
IUS/ITB1F001FInterchange Unit Separator, Intermediate Transmission BlockSe utiliza como separador de información para terminar un bloque llamado "unidad" (como en ASCII; vea también IR), o utilizado como código de control de transmisión para delimitar el final de un bloque intermedio.
DS200080Digit SelectUsado por la instrucción S/360 CPU (ED)
SOS210081Inicio del SignificadoUsado por la instrucción S/360 CPU (ED). (Nota: diferente del SOS ISO/IEC 6429; donde es necesario distinguirlos, abrevia IBM abrevia el inicio de la significancia como SOS. (con un punto) y el comienzo de la cuerda como SOS, de lo contrario se abrevian lo mismo.)
SM, FDS220082Separador de campañaUsado por la instrucción S/360 CPU (ED). (Nota: (Intercambio) Separador de archivos, como FS abreviado en ASCII, está en 0x1C y abreviado IFS.)
WUS230083Word UnderscoreResucita la palabra inmediatamente anterior. Contraste con la SGR de ISO/IEC 6429.
BYP/INP240084Bypass, Inhibit PresentationDesactiva la salida, es decir, ignora todos los caracteres gráficos y caracteres de control además de los códigos de control de transmisión y RES/ENP, hasta el siguiente RES/ENP.
SA280088Set AttributeMarca el comienzo de una secuencia de control específica del dispositivo de longitud fija. Deprecated in favour of CSP.
SFE290089Campo de inicio ExtendidoMarca el comienzo de una secuencia de control específica del dispositivo de longitud variable. Deprecated in favour of CSP.
SM/SW2A008AModo de configuración, interruptorControl específico del dispositivo que establece un modo de operación, como un interruptor de buffer.
CU22B008BUso del cliente DosEsto aparece en algunas especificaciones, como GOST 19768-93; nuevas especificaciones de IBM para los códigos de control EBCDIC lista sólo CU1 y CU3 como uso del cliente, y utilizar esta posición para CSP.
CSPPrefijo de secuencia de controlMarca el comienzo de una secuencia de control específica del dispositivo de longitud variable. Seguido por un byte de clase que especifica una categoría de función de control, un byte de cuenta que da la longitud de la secuencia (incluyendo los bytes de cuenta y tipo, pero no el byte de clase o el CSP inicial), un byte de tipo que identifica una función de control dentro de esa categoría, y cero o más bytes de parámetro. Contraste con DCS (0090) de ISO/IEC 6429 y CSI (009B).
MFA2C008CModificar el atributo de campoMarca el comienzo de una secuencia de control específica del dispositivo de longitud variable. Deprecated in favour of CSP.
300090(reservado)Reserved for future use by IBM
310091(reservado)Reserved for future use by IBM
IR330093ÍndiceCualquier movimiento para comenzar la próxima línea (ver también NL), o terminar una unidad de información (ver también IUS/ITB).
PP340094PresentaciónSeguido por dos parámetros de un byte (primera función, segundo número de columna o línea) para establecer la posición actual. Contraste con CUP y HVP de ISO/IEC 6429.
PNPunch OnListed in this location by GOST 19768-93.
TRN350095TransparentSeguido por un parámetro byte que indica el número de bytes de datos transparentes que siguen.
RSTReader StopListed in this location by GOST 19768-93.
NBS360096Numérico BackspaceMueva hacia atrás el ancho de un dígito.
UCCaso superiorListed in this location by GOST 19768-93.
SBS380098SubscriptComience subscript o deshacer superscript. Compare el PLD de ISO/IEC 6429 (008B).
IT390099Tab IndentIdentifica las líneas actuales y todas las siguientes, hasta RNL o RFF se encuentra.
RFF3A009AFormulario obligatorioReajuste de página Tab Indent Modo.
CU33B009BUso del cliente TresNo utilizado por IBM; para el uso del cliente.
3E009E(reservado)Reserved for future use by IBM
EOFF009FOcho unoTodos los caracteres utilizados como relleno

Páginas de códigos con conjuntos de caracteres Latin-1

Las siguientes páginas de códigos tienen el conjunto completo de caracteres Latin-1 (ISO/IEC 8859-1). La primera columna proporciona el número de página de códigos original. La segunda columna proporciona el número de la página de códigos actualizada con el signo del euro (€) en sustitución del signo de moneda universal (¤) (o en el caso de EBCDIC 924, con el conjunto cambiado para que coincida con ISO 8859-15)

CCSID Euro
actualización
Países
0371140Australia, Brasil, Canadá, Nueva Zelandia, Portugal, Sudáfrica, Estados Unidos
2731141Austria, Alemania
2771142Dinamarca, Noruega
2781143Finlandia, Suecia
2801144Italia
2841145América Latina, España
2851146Irlanda, Reino Unido
2971147Francia
5001148Internacional
8711149Islandia
1047924Open Systems (MVS C compilador)

Crítica y humor

El defensor del software de código abierto y desarrollador de software Eric S. Raymond escribe en su Jargon File que los piratas informáticos odiaban a EBCDIC, lo que significaba miembros de una subcultura de programadores entusiastas. El archivo de jerga 4.4.7 da la siguiente definición:

EBCDIC: /eb ́s@·dik/, /eb ́see`dik/, /eb ́k@·dik/, n. [abbreviation, Extended Binary Coded Decimal Interchange Code] An alleged character set used on IBM dinosaurs. Existe en al menos seis versiones mutuamente incompatibles, todas con deleites tales como secuencias de letras no contiguas y la ausencia de varios caracteres de puntuación ASCII bastante importante para los lenguajes modernos de la computadora (exactamente qué caracteres están ausentes varía según la versión de EBCDIC que estás mirando). IBM adaptó EBCDIC a partir del código de tarjetas perforadas a principios de los años 60 y lo promulgó como una táctica de control del cliente (ver conspiración de conexión), estimulando el estándar ASCII ya establecido. Hoy, IBM afirma ser una empresa de sistemas abiertos, pero la propia descripción de IBM de las variantes EBCDIC y cómo convertir entre ellas sigue siendo internamente clasificada top-secreta, quemada antes de leer. Hackers blanch en el mismo Nombre de EBCDIC y considerarlo una manifestación del mal más puro.

El archivo Jargon 4.4.7

El diseño de EBCDIC también fue fuente de muchas bromas. Una de esas bromas, que se encuentra en el archivo de fortuna de Unix de 4.3BSD Reno (1990), decía:

Profesor: "Así que el gobierno estadounidense fue a IBM para inventar un estándar de encriptación, y se les ocurrió..."
Estudiante: "¡EBCDIC!"

Las referencias al juego de caracteres EBCDIC se hacen en la serie de juegos de computadora de 1979 Zork. En la "Sala de máquinas" en Zork II, EBCDIC se usa para implicar un lenguaje incomprensible:

Esta es una gran sala llena de maquinaria pesada surtida, que gime ruidosamente. La habitación huele a resistores quemados. A lo largo de una pared hay tres botones que son, respectivamente, redondos, triangulares y cuadrados. Naturalmente, por encima de estos botones se escriben instrucciones en EBCDIC...

En 2021, se hizo público que un banco belga todavía usaba EBCDIC internamente en 2019. Esto llamó la atención porque un cliente insistió en que la ortografía correcta de su apellido incluía una diéresis, que el banco omitió. El cliente presentó una reclamación invocando la garantía en el Reglamento General de Protección de Datos del derecho a la oportuna "rectificación de los datos personales inexactos". El banco argumentó en parte que no podía cumplir porque su sistema informático solo era compatible con EBCDIC, que no admite letras con diéresis. La corte de apelaciones falló a favor del cliente.