EBCDIC - EBCDIC
Clasificación | Codificaciones latinas básicas de 8 bits (no ASCII) |
---|---|
Precedido por | BCD |
Extended Binary coded decimal Intercambio Código ( EBCDIC ; / ɛ b s ɪ d ɪ k / ) es una de ocho bits de codificación de caracteres utilizado principalmente en IBM unidad central y IBM ordenador de gama media sistemas operativos. Descendía del código utilizado con 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. Se apoya en varias plataformas no son de IBM, como Fujitsu-Siemens ' BS2000 / OSD , OS-IV, MSP, y MSP-EX, la serie SDS Sigma , Unisys VS / 9 , Unisys MCP y ICL VME .
Historia
EBCDIC fue diseñado 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 codificado en binario (BCD) existente, o BCDIC , que a su vez se diseñó como un medio eficiente de codificar las dos zonas y las perforaciones numéricas en las tarjetas perforadas en seis bits. La codificación distinta de 's' y 'S' (usando la posición 2 en lugar de 1) se mantuvo en las tarjetas perforadas donde era deseable no tener perforaciones demasiado cerca una de la otra para garantizar la integridad de la tarjeta física.
Si bien IBM fue uno de los principales proponentes del comité de estandarización ASCII, 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. El System / 360 tuvo un gran éxito, junto con clones como RCA Spectra 70 , ICL System 4 y Fujitsu FACOM, y también lo hizo EBCDIC.
Todos los sistemas operativos y periféricos de mainframe y rango medio de IBM utilizan EBCDIC como su codificación inherente (con tolerancia para ASCII, por ejemplo, ISPF en z / OS puede examinar y editar archivos codificados tanto EBCDIC como ASCII). El software y muchos periféricos de hardware pueden traducirse desde y hacia 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 el consorcio Unicode, diseñado para permitir una fácil actualización del software EBCDIC para manejar Unicode, pero no está destinado a ser utilizado en entornos de intercambio abiertos. 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 soporte limitado para 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.
- Los espacios entre letras hicieron que el código simple que funcionaba en ASCII fallara en EBCDIC. Por ejemplo , imprimiría el alfabeto de la A a la Z si se usa ASCII, pero imprimiría 41 caracteres (incluidos algunos no asignados) en EBCDIC. Arreglar esto requirió complicar el código con llamadas a funciones, lo que fue muy resistido por los programadores.
for (c = 'A'; c <= 'Z'; ++c) putchar(c);
- Al ordenar EBCDIC, coloque letras minúsculas antes de mayúsculas y letras antes de números, exactamente lo contrario de ASCII.
- Los lenguajes de programación, los formatos de archivo y los protocolos de red diseñados para ASCII hicieron uso rápidamente de los signos de puntuación disponibles (como las llaves { y } ) que no existían en EBCDIC, lo que dificultaba la traducción a sistemas EBCDIC. Por el contrario, EBCDIC tenía algunos caracteres como ¢ ( centavo de EE . UU. ) Que se usaron en los sistemas IBM y no se pudieron traducir a ASCII.
- La convención de nueva línea más común utilizada con EBCDIC es usar un código NEL (NEXT LINE) entre líneas. Los convertidores a otras codificaciones a menudo reemplazan NEL con LF o CR / LF , incluso si hay un NEL en la codificación de destino. Esto hace que LF y NEL se traduzcan al mismo carácter y no se puedan distinguir.
- Si se utilizó ASCII de siete bits, había un bit alto "no utilizado" en bytes de 8 bits, y muchas piezas de software almacenaron otra información allí. El software también empaquetaría los siete bits y descartaría el octavo, como empaquetar cinco caracteres ASCII de siete bits en una palabra de 36 bits . En el PDP-11, los bytes con el bit alto establecido se trataron como números negativos, comportamiento que se copió a C , causando problemas inesperados si se estableció el bit alto. Todo esto dificultaba el cambio de ASCII al EBCDIC de 8 bits (y también dificultaba el cambio a codificaciones ASCII extendidas de 8 bits ).
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 diseñadas para su uso en diferentes partes del mundo, incluidas páginas de códigos para escrituras no latinas como chino, japonés (p. ej., 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 invariante" 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. También muestra (en gris) los signos de puntuación ASCII y EBCDIC que faltan, ubicados donde están 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 de caracteres específicos de la región en las variantes, pero los caracteres en gris a menudo también se intercambian o reemplazan. En cada celda, la primera fila es una abreviatura de un código de control o el carácter en sí; y la segunda fila es el código Unicode (en blanco para controles que no existen en Unicode).
_0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _D | _MI | _F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ |
NUL 0000 |
SOH 0001 |
STX 0002 |
ETX 0003 |
SEL |
HT 0009 |
RNL |
DEL 007F |
GE |
SPS |
RPT |
VT 000B |
FF 000C |
CR 000D |
SO 000E |
SI 000F |
1_ |
DLE 0010 |
DC1 0011 |
DC2 0012 |
DC3 0013 |
res / enp |
NL 0085 |
BS 0008 |
POC |
PUEDE 0018 |
EM 0019 |
UBS |
CU1 |
IFS 001C |
IGS 001D |
IRS 001E |
ius / itb 001F |
2_ |
DS |
llamada de socorro |
FS |
WUS |
byp / inp |
LF 000A |
ETB 0017 |
ESC 001B |
SA |
SFE |
sm / sw |
CSP |
MFA |
ENQ 0005 |
ACK 0006 |
BEL 0007 |
3_ |
SYN 0016 |
IR |
PÁGINAS |
TRN |
Oficina nacional de normas |
EOT 0004 |
SBS |
ESO |
RFF |
CU3 |
DC4 0014 |
NAK 0015 |
SUB 001A |
|||
4_ |
SP 0020 |
¢ 00A2 |
. 002E |
< 003C |
( 0028 |
+ 002B |
| 007C |
|||||||||
5_ |
& 0026 |
! 0021 |
$ 0024 |
* 002A |
) 0029 |
; 003B |
¬ 00AC |
|||||||||
6_ |
- 002D |
/ 002F |
¦ 00A6 |
, 002C |
% 0025 |
_ 005F |
> 003E |
? 003F |
||||||||
7_ |
` 0060 |
: 003A |
# 0023 |
@ 0040 |
« 0027 |
= 003D |
" 0022 |
|||||||||
8_ |
un 0061 |
b 0062 |
c 0063 |
d 0064 |
e 0065 |
f 0066 |
g 0067 |
h 0068 |
yo 0069 |
± 00B1 |
||||||
9_ |
j 006A |
k 006B |
l 006C |
m 006D |
n 006E |
o 006F |
p 0070 |
q 0071 |
r 0072 |
|||||||
A_ |
~ 007E |
s 0073 |
t 0074 |
u 0075 |
v 0076 |
w 0077 |
x 0078 |
y 0079 |
z 007A |
|||||||
B_ |
^ 005E |
[ 005B |
] 005D |
|||||||||||||
C_ |
{ 007B |
A 0041 |
B 0042 |
C 0043 |
D 0044 |
E 0045 |
F 0046 |
G 0047 |
H 0048 |
Yo 0049 |
||||||
D_ |
} 007D |
J 004A |
K 004B |
L 004C |
M 004D |
N 004E |
O 004F |
P 0050 |
Q 0051 |
R 0052 |
||||||
MI_ |
\ 005C |
S 0053 |
T 0054 |
U 0055 |
V 0056 |
W 0057 |
X 0058 |
Y 0059 |
Z 005A |
|||||||
F_ |
0 0030 |
1 0031 |
2 0032 |
3 0033 |
4 0034 |
5 0035 |
6 0036 |
7 0037 |
8 0038 |
9 0039 |
EO |
Carta Número Puntuación Símbolo Otro Indefinido
Definiciones de controles EBCDIC no ASCII
A continuación se encuentran 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 los 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 el mapeo predeterminado de Nueva línea (NL) corresponde al carácter ISO / IEC 6429 Next Line (NEL) (cuyo comportamiento también se especifica, pero no es obligatorio, en el Anexo 14 de Unicode), la mayoría de estos controles mapeados C1 coinciden ni los del conjunto ISO / IEC 6429 C1 , ni los de otros conjuntos de control C1 registrados como ISO 6630 . Aunque esto efectivamente convierte 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 , 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 (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 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 él.
Mnemotécnico | EBCDIC | Emparejamiento CDRA | Nombre | Descripción |
---|---|---|---|---|
SEL | 04 | 009C | Seleccione | Carácter de control de dispositivo que toma un parámetro de un solo byte. |
RNL | 06 | 0086 | Nueva línea requerida | Restablecimiento del salto de línea en el modo de tabulación de sangría |
GE | 08 | 0097 | Escape gráfico | Cambio sin bloqueo que cambia la interpretación del siguiente carácter (consulte, por ejemplo , la página de códigos 310 ). Compare el SS2 (008E) de ISO / IEC 6429 . |
SPS | 09 | 008D | Sobrescrito | Empiece el superíndice o deshaga el subíndice. Compare el PLU de ISO / IEC 6429 (008C). |
RPT | 0A | 008E | Repetir | Cambiar a un modo de operación repitiendo un búfer de impresión |
RES / ENP | 14 | 009D | Restaurar, habilitar presentación | Reanudar salida (después de BYP / INP ) |
NL | 15 | 0085 (000A) | Nueva línea | Salto de línea. El mapeo predeterminado (0085) coincide con el NEL de ISO / IEC 6429 . Las asignaciones a veces se intercambian con el salto de línea (EBCDIC 0x25) de acuerdo con la convención de salto de línea de UNIX. |
POC | 17 | 0087 | Comunicación del operador del programa | Seguido de dos operadores de un byte que identifican la función específica, por ejemplo, una luz o una tecla de función. Contraste con CSI (009B), OSC (009D) y APC (009F) de ISO / IEC 6429 . |
UBS | 1A | 0092 | Retroceso de la unidad | Un retroceso fraccional. |
CU1 | 1B | 008F | Uso del cliente uno | No utilizado por IBM; para uso del cliente. |
IUS / ITB | 1F | 001F | Separador de unidad de intercambio, bloque de transmisión intermedio | Se usa como separador de información para terminar un bloque llamado "unidad" (como en ASCII ; ver también IR ), o se usa como código de control de transmisión para delimitar el final de un bloque intermedio. |
DS | 20 | 0080 | Selección de dígitos | Utilizado por la instrucción de edición de CPU S / 360 (ED) |
llamada de socorro | 21 | 0081 | Inicio de importancia | Utilizado por la instrucción de edición de CPU S / 360 (ED). (Nota: diferente del SOS de ISO / IEC 6429 ). |
FS | 22 | 0082 | Separador de campo | Utilizado por la instrucción de edición de CPU S / 360 (ED). (Nota: (Intercambio) Separador de archivos , como se abrevia FS en ASCII, está en 0x1C y se abrevia IFS.) |
WUS | 23 | 0083 | Subrayado de palabra | Subraya la palabra inmediatamente anterior. Contraste con el SGR de ISO / IEC 6429 . |
BYP / INP | 24 | 0084 | Omitir, inhibir presentación | Desactiva 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 la siguiente RES / ENP . |
SA | 28 | 0088 | Establecer atributo | Marca el comienzo de una secuencia de control específica del dispositivo de longitud fija. En desuso en favor de la CSP . |
SFE | 29 | 0089 | Campo de inicio extendido | Marca el comienzo de una secuencia de control específica de dispositivo de longitud variable. En desuso en favor de la CSP . |
SM / SW | 2A | 008A | Modo de ajuste, interruptor | Control específico del dispositivo que establece un modo de funcionamiento, como un interruptor de búfer. |
CSP | 2B | 008B | Prefijo de secuencia de control | Marca el comienzo de una secuencia de control específica de dispositivo de longitud variable. Seguido de un byte de clase que especifica una categoría de función de control, un byte de recuento que proporciona la longitud de la secuencia (incluidos los bytes de recuento 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) y CSI (009B) de ISO / IEC 6429 . |
MFA | 2C | 008C | Modificar atributo de campo | Marca el comienzo de una secuencia de control específica de dispositivo de longitud variable. En desuso en favor de la CSP . |
30 | 0090 | (reservado) | Reservado para uso futuro por IBM | |
31 | 0091 | (reservado) | Reservado para uso futuro por IBM | |
IR | 33 | 0093 | Retorno del índice | Vaya al principio de la siguiente línea (consulte también NL ) o finalice una unidad de información (consulte también IUS / ITB ). |
PÁGINAS | 34 | 0094 | Posición de presentación | Seguido de dos parámetros de un byte (en primer lugar, función, en segundo lugar, número de columna o línea) para establecer la posición actual. Contraste con CUP y HVP de ISO / IEC 6429 . |
TRN | 35 | 0095 | Transparente | Seguido de un parámetro de byte que indica el número de bytes de datos transparentes que siguen. |
Oficina nacional de normas | 36 | 0096 | Retroceso numérico | Retrocede el ancho de un dígito. |
SBS | 38 | 0098 | Subíndice | Empiece el subíndice o deshaga el superíndice. Compare el PLD de ISO / IEC 6429 (008B). |
ESO | 39 | 0099 | Tabulación de sangría | Sangra la línea actual y todas las siguientes, hasta que se encuentre RNL o RFF . |
RFF | 3A | 009A | Feed de formulario requerido | Salto de página que restablece el modo de tabulación de sangría . |
CU3 | 3B | 009B | Uso dos por parte del cliente | No utilizado por IBM; para uso del cliente. |
3E | 009E | (reservado) | Reservado para uso futuro por IBM | |
EO | FF | 009F | Ocho unos | Todos los caracteres utilizados como relleno. |
Páginas de códigos con juegos 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 da el número de página de códigos original. La segunda columna da el número de la página de códigos actualizada con el símbolo del euro (€) reemplazando el signo de moneda universal (¤) (o en el caso de EBCDIC 924, con el conjunto cambiado para que coincida con ISO 8859-15 )
CCSID | Actualización del euro |
Países |
---|---|---|
037 | 1140 | Australia, Brasil, Canadá, Nueva Zelanda, Portugal, Sudáfrica, EE. UU. |
273 | 1141 | Austria, Alemania |
277 | 1142 | Dinamarca, Noruega |
278 | 1143 | Finlandia, Suecia |
280 | 1144 | Italia |
284 | 1145 | América Latina, España |
285 | 1146 | Irlanda, Reino Unido |
297 | 1147 | Francia |
500 | 1148 | Internacional |
871 | 1149 | Islandia |
1047 | 924 | Sistemas abiertos ( compilador MVS C ) |
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, con lo que se refería a los 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. [abreviatura, código de intercambio decimal codificado en binario extendido] Un supuesto conjunto de caracteres utilizado en los dinosaurios de IBM. Existe en al menos seis versiones mutuamente incompatibles, todas 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 (exactamente qué caracteres están ausentes varía según la versión de EBCDIC que esté mirando a). IBM adaptó EBCDIC del código de tarjeta perforado a principios de la década de 1960 y lo promulgó como una táctica de control del cliente (ver conspiración de conectores ), rechazando 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 todavía se clasifica internamente como alto secreto, quemar antes de leer. Los piratas informáticos palidecen ante el mismo nombre de EBCDIC y lo consideran una manifestación del mal más puro.
- El archivo de jerga 4.4.7
El diseño EBCDIC también fue fuente de muchas bromas. Una de esas bromas fue:
Profesor: "Así que el gobierno estadounidense acudió a IBM para crear un estándar de cifrado , y se les ocurrió
:" Estudiante: "¡EBCDIC!"
Las referencias al juego de caracteres EBCDIC se hacen en la clásica serie de juegos de aventuras de Infocom, 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 variada, zumbando 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 ...
Ver también
Referencias
enlaces externos
- Arquitectura de representación de datos de caracteres (CDRA) de IBM en Wayback Machine (archivado el 13 de mayo de 2018). Contiene información oficial de IBM sobre páginas de códigos y juegos de caracteres.
- Referencia de página de código de host de IBM, muestra gráficos de código para varias páginas EBCDIC de un solo byte.
- "Páginas de códigos" .de "Globalización de IBM i" .
- ICU Converter Explorer Contiene más información sobre EBCDIC derivada del CDRA de IBM, incluido DBCS EBCDIC (juego de caracteres de doble byte EBCDIC)
- Tablas de mapeo de conjuntos de caracteres ICU Contiene tablas de mapeo Unicode legibles por computadora para EBCDIC y muchos otros juegos de caracteres
- Lista de caracteres EBCDIC , incluidos valores decimales y hexadecimales, nombre simbólico y carácter / función
- Páginas de código EBCDIC con conjunto de caracteres Latin-1 (JavaScript)
- Todas las páginas de códigos EBCDIC y los códigos de escape de gráficos 3270 en Wayback Machine (archivado el 27 de agosto de 2016)