Articulo de referencia

EBCDIC

El código de intercambio decimal codificado binario extendido [ 1 ] [ 2 ] ( EBCDIC ; [ 1 ] / ˈ ɛ b s ɪ d ɪ k / ) es una codificación de caracteres de ocho bits utilizada princip...

El código de intercambio decimal codificado 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 computadoras centrales y de gama media de IBM . Desciende del código utilizado con tarjetas perforadas y del correspondiente código decimal codificado binario de seis bits utilizado con la mayoría de los periféricos de computadora de IBM de finales de la década de 1950 y principios de la de 1960. [ 3 ] 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 perforada con la codificación Hollerith del conjunto de caracteres EBCDIC de 1964. El contraste en la parte superior se ha mejorado para mostrar los caracteres impresos. Las perforaciones numéricas (0-9) se corresponden directamente con los 4 bits inferiores de EBCDIC, aunque los 4 bits superiores son más complejos.

EBCDIC fue ideado en 1963 y 1964 por IBM y se anunció con el lanzamiento de la línea de computadoras centrales 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 ( BCDIC ) existente , que a su vez fue diseñado como un medio eficiente para codificar las dos zonas y números perforados en tarjetas perforadas en seis bits. La codificación distintiva de 's' y 'S' (usando la posición 2 en lugar de la 1) se mantuvo de las tarjetas perforadas donde era deseable que los agujeros no estuvieran demasiado cerca entre sí para garantizar la integridad de la tarjeta física. [ 4 ]

Aunque IBM fue uno de los principales defensores 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 incluirlos en sus computadoras System/360, por lo que optó por EBCDIC. [ 3 ] El System/360 tuvo un éxito arrollador, junto con clones como RCA Spectra 70 , ICL System 4 y Fujitsu FACOM, y por ende, también lo tuvo EBCDIC.

Todos los sistemas operativos para mainframes de IBM , y su sistema operativo IBM i para ordenadores de gama media , utilizan EBCDIC como 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 entre 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. Los compiladores z/OS modernos para los lenguajes C y C++ en mainframes IBM Z , y los compiladores OS/390 C y C++ anteriores en mainframes IBM System/390 , admiten un entorno de ejecución compatible con POSIX que utiliza ASCII de forma predeterminada. [ 7 ]

No todos los sistemas operativos que se ejecutan en hardware de 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 el IBM Personal Computer y sus sucesores.

Compatibilidad con ASCII

Existen numerosas dificultades para escribir software que funcione tanto en ASCII como en EBCDIC.

  • Los espacios entre las letras hacen que un código sencillo que funcionaba en ASCII falle en EBCDIC. Por ejemplo, imprimiría las letras de la A a la Z si se usara ASCII, pero imprimiría 41 caracteres (incluidos algunos sin asignar) en EBCDIC.for(c='A';c<='Z';++c)putchar(c);
  • La clasificación EBCDIC coloca las letras minúsculas antes que las mayúsculas y las letras antes que los números, exactamente lo contrario que en ASCII.
  • Muchos lenguajes de programación, formatos de archivo y protocolos de red diseñados para ASCII utilizan signos de puntuación disponibles (como el acento circunflejo ^ , la tilde ~ , los corchetes y las llaves { y } ) que no existían en EBCDIC, lo que dificultaba la traducción a sistemas EBCDIC. Se utilizaron soluciones alternativas, como los trigrafos . [ 8 ] Por el contrario, EBCDIC tenía algunos caracteres, como la negación lógica ¬ y el centavo ( ¢ ), que se utilizaban en sistemas IBM y no podían traducirse a ASCII. El carácter de negación lógica se utiliza en el lenguaje de programación PL/I y en otros lenguajes de IBM.
  • El carácter NL (siguiente línea) del EBCDIC se trata mejor como el LF del ASCII, pero, como el EBCDIC también contiene un carácter llamado LF, esto no siempre se hace de forma consistente.
  • Si se utilizaba ASCII de siete bits, había un bit alto "sin usar" en los bytes de 8 bits, y muchos programas almacenaban allí otra información. El software también empaquetaba los siete bits y descartaba el octavo, como por ejemplo, empaquetando cinco caracteres ASCII de siete bits en una palabra de 36 bits . [ 9 ] En el PDP-11 , los bytes con el bit alto activado se trataban como números negativos, comportamiento que se copió a C , lo que causaba problemas inesperados si el bit alto estaba activado. Todo esto dificultaba el cambio de ASCII a EBCDIC de 8 bits (y también dificultaba el cambio a codificaciones ASCII extendidas de 8 bits ).

Diseño de página de código

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

La tabla siguiente muestra el «subconjunto invariante» [ 10 ] de EBCDIC, que son los 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 se encuentra en la página de códigos 37 (una de las variantes de página de códigos de EBCDIC). Las celdas en blanco están llenas 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 invariante funciona solo para idiomas que usan solo el alfabeto latino básico ISO , como el inglés.

Definiciones de controles EBCDIC no ASCII

A continuación se presentan las definiciones de los caracteres de control EBCDIC que no se corresponden con los caracteres de control ASCII o que tienen usos adicionales. Al asignarse a Unicode, estos se asignan principalmente a los puntos de código de caracteres de control C1 según lo especificado por la Arquitectura de Representación de Datos de Caracteres (CDRA) de IBM. [ 11 ] [ 12 ]

Aunque la asignación predeterminada de Nueva Línea (NL) corresponde al carácter de Siguiente Línea ISO/IEC 6429 (NEL, U+0085, cuyo comportamiento también se especifica, pero no se requiere, en el Anexo 14 de Unicode), [ 13 ] 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. [ 14 ] Si bien esto convierte efectivamente a los controles EBCDIC no ASCII en un conjunto de control C1 único, no se encuentran entre los conjuntos de control C1 registrados en el registro ISO-IR , [ 15 ] lo que significa que no tienen una secuencia de designación de conjunto de control asignada (como se especifica en ISO/IEC 2022 y opcionalmente se permite en ISO/IEC 10646 (Unicode)). [ 16 ]

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 exige, sus interpretaciones ISO/IEC 6429 en ausencia de uso para otros fines), [ 17 ] por lo que esta asignación es permisible en Unicode, pero no está especificada por él.

Codifique las páginas con conjuntos de caracteres Latin-1.

Las siguientes páginas de códigos contienen 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 de moneda universal (¤) (o, en el caso de EBCDIC 924, con el conjunto modificado para coincidir con ISO 8859-15 ).

Los distintos países tienen distintas páginas de códigos porque estas páginas se originaron con repertorios de caracteres específicos de cada país y posteriormente se ampliaron para incluir todo el repertorio ISO 8859-1. Esto significa que un mismo carácter ISO 8859-1 puede tener diferentes valores de punto de código en distintas páginas de códigos. Se las conoce como Páginas de Códigos Extendidas por País ( CECP ). [ 21 ]

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 EBCDIC era detestado por los hackers , con lo que se refería a [ 22 ] miembros de una subcultura de programadores entusiastas. Lo que hoy se conoce como dependencia del proveedor , se critica en tono de broma en The Jargon File con la siguiente definición: [ 23 ] [ 24 ]

EBCDIC: /eb´s@·dik/, /eb´see`dik/, /eb´k@·dik/, n. [abreviatura, Extended Binary Coded Decimal Interchange Code] Un supuesto conjunto de caracteres utilizado en los dinosaurios de IBM. Existe en al menos seis versiones mutuamente incompatibles, todas con delicias como secuencias de letras no contiguas y la ausencia de varios caracteres de puntuación ASCII bastante importantes para los lenguajes de programación modernos (exactamente qué caracteres faltan varía según la versión de EBCDIC que se esté considerando). IBM adaptó EBCDIC del código de tarjetas perforadas a principios de la década de 1960 y lo promulgó como una táctica de control de clientes (véase conspiración de conectores ), despreciando el estándar ASCII ya establecido. Hoy en día, IBM afirma ser una empresa de sistemas abiertos , pero la propia descripción de IBM de las variantes de EBCDIC y cómo convertir entre ellas sigue siendo internamente clasificada como alto secreto, quemar antes de leer. Los hackers palidecen ante el solo nombre de EBCDIC y lo consideran una manifestación del mal más puro.

El diseño EBCDIC fue fuente de muchas bromas. Una de ellas, encontrada en el archivo de la fortuna de Unix de 4.3BSD Reno (1990) [ 25 ] , decía:

Profesor: "Entonces el gobierno estadounidense acudió a IBM para que creara un estándar de cifrado , y ellos crearon ... " Estudiante: "¡EBCDIC!"

Se hacen referencias al conjunto de caracteres EBCDIC en la serie de videojuegos Zork de 1979. En la "Sala de máquinas" de Zork II , se utiliza EBCDIC para implicar un lenguaje incomprensible:

Esta es una habitación grande llena de maquinaria pesada de todo tipo, que zumba ruidosamente. La habitación 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 internamente el sistema EBCDIC en 2019. Un cliente insistió en que la ortografía correcta de su apellido incluía una diéresis , que el banco había omitido, y presentó una reclamación amparándose en la garantía del Reglamento General de Protección de Datos (RGPD ) sobre el 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 caracteres con diacríticos (ni minúsculas). El tribunal de apelación falló a favor del cliente. [ 26 ] [ 27 ]

Véase también

Referencias

  1. 1 2 Mackenzie, Charles E. (1980). Conjuntos de caracteres codificados, historia y desarrollo (PDF) . Serie de programación de sistemas (1.ª  ed.). Addison-Wesley Publishing Company, Inc. ISBN 0-201-14460-3LCCN 77-90165 . Consultado el 6 de abril de 2022 . 
  2. Donovan, John J. (1972). Programación de sistemas . McGraw-Hill. pág. 65. ISBN  0-07-085175-1.
  3. 1 2 Bemer, Bob . "EBCDIC y el P-Bit (El mayor error informático de la historia) - Viñetas de la historia de la informática" . Archivado del original el 13 de mayo de 2018. Recuperado el 2 de julio de 2013. ... pero sus impresoras y perforadoras no estaban preparadas para manejar ASCII, e IBM simplemente TENÍA que anunciarlo.
  4. "Códigos de tarjetas perforadas de Doug Jones" . homepage.cs.uiowa.edu . Consultado el 14 de enero de 2023 .
  5. "X3.4-1963" . 1963. pág. 4. (Nota: IBM contaba con cuatro empleados en el subcomité final de ASA X3.2, compuesto por 21 miembros).
  6. IBMnt (2008). "IBM confirma el uso de EBCDIC en sus mainframes como práctica predeterminada" . Recuperado el 16 de junio de 2008 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  7. "ASCII mejorado" . Planificación de servicios del sistema z/OS UNIX . 28/08/2024.
  8. "Fundamentos del estándar internacional – Lenguajes de programación – C" (PDF) . Revisión 5.10. Abril de 2003. § MSE.4: Soporte para la norma invariante ISO/IEC 646. Archivado (PDF) del original el 6 de junio de 2016. Consultado el 24 de noviembre de 2022 .
  9. Manual de referencia del PDP-10, Libro 2: Ensamblaje del programa fuente (PDF) . Digital Equipment Corporation . pág. 221. 
  10. "Conjunto de caracteres invariante" . Centro de conocimiento de IBM . 14 de agosto de 2018.
  11. 1 2 3 Umamaheswaran, VS (1999-11-08). "3.3 Paso 2: Conversión de bytes" . UTF-EBCDIC . Consorcio Unicode . Informe técnico Unicode n.° 16. Los 64 caracteres de control...el carácter ASCII DELETE (U+007F)...se asignan respetando las convenciones EBCDIC, tal como se definen en la arquitectura de representación de datos de caracteres de IBM, CDRA, con una excepción: el emparejamiento de los caracteres de control de salto de línea y nueva línea de EBCDIC se intercambia con respecto a sus emparejamientos predeterminados de CDRA por los caracteres de control de salto de línea (U+000A) y siguiente línea (U+0085) de ISO/IEC 6429.
  12. 1 2 Steele, Shawn (1996-04-24). "cp037_IBMUSCanada a tabla Unicode" . Microsoft / Consorcio Unicode .
  13. Heninger, Andy (15 de febrero de 2019). "NL: Siguiente línea (A) (No personalizable)" . Algoritmo de salto de línea Unicode . Revisión 43. Consorcio Unicode . Anexo estándar Unicode n.º 14.
  14. ISO/TC 46 (1986-02-01). Funciones de control adicionales para uso bibliográfico según la norma internacional ISO 6630 (PDF) . ITSCJ/ IPSJ . ISO-IR -124.{{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  15. Registro internacional ISO/IEC de conjuntos de caracteres codificados para usar con secuencias de escape (PDF) , ITSCJ/ IPSJ , ISO-IR, archivado del original (PDF) el 12/05/2023 , consultado el 13/05/2023.
  16. ISO/IEC JTC 1/SC 2 (2017). "12.4: Identificación del conjunto de funciones de control". Tecnología de la información — Conjunto de caracteres codificados universales (UCS) (5.ª ed.). ISO . págs. 19–20 . ISO/IEC 10646. Para otros conjuntos C0 o C1, el octeto final F se obtendrá del Registro Internacional de Conjuntos de Caracteres Codificados... Si aparece una secuencia de escape de este tipo dentro de una secuencia de unidad de código que cumpla con esta Norma Internacional, se rellenará de acuerdo con la Cláusula 11.  {{citation}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  17. Consorcio Unicode (2019). «23.1: Códigos de control». El estándar Unicode (PDF) (ed. 12.0.0 ). págs. 868–870 . ISBN   978-1-936213-22-1.
  18. 1 2 3 4 "Apéndice G-1. Definiciones de caracteres de control EBCDIC" . Arquitectura de representación de datos de caracteres . IBM Corporation . Archivado del original el 11 de septiembre de 2018.
  19. 1 2 3 4 5 6 7 8 9 10 GOST (1993). "Информационная технология. Наборы 8-битных кодированных символов. Двоичный код обработки информации" [ Tecnología de la información. Juegos de caracteres codificados de 8 bits. Código binario para procesamiento de información ] (en ruso). GOST 19768-93.
  20. IBM . "Arquitectura de representación de datos de caracteres (CDRA)" . IBM . pág. 327. El mnemónico para el carácter de control de inicio de significancia 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. 
  21. "iso8859.txt" . Proyecto Kermit / Universidad de Columbia .
  22. Raymond, Eric S. (1997). "El nuevo diccionario del hacker" . pág. 310. 
  23. "jarg1-81-MM-DD.txt" . Página principal de Eric S. Raymond . 1981. Consultado el 22 de octubre de 2025 .
  24. "EBCDIC" . Archivo de jerga . Archivado del original el 13 de mayo de 2018. Consultado el 13 de mayo de 2018 .
  25. 4.3BSD-Reno/share/games/fortune/fortunes
  26. "Tribunal de Apelación de Bruselas - 2019/AR/1006 - GDPRhub" .
  27. Eden, Terence (25-10-2021). "EBCDIC es incompatible con el RGPD – Blog de Terence Eden" .
  • Relacionado con IBM:
    • Arquitectura de Representación de Datos de Caracteres (CDRA) de IBM en Wayback Machine (archivada el 13 de mayo de 2018) . Contiene información oficial de IBM sobre páginas de códigos y conjuntos de caracteres.
    • La guía de referencia de páginas de códigos de host de IBM muestra diagramas de códigos para varias páginas EBCDIC de IBM de un solo byte.
    • ICU Converter Explorer contiene más información sobre EBCDIC derivada de CDRA de IBM, incluido DBCS EBCDIC (conjunto de caracteres de doble byte EBCDIC).
    • "Páginas de código" . IBM .de "IBM y la globalización" . IBM .
  • El manual de XHCS V2.0 muestra diagramas de códigos para varias páginas EBCDIC de un solo byte de Siemens / Fujitsu (a diferencia de IBM) utilizadas en el BS2000 .
  • Lista de caracteres EBCDIC, incluyendo valores decimales y hexadecimales, nombre simbólico y carácter/función en Wayback Machine (archivada el 3 de marzo de 2016).
  • Páginas con código EBCDIC y conjunto de caracteres Latin-1 (JavaScript) en Wayback Machine (archivadas el 18/04/2018).
  • Todas las páginas de códigos EBCDIC y los códigos de escape gráficos 3270 en Wayback Machine (archivado el 27 de agosto de 2016).
  • Tablas de asignación de conjuntos de caracteres de la UCI Contiene tablas de asignación Unicode legibles por computadora para EBCDIC y muchos otros conjuntos de caracteres.