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 la preparación COBOL y durante la ejecución COBOL o Java.
El proceso de preparación de COBOL convierte el contenido de archivos, la información de vías de acceso de archivo y los valores de variables de entorno al transferir los archivos basados en estación de trabajo a un servidor de construcción. Los pasos necesarios para establecer una tabla de conversión de datos en este caso se describen más adelante.
En este caso, puede especificar la tabla de conversión en un elemento callLink que haga referencia al programa llamado. Como alternativa, puede indicar (en ese elemento callLink) que la variable de sistema sysVar.callConversionTable identifique la tabla de conversión durante la ejecución.
En este caso, también puede especificar la tabla de conversión en un elemento callLink que haga referencia al programa llamado. Como alternativa, puede indicar (en ese elemento callLink) que la variable de sistema sysVar.callConversionTable identifique la tabla de conversión durante la ejecución.
En este caso, puede especificar la tabla de conversión en un elemento asynchLink que haga referencia al programa al que se transfiere el control. Como alternativa, puede indicar (en ese elemento asynchLink) que la variable de sistema sysVar.callConversionTable identifique la tabla de conversión durante la ejecución.
En este caso, puede especificar la tabla de conversión en un elemento fileLink que haga referencia al archivo o cola de datos. Como alternativa, puede indicar (en ese elemento fileLink) que la variable de sistema sysVar.callConversionTable identifique la tabla de conversión durante la ejecución.
En estos casos, especifique la tabla de conversión bidireccional en la variable de sistema sysVar.formConversionTable.
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.
Cuando COBOL se genera en una estación de trabajo y se prepara en un servidor de construcción z/OS o iSeries, la conversión se maneja en el servidor de construcción de acuerdo con la especificación realizada por el usuario en las opciones clientCodeSet y serverCodeSet del descriptor de construcción. Cada una de estas opciones del descriptor de construcción debe identificar un conjunto de códigos definido en el servicio de conversión ICONV en z/OS e iSeries, y se utilizarán valores por omisión en ausencia de una especificación.
Consulte también el apartado Texto de idioma bidireccional.
Cuando un programa COBOL generado por EGL accede a un programa o archivo en una región CICS remota que da soporte al juego de caracteres ASCII, se produce una conversión en el llamador de acuerdo con una tabla de conversión. En este caso, la tabla de conversión es un módulo de carga que contiene información acerca de la traducción e páginas de códigos.
La tabla siguiente lista las tablas de conversión suministradas con EGL y a las que puede acceder un programa COBOL generado durante la ejecución. Estas tablas de conversión convierten datos entre el formato EBCDIC y las páginas de códigos ASCII de Windows 2000/NT/XP.
Idioma | Nombre de tabla |
---|---|
Portugués de Brasil | ELACNPTB |
Chino simplificado | ELACNCHS |
Chino tradicional | ELACNCHT |
Inglés en mayúsculas | ELACNENP |
Inglés de Estados Unidos | ELACNENU |
Francés | ELACNFRA |
Alemán | ELACNDEU |
Italiano | ELACNITA |
Japonés Katakana (juego de caracteres de un solo byte) | ELACNJPN |
Coreano | ELACNKOR |
Español | ELACNESP |
Alemán de Suiza | ELACNDES |
En este caso, el nombre de tabla es un símbolo que indica el tipo de conversión necesaria durante la ejecución.
Idioma | Plataforma de programa invocado | |||
---|---|---|---|---|
UNIX | Windows 2000/NT/XP | z/OS UNIX System Services o iSeries Java | z/OSiSeries COBOL | |
Árabe | CSOJ1046 | CSOJ1256 | CSOJ420 | CSOE420 |
Chino simplificado | CSOJ1381 | CSOJ1386 | CSOJ1388 | CSOE1388 |
Chino tradicional | CSOJ950 | CSOJ950 | CSOJ1371 | CSOE1371 |
Cirílico | CSOJ866 | CSOJ1251 | CSOJ1025 | CSOE1025 |
Danés | CSOJ850 | CSOJ850 | CSOJ277 | CSOE277 |
Europa del Este | CSOJ852 | CSOJ1250 | CSOJ870 | CSOE870 |
Inglés (Reino Unido) | CSOJ850 | CSOJ1252 | CSOJ285 | CSOE285 |
Inglés (Estados Unidos) | CSOJ850 | CSOJ1252 | CSOJ037 | CSOE037 |
Francés | CSOJ850 | CSOJ1252 | CSOJ297 | CSOE297 |
Alemán | CSOJ850 | CSOJ1252 | CSOJ273 | CSOE273 |
Griego | CSOJ813 | CSOJ1253 | CSOJ875 | CSOE875 |
Hebreo | CSOJ856 | CSOJ1255 | CSOJ424 | CSOE424 |
Japonés | CSOJ943 | CSOJ943 | CSOJ1390 (Katakana SBCS), CSOJ1399 (Latino SBCS) | CSOE1390 (Katakana SBCS), CSOE1399 (Latino SBCS) |
Coreano | CSOJ1363 | CSOJ1363 | CSOJ1364 | CSOE1364 |
Portugués | CSOJ850 | CSOJ1252 | CSOJ037 | CSOE037 |
Español | CSOJ850 | CSOJ1252 | CSOJ284 | CSOE284 |
Sueco | CSOJ850 | CSOJ1252 | CSOJ278 | CSOE278 |
Alemán de Suiza | CSOJ850 | CSOJ1252 | CSOJ500 | CSOE500 |
Turco | CSOJ920 | CSOJ1254 | CSOJ1026 | CSOE1026 |
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.
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 los conjuntos de códigos ICONV (para la conversión que se produce durante la preparación de COBOL en z/OS) o de acuerdo con las tablas de conversión COBOL o 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 |