Importación de COBOL: características soportadas

La tabla siguiente muestra cómo influyen las definiciones COBOL en los valores de esquema XML en el modelo de mensaje.

Tenga en cuenta que algunos tipos xsd tienen '-' después del tipo. Esto indica que se trata de un tipo simple anónimo basado en este tipo. Para las series de caracteres, la finalidad del tipo anónimo es añadir una limitación de longitud; para los tipos numéricos, la finalidad es añadir una limitación de valor mínimo o máximo.
Cláusula COBOL Tipo de datos de esquema XML Notas
PIC A xsd:string -  
PIC G xsd:string -

Para procesar esto, establezca el nombre del entorno local de tiempo de compilación en ja_JP en Ventanas - Preferencias - Importador - COBOL.

PIC N xsd:string -

Para procesar esto, establezca el nombre del entorno local de tiempo de compilación en ja_JP en Ventanas - Preferencias - Importador - COBOL.

PIC X xsd:string -  
PIC 9(n) n = 1-4 xsd:short - DISPLAY, COMP o COMP-3
PIC 9(n) n = 5-9 xsd:int - DISPLAY, COMP o COMP-3
PIC 9(n) n = 10-18 xsd:long - DISPLAY, COMP o COMP-3
PIC 9(n) n = 19-31 xsd:integer - DISPLAY, COMP o COMP-3
PIC 9(n)V9(m) xsd:decimal - DISPLAY, COMP o COMP-3 cualquier valor de coma decimal virtual
COMP-1 xsd:float -  
COMP-2 xsd:double -  
Cualquier serie de caracteres editada xsd:string -  
Cualquier número editado xsd:string - For example, PIC Z
VALUE Todos Las cláusulas VALUE de nivel distinto al 88 se pueden importar como valores por omisión de esquema (opción en asistente de importación).

La tabla siguiente muestra cómo influyen las definiciones COBOL en las características físicas CWF de los elementos que se generan en el modelo de mensaje.

Palabra clave COBOL Tipo físico CWF Características de longitud CWF Otras características CWF
PIC X(n)

PIC A(n)

Serie de caracteres de longitud fija Longitud = n

Unidades de longitud = Bytes

Justificación = Justificado por la izquierda

Caracteres de relleno = SPACE

PIC G(n)

PIC N(n)

Serie de caracteres de longitud fija Longitud = n

Unidades de longitud = Caracteres

Justificación = Justificado por la izquierda

Caracteres de relleno = SPACE

PIC 9(n) DISPLAY n=1-31 Decimal externo Longitud = n

Unidades de longitud = Bytes

Justificación = Justificado por la derecha

Carácter de relleno = '0'

Con signo = No marcado

Orientación del signo = Final

PIC 9(n) COMP, COMP-4, COMP-5 o BINARY Entero Longitud = 2, 4 o 8 basado en n

Unidades de longitud = Bytes

Con signo = No marcado

Orientación del signo = Espacio en blanco

PIC 9(n) COMP-3 n=1-18 Decimal empaquetado Longitud = CEILING((n+1)/2)

Unidades de longitud = Bytes

Con signo = No marcado

Orientación del signo = Espacio en blanco

PIC S9(n) DISPLAY n=1-31 Decimal externo Longitud = n

Unidades de longitud = Bytes

Con signo = Marcado

Orientación del signo = Final

*Vea la nota 1

PIC S9(n) COMP o COMP-3

n=1-18

Entero o Decimal empaquetado Longitud = consulte las definiciones de COMP y COMP-3 más arriba

Unidades de longitud = Bytes

Con signo = Marcado

Orientación del signo = Espacio en blanco

PIC 9(m)V9(n) DISPLAY n=1-31 Decimal externo Longitud = n+m

Unidades de longitud = Bytes

Con signo = No marcado

Orientación del signo = Final

Coma decimal virtual = n

PIC 9(m)V9(n) COMP o COMP-3 Entero o Decimal empaquetado Longitud = CEILING((n+m+1)/2) para COMP-3

Longitud = 2, 4 o 8 para COMP

Unidades de longitud = Bytes

Con signo = No marcado

Orientación del signo = Espacio en blanco

Coma decimal virtual = n

COMP-1 Flotante Longitud = 4

Unidades de longitud = Bytes

Con signo = Marcado

Orientación del signo = Espacio en blanco

COMP-2 Flotante Longitud = 8

Unidades de longitud = Bytes

Con signo = Marcado

Orientación del signo = Espacio en blanco

SYNC Flotante, Entero o Decimal empaquetado   Cuenta de saltos de cabecera como corresponda

Cuenta de saltos de cola como corresponda

Alineación de bytes como corresponda

*Vea la nota 2

Notas:
  1. La Orientación del signo puede tomar uno de los valores siguientes, basándose en las palabras clave SEPARATE, LEADING o TRAILING de la definición COBOL:
    • Inicial
    • Inicial separado
    • Final
    • Final separado
  2. La palabra clave SYNC hace que el campo se alinee en un límite de 1, 2, 4 u 8 bytes. Esto podría hacer que se añadan 'bytes sueltos' antes o después de un campo. La Cuenta de saltos de cabecera es el número de bytes de este tipo que se añaden antes de un campo; la Cuenta de saltos de cola es el número de estos bytes que se añade después de un campo.

    El importador calcula la Cuenta de saltos de cabecera y la Cuenta de saltos de cola para cada uno de los elementos importados, sin tener en cuenta la cláusula SYNC. Cuando la cláusula SYNC esté presente, tienen valores distintos de cero.

    Cuando hay un elemento de repetición, la Cuenta de saltos de cabecera y la Cuenta de saltos de cola se utilizan para la primera aparición del elemento de repetición; para las apariciones subsiguientes, sólo se utiliza la Cuenta de saltos de cola.

    Vea el material de consulta de COBOL para encontrar información detallada de los campos que necesitan alineación de bytes.

  3. El importador COBOL necesita que todos los archivos que se están importando sean sintácticamente correctos. Si no es así, los resultados pueden ser imprevisibles.
  4. Los tipos de datos COBOL que incluyen POINTER, COMP-X, INDEX y PROCEDURE-POINTER no se soportan.
  5. El COBOL que contenga la palabra clave NATIVE producirá un error y no realizará la importación.
  6. Los elementos de datos COBOL de nivel 66 y nivel 77 no se importan.
  7. Los valores binarios hexadecimales no se pueden atribuir a literales no numéricos. No pueden residir en las secciones de enlace (LINKAGE SECTION) importadas por el importador COBOL. Pueden residir en cualquier otro lugar del archivo COBOL. De forma alternativa, puede convertir el valor hexadecimal en una serie de caracteres (char) para PIC X o en un número decimal para PIC 9.
  8. Cuando los nombres de elemento están en conflicto con las palabras clave de lenguaje Java, se modifican añadiendo al nombre de elemento un carácter de subrayado individual como prefijo.
  9. No se soportan las extensiones orientadas a objetos en COBOL 85. Por ejemplo, OBJECT-REFERENCE no se soporta.
  10. Cláusula COBOL OCCURS DEPENDING ON. Las propiedades CWF Alineación de bytes, Cuenta de saltos de cabecera y Cuenta de saltos de cola de los elementos dentro de una estructura de este tipo no se configuran correctamente. Deberá corregirlos utilizando el editor de mensajes.
  11. Cuando el archivo de origen COBOL importado contiene QUOTE o QUOTES en la cláusula de valor de una serie de imagen, el comportamiento por omisión consiste en rellenar los datos con comillas dobles a menos que se establezca la opción de compilación COBOL QUOTE en SINGLE en la página Opciones de importación del asistente para el importador COBOL.

Números decimales externos con signo

El componente Formato físico personalizado (CWF) de WebSphere Message Broker proporciona soporte para modelar datos numéricos utilizando el formato de datos Decimal externo (también conocido como Decimal con zona). En este formato, se almacena internamente un número como datos de tipo carácter decimal. Por ejemplo, en un sistema que utiliza el código EBCDIC, el número 1234 almacenado en un campo decimal externo de 4 bytes se almacenará como la serie de caracteres "1234" y la representación hexadecimal interna real será F1F2F3F4.

Con números decimales externos con signo, el signo se puede incorporar en los datos reales modificando la primera mitad del primer o del último byte (en función de si se está utilizando una representación de signo inicial o de signo final). Normalmente, se utiliza '0xC' para representar un número positivo, se utiliza '0xD' para representar un número negativo y se utiliza '0xF' para representar un número sin signo.

Nota: En general, se puede utilizar '0xA', '0xC', '0xE' o '0xF' para indicar un valor positivo y '0xB' o '0xD' para indicar un valor negativo. La representación real preferida depende de la arquitectura de hardware real.

En las máquinas ASCII, existen varios mecanismos para la representación interna de los datos decimales externos. Una representación ('Signo ASCII') empleada por las máquinas pSeries de IBM utiliza utiliza los códigos ASCII normales ("0" [hex 30] a "9" [hex 39]) para el primer/último dígito de los números sin signo y positivos, y los caracteres "p" [hex 70] a "y" [hex 79] para los números negativos.

Se utiliza un método alternativo (Signo EBCDIC personalizado) en algunas otras máquinas basadas en ASCII. Éste utiliza los mismos caracteres que una máquina basada en EBCDIC, aunque la representación hexadecimal interna real para ellos es diferente. Si se utiliza esta técnica, la serie de caracteres para las plataformas EBCDIC y ASCII es idéntica. Potencialmente puede recibir un mensaje de una plataforma EBCDIC (creado desde un libro de copias COBOL que contenga entradas tales como PIC XXX y PIC S999) y convertir el mensaje entero a ASCII o a la inversa. La serie de caracteres que representa el campo decimal externo en el mensaje (después de la conversión ASCII/EBCDIC) se correlaciona con el punto de código que representa el signo correcto para el decimal. Deberá tener en cuenta que existe una limitación con este método. Los caracteres de llave son variables (es decir, tienen diferentes puntos de código en páginas de códigos EBCDIC diferentes). Este mecanismo sólo funciona para las páginas de códigos EBCDIC donde los caracteres de llave '{' y '}' (que se utilizan para representar 0 con signo) tienen exactamente los puntos de código x'C0' y x'D0'. Por ejemplo, funciona para la página de códigos 500, pero no para la página de códigos 871 donde las llaves tienen los puntos de código X'8E' y X'9C.

En un entorno ASCII (determinado por la propiedad CCSID en la ejecución), el valor por omisión para la entrada y la salida es la representación 'Signo ASCII'. Es posible especificar la representación aplicable en la capa física CWF para los atributos locales y los elementos locales de los tipos decimal, flotante y entero.

Nota: esto sólo es apropiado para los elementos o atributos que tienen una representación física decimal externa y que tienen un signo de ('Inicial' o 'Final') incorporado (determinado por la propiedad 'Orientación del signo').

La tabla siguiente muestra la representación interna (carácter y valor hexadecimal real) del primer y del último dígito para los números decimales externos con un signo inicial o final incluido (incorporado) respectivamente (nota: la tabla no especifica la representación para valores sin signo que sean 0x30-0x39 para ASCII y 0xF0-0xF9 para EBCDIC).

  Valores con signo positivo   Valores con signo negativo
Entorno ASCII Entorno EBCDIC Entorno ASCII Entorno EBCDIC
Dígito Signo ASCII Signo EBCDIC personalizado   Signo ASCII Signo EBCDIC personalizado  
0 0(30) {(7B) {(C0) p(70) }(7D) }(D0)
1 1(31) A(41) A(C1) q(71) J(4A) J(D1)
2 2(32) B(42) B(C2) r(72) K(4B) K(D2)
3 3(33) C(43) C(C3) s(73) L(4C) L(D3)
4 4(34) D(44) D(C4) t(74) M(4D) M(D4)
5 5(35) E(45) E(C5) u(75) N(4E) N(D5)
6 6(36) F(46) F(C6) v(76) O(4F) O(D6)
7 7(37) G(47) G(C7) w(77) P(50) P(D7)
8 8(38) H(48) H(C8) x(78) Q(51) Q(D8)
9 9(39) I(49) I(C9) y(79) R(52) R(D9)

La tabla mostrada a continuación proporciona algunos ejemplos para un rango de números simples que serán representativos de lo que se puede transmitir o recibir utilizando estas propuestas.

  Signo inicial Signo final
  Entorno ASCII Entorno EBCDIC Entorno ASCII Entorno EBCDIC
Valor decimal Signo ASCII Signo EBCDIC personalizado   Signo ASCII Signo EBCDIC personalizado  
1234

31 32 33 34
"1234"

31 32 33 34
"1234"

F1 F2 F3 F4
"1234"

31 32 33 34
"1234"

31 32 33 34
"1234"

F1 F2 F3 F4
"1234"

+1234

31 32 33 34
"1234"

41 32 33 34
"A234"

C1 F2 F3 F4
"A234"

31 32 33 34
"1234"

31 32 33 44
"123D"

F1 F2 F3 C4
"123D"

-1234

71 32 33 34
"q234"

4A 32 33 34
"J234"

D1 F2 F3 F4
"J234"

31 32 33 74
"123t"

31 32 33 4D
"123M"

F1 F2 F3 D4
"123M"

7890

37 38 39 30
"7890"

37 38 39 30
"7890"

F7 F8 F9 F0
"7890"

37 38 39 30
"7890"

37 38 39 30
"7890"

F7 F8 F9 F0
"7890"

+7890

37 38 39 30
"7890"

47 38 39 30
"G890"

C7 F8 F9 F0
"G890"

37 38 39 30
"7890"

37 38 39 7B
"789{"

F7 F8 F9 C0
"789{"

-7890

77 38 39 30
"w890"

50 38 39 30
"P890"

D7 F8 F9 F0
"P890"

37 38 39 70
"789p"

37 38 39 7D
"789}"

F7 F8 F9 D0
"789}"

Conceptos relacionados
Modelado de mensajes
El modelo de mensaje
Tareas relacionadas
Desarrollo de modelos de mensaje
Cómo trabajar con un archivo de definición de mensajes
Cómo trabajar con objetos de modelo de mensaje
Referencia relacionada
Información de referencia de modelo de mensaje
Propiedades de objeto de modelo de mensaje
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ad06900_