Conversión de datos

Debido a las diferencias en la interpretación de los datos en los diversos entornos de ejecución, es posible que el programa necesite convertir los datos que pasa de un entorno a otro. La conversión de datos se produce durante Java.

El código también utiliza una tabla de conversión en las siguientes situaciones de ejecución:

Utilizará la conversión en tiempo de ejecución, por ejemplo, si el código coloca valores en uno o dos registro redefinidos, cada uno de los cuales hace referencia a la misma área de memoria que un registro que se pasa a otro programa. Supongamos que las características de los datos que se pasan son diferentes, dependiendo del registro redefinido al que se asignan valores. En este caso, los requisitos de la conversión de datos no pueden conocerse durante la generación.

Las secciones que siguen proporcionan los siguientes detalles:

Conversión de datos cuando el invocante es código Java

Las siguientes normas atañen al código Java:
  • Cuando un programa o envoltura Java generado invoca un programa Java generado, la conversión se produce en el llamador, de acuerdo con un conjunto de clases EGL invocadas durante la ejecución. En la mayoría de los casos es suficiente con solicitar que no se realice ninguna conversión, aunque el llamador acceda a una plataforma remota que utilice una página de códigos que sea diferente de la página de códigos utilizada por el invocante. Sin embargo, debe especificar una tabla de conversión en los siguientes casos:
    • El llamador es código Java y se encuentra en una máquina que da soporte a una página de códigos
    • El programa llamado no es Java y se encuentra en una máquina que da soporte al otra página de códigos

    En este caso, el nombre de tabla es un símbolo que indica el tipo de conversión necesaria durante la ejecución.

  • Cuando un programa Java generado accede a una cola de mensajes MQSeries remota, la conversión se produce en el invocante, de acuerdo con un conjunto de clases EGL invocadas durante la ejecución. Si el llamador accede a una plataforma remota que utiliza una página de códigos que es diferente de la página de códigos utilizada por el invocante, especifique una tabla de conversión en el elemento de asociación que hace referencia a la cola de mensajes MQSeries.
La tabla siguiente lista las tablas de conversión a las que puede acceder el código Java generado durante la ejecución. Cada nombre tiene el formato CSOJx:
x
Representa el número de página de códigos de la plataforma invocada. Cada uno de los números se especifica en la publicación Character Data Representation Architecture Reference and Registry, SC09-2190. El registro identifica los juegos de caracteres soportados por las tablas de conversión.
Idioma Plataforma de programa invocado
UNIX Windows 2000/NT/XP z/OS UNIX System Services o iSeries Java
Árabe CSOJ1046 CSOJ1256 CSOJ420
Chino simplificado CSOJ1381 CSOJ1386 CSOJ1388
Chino tradicional CSOJ950 CSOJ950 CSOJ1371
Cirílico CSOJ866 CSOJ1251 CSOJ1025
Danés CSOJ850 CSOJ850 CSOJ277
Europa del Este CSOJ852 CSOJ1250 CSOJ870
Inglés (Reino Unido) CSOJ850 CSOJ1252 CSOJ285
Inglés (Estados Unidos) CSOJ850 CSOJ1252 CSOJ037
Francés CSOJ850 CSOJ1252 CSOJ297
Alemán CSOJ850 CSOJ1252 CSOJ273
Griego CSOJ813 CSOJ1253 CSOJ875
Hebreo CSOJ856 CSOJ1255 CSOJ424
Japonés CSOJ943 CSOJ943 CSOJ1390 (Katakana SBCS), CSOJ1399 (Latino SBCS)
Coreano CSOJ949 CSOJ949 CSOJ1364
Portugués CSOJ850 CSOJ1252 CSOJ037
Español CSOJ850 CSOJ1252 CSOJ284
Sueco CSOJ850 CSOJ1252 CSOJ278
Alemán de Suiza CSOJ850 CSOJ1252 CSOJ500
Turco CSOJ920 CSOJ1254 CSOJ1026

Si no especifica un valor para la tabla de conversión en el componente de opciones de enlace al llamar a un programa desde Java, las tablas de conversión por omisión serán las correspondientes al Inglés de Estados Unidos.

Algoritmo de conversión

La conversión de datos de registros y estructuras se basa en las declaraciones de los elementos de estructura que no tienen subestructuras.

Los datos de tipo CHAR, DBCHAR o MBCHAR se convierten de acuerdo con las tablas de conversión Java (para la conversión que se produce en un invocante generado por EGL).

No se realiza ninguna conversión en los elementos de datos de relleno (elementos de datos sin nombre) ni en los elementos de datos de tipo DECIMAL, PACF, HEX o UNICODE.

En la conversión de EBCDIC a ASCII de datos de tipo MBCHAR, la rutina de conversión suprime los caracteres de desplazamiento a teclado ideográfico o a teclado estándar (SO/SI) e inserta un número de blancos equivalente al final del elemento de datos. En la conversión de ASCII a EBCDIC, la rutina de conversión inserta caracteres SO/SI alrededor de las series de doble byte y trunca el valor en el último carácter válido que cabe en el campo. Si el campo MBCHAR es un registro de longitud variable y el final del registro actual se encuentra en el campo MBCHAR, la longitud del registro se ajusta para reflejar la inserción o supresión de los caracteres SO/SI. La longitud del registro indica dónde finaliza el registro actual.

Para los elementos de datos de tipo BIN, la rutina de conversión invierte el orden de los bytes del elemento si la plataforma llamada o llamadora utiliza formato binario Intel y la otra plataforma no lo hace.

En los elementos de datos de tipo NUM o NUMC, la rutina de conversión convierte todos los bytes excepto el último mediante el algoritmo CHAR. El medio de byte de signo (el primer medio byte del último byte del campo) se convierte de acuerdo con los valores hexadecimales que aparecen en la tabla siguiente.

EBCDIC para el tipo NUM EBCDIC para el tipo NUMC ASCII
F (signo positivo) C 3
D (signo negativo) D 7
Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.