El Código de intercambio decimal codificado en binario extendido [1] [2] ( EBCDIC ; [1] / ˈ ɛ b s ɪ d ɪ k / ) es una codificación de caracteres de ocho bits utilizada principalmente en los sistemas operativos de mainframe y de gama media de IBM . Desciende del código utilizado con tarjetas perforadas y del código decimal codificado en binario de seis bits correspondiente utilizado con la mayoría de los periféricos informáticos de IBM de finales de los años 1950 y principios de los años 1960. [3] Es compatible con varias plataformas que no son IBM, como BS2000/OSD , OS-IV, MSP y MSP-EX de Fujitsu-Siemens , la serie SDS Sigma , Unisys VS/9 , Unisys MCP e ICL VME .
El EBCDIC fue ideado en 1963 y 1964 por IBM y fue anunciado con el lanzamiento de la línea de computadoras mainframe IBM System/360 . Es una codificación de caracteres de ocho bits, desarrollada independientemente del esquema de codificación ASCII de siete bits . Fue creado para extender el Código de Intercambio Decimal Codificado en Binario (BCD) existente, o BCDIC , que a su vez fue ideado como un medio eficiente de codificar las dos zonas y los números perforados en tarjetas perforadas en seis bits. La codificación distinta de 's' y 'S' (usando la posición 2 en lugar de 1) se mantuvo de las tarjetas perforadas donde era deseable no tener perforaciones demasiado cerca una de la otra para asegurar la integridad de la tarjeta física. [4] [ verificación fallida ]
Aunque IBM fue uno de los principales promotores del comité de estandarización ASCII, [5] la compañía no tuvo tiempo de preparar periféricos ASCII (como máquinas perforadoras de tarjetas) para enviar con sus computadoras System/360, por lo que la compañía se decidió por EBCDIC. [3] El System/360 tuvo un gran éxito, junto con clones como RCA Spectra 70 , ICL System 4 y Fujitsu FACOM, por lo que también lo hizo EBCDIC.
Todos los sistemas operativos mainframe de IBM , y su sistema operativo IBM i para computadoras de gama media , utilizan EBCDIC como su codificación inherente [6] (con tolerancia para ASCII, por ejemplo, ISPF en z/OS puede explorar y editar archivos codificados tanto en EBCDIC como en 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.
No todos los sistemas operativos que se ejecutan en hardware IBM utilizan EBCDIC; IBM AIX , Linux en IBM Z y Linux en Power utilizan ASCII, al igual que todos los sistemas operativos que se ejecutan en IBM Personal Computer y sus sucesores.
Hubo numerosas dificultades para escribir software que funcionara tanto en ASCII como en EBCDIC.
for (c = 'A'; c <= 'Z'; ++c) putchar(c);
Existen cientos de páginas de códigos EBCDIC basadas en la codificación de caracteres EBCDIC original; existe una variedad de páginas de códigos EBCDIC destinadas a usarse 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 existe una gran cantidad de variaciones con las letras intercambiadas sin ninguna razón aparente. [ cita requerida ]
La tabla siguiente muestra el "subconjunto invariante" [9] de EBCDIC, que son caracteres que deberían 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 invariante ISO/IEC 646 , excepto el signo de exclamación ). También muestra (en gris) la puntuación ASCII y EBCDIC faltante, ubicada donde están 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 están llenas de 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 invariante funciona solo para idiomas que utilizan el alfabeto latino básico ISO , como inglés (excluyendo préstamos y algunas variaciones ortográficas poco comunes) y holandés (si las ligaduras "ij" y "IJ" se escriben como dos caracteres).
A continuación se presentan las definiciones de caracteres de control EBCDIC que no se asignan a los caracteres de control ASCII o que 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. [10] [11]
Aunque la asignación predeterminada de Nueva línea (NL) corresponde al carácter de siguiente línea (NEL) de ISO/IEC 6429 (cuyo comportamiento también se especifica, pero no se requiere, en el Anexo 14 de Unicode), [12] la mayoría de estos controles asignados a C1 no coinciden ni con los del conjunto C1 de ISO/IEC 6429 ni con los de otros conjuntos de control C1 registrados , como ISO 6630. [13] Aunque esto hace que los controles EBCDIC no ASCII sean efectivamente un conjunto de control C1 único, no se encuentran entre los conjuntos de control C1 registrados en el registro ISO-IR , [14] lo que significa que no tienen una secuencia de designación de conjunto de control asignada (como se especifica en ISO/IEC 2022 y se permite opcionalmente en ISO/IEC 10646 (Unicode)). [15]
Además de U+0085 (Next Line), 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 exige, sus interpretaciones ISO/IEC 6429 en ausencia de uso para otros fines), [16] por lo que esta asignación está permitida en Unicode, pero no está especificada por éste.
Las siguientes páginas de códigos tienen el conjunto completo de caracteres Latin-1 (ISO/IEC 8859-1). La primera columna indica el número de la página de códigos original. La segunda columna indica el número de la página de códigos actualizada con el símbolo del euro (€) en sustitución del símbolo monetario universal (¤) (o en el caso de EBCDIC 924, con el conjunto modificado para que coincida con ISO 8859-15 ).
Cada país tiene diferentes páginas de códigos porque estas páginas de códigos se originaron como páginas de códigos con repertorios de caracteres específicos de cada país y luego se ampliaron para incluir todo el repertorio ISO 8859-1, lo que significa que un carácter ISO 8859-1 determinado puede tener diferentes valores de punto de código en diferentes páginas de códigos. Se conocen como páginas de códigos extendidas por país ( CECP ). [20]
Eric S. Raymond, defensor del software de código abierto y desarrollador de software, escribe en su Jargon File que los hackers odiaban a EBCDIC, con lo que se refería [21] a los miembros de una subcultura de programadores entusiastas. El Jargon File 4.4.7 ofrece la siguiente definición: [22]
EBCDIC: /eb´s@·dik/, /eb´see`dik/, /eb´k@·dik/, n. [abreviatura, Extended Binary Code Decimal Interchange Coded] Un supuesto conjunto de caracteres utilizado en los dinosaurios de IBM. Existe en al menos seis versiones mutuamente incompatibles, todas ellas con delicias tales como secuencias de letras no contiguas y la ausencia de varios caracteres de puntuación ASCII bastante importantes para los lenguajes informáticos modernos (los caracteres que faltan exactamente varían según la versión de EBCDIC que esté mirando). IBM adaptó EBCDIC a partir del código de tarjeta perforada a principios de la década de 1960 y lo promulgó como una táctica de control del cliente (ver la conspiración del conector ), desdeñando 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 de EBCDIC y cómo convertirlas todavía está clasificada internamente como alto secreto, que se debe quemar antes de leer. Los hackers palidecen ante el solo nombre de EBCDIC y lo consideran una manifestación del más puro mal.
— El archivo de jerga 4.4.7
El diseño de EBCDIC también fue fuente de muchos chistes. Uno de ellos, encontrado en el archivo fortune de Unix de 4.3BSD Reno (1990) [23] decía:
Profesor: "Entonces el gobierno americano recurrió a IBM para que ideara un estándar de cifrado , y se les ocurrió..."
Estudiante: "¡EBCDIC!"
En la serie de juegos de ordenador Zork de 1979 se hacen referencias al conjunto de caracteres EBCDIC . En la "Sala de máquinas" de Zork II , se utiliza EBCDIC para dar a entender que se trata de un lenguaje incomprensible:
Se trata de una gran sala llena de maquinaria pesada de todo tipo, que zumba ruidosamente. La sala huele a resistencias quemadas. A lo largo de una pared hay tres botones que son, respectivamente, redondos, triangulares y cuadrados. Naturalmente, encima de estos botones hay instrucciones escritas en EBCDIC...
En 2021, se hizo público que un banco belga seguía utilizando EBCDIC internamente en 2019. Un cliente insistió en que la ortografía correcta de su apellido incluía una diéresis , que el banco omitió, y el cliente presentó una queja citando la garantía en el Reglamento General de Protección de Datos del derecho a la "rectificación oportuna de datos personales inexactos". El argumento del banco incluía el hecho de que su sistema utilizaba EBCDIC, así como que no admitía letras con diacríticos (o minúsculas, para el caso). El tribunal de apelaciones falló a favor del cliente. [24] [25]
pero sus impresoras y perforadoras no estaban preparadas para manejar ASCII, e IBM TENÍA que anunciarlo.
Los 64 caracteres de control... el carácter ASCII DELETE (U+007F)... se asignan respetando las convenciones EBCDIC, tal como se define en IBM Character Data Representation Architecture, CDRA, con una excepción: el emparejamiento de los caracteres de control de avance de línea y nueva línea EBCDIC se intercambia de sus emparejamientos predeterminados de CDRA a los caracteres de control de avance de línea (U+000A) y siguiente línea (U+0085) ISO/IEC 6429
{{citation}}
: CS1 maint: numeric names: authors list (link)Para otros conjuntos C0 o C1, el octeto final F se obtendrá del Registro internacional de conjuntos de caracteres codificados.... Si dicha secuencia de escape aparece dentro de una secuencia de unidad de código conforme a esta Norma Internacional, se deberá rellenar de acuerdo con la Cláusula 11.
{{citation}}
: CS1 maint: numeric names: authors list (link)El mnemónico para el carácter de control de inicio de significado en EBCDIC se ha modificado para incluir un punto (.) al final (SOS.). Esto se ha hecho para distinguirlo del mnemónico SOS utilizado en ISO-8 para el carácter de control de inicio de cadena. El punto no altera la propiedad del control de ninguna manera.