EBCDIC - EBCDIC

Familia de codificación 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

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

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

EBCDIC
_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