Importación desde COBOL: características soportadas

La tabla siguiente muestra cómo las definiciones COBOL pueden influenciar los valores del 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 cadenas de caracteres, la finalidad del tipo anónimo es añadir una restricción de longitud, para los tipos numéricos la finalidad es añadir una restricción de valor mínimo y/o máximo.
Cláusula COBOL Tipo de datos del esquema XML Notas
PIC A xsd:string -  
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 cadena de caracteres editada xsd:string -  
Cualquier número editado xsd:string - Por ejemplo, PICZ
VALUE Todos Las cláusulas VALUE de un nivel que no sea 88 se pueden importar como valores por omisión del esquema (una opción del asistente de importación).

La tabla siguiente muestra cómo las definiciones COBOL pueden tener su influencia en las características CWF físicas de los elementos generados 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)

Cadena de caracteres de longitud fija Longitud = n

Unidades de longitud = Bytes

Justificación = Justificación por la izquierda

Carácter de relleno = ESPACIO

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

Unidades de longitud = Bytes

Justificación = Justificación por la derecha

Carácter de relleno = '0'

Con signo = Sin marca de selección

Orientación con signo = De cola

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

Unidades de longitud = Bytes

Justificación = Justificación por la derecha

Carácter de relleno = '0'

Con signo = Sin marca de selección

Orientación con signo = De cola

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

Unidades de longitud = Bytes

Con signo = Sin marca de selección

Orientación con signo = En blanco

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

Unidades de longitud = Bytes

Con signo = Sin marca de selección

Orientación con signo = En blanco

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

Unidades de longitud = Bytes

Con signo = Sin marca de selección

Orientación con signo = En blanco

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

Unidades de longitud = Bytes

Con signo = Sin marca de selección

Orientación con signo = En blanco

*Vea la Nota 1

PIC S9(n) COMP o COMP-3

n=1-31

Entero o decimal empaquetado Longitud = Vea las definiciones COMP y COMP-3 anteriores

Unidades de longitud = Bytes

Con signo = Sin marca de selección

Orientación con signo = En blanco

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

Unidades de longitud = Bytes

Con signo = Sin marca de selección

Orientación con signo = De cola

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 = 1, 2, 4 u 8 para COMP

Unidades de longitud = Bytes

Con signo = Sin marca de selección

Orientación con signo = De cola

COMP-1 Flotante Longitud = 4

Unidades de longitud = Bytes

Con signo = Con marca de selección

Orientación con signo = En blanco

COMP-2 Flotante Longitud = 8

Unidades de longitud = Bytes

Con signo = Con marca de selección

Orientación con signo = 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

Notes:
  1. La Orientación con signo puede tomar uno de los valores siguientes, según las palabras clave SEPARATE, LEADING o TRAILING de la definición COBOL.
    • Cabecera
    • Cabecera separada
    • Cola
    • Cola separada
  2. La palabra clave SYNC hace que el campo se alinee en un límite de 1, 2, 4 u 8 bytes. Esto puede hacer que se añadan bytes de relleno antes o después de un campo. La Cuenta de saltos de cabecera es el número de este tipo de bytes que se añaden antes y la Cuenta de saltos de cola es el número que se añade después.

    La Cuenta de saltos de cabecera y la Cuenta de saltos de cola se calcula para cada uno de los elementos que ha importado el importador independientemente de la cláusula SYNC. No tendrán valores diferentes de cero cuando esté presente la cláusula SYNC.

    Cuando haya 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 posteriores solamente se utiliza la Cuenta de saltos de cola.

    Consulte el material de referencia de COBOL para obtener información detallada acerca de los campos que requieren alineación de bytes.

  3. El importador de COBOL requiere que todos los archivos que está importando sean sintácticamente correctos. Los resultados son imprevisibles si este no es el caso.
  4. Los tipos de datos COBOL, incluidos POINTER, COMP-X, INDEX y PROCEDURE-POINTER no están soportados.
  5. COBOL con la palabra clave NATIVE genera un error y no se importará.
  6. Los elementos de datos de nivel 66 y de nivel 67 de COBOL no se importan.
  7. Los valores binarios hexadecimales no se pueden atribuir a literales no numéricos. No pueden residir en las LINKAGE SECTION que importa el importador COBOL. Pueden residir en cualquier otro lugar del archivo COBOL. Alternativamente, puede convertir el valor hexadecimal en una serie de caracteres para PIC X o en un número decimal para PIC 9.
  8. Cuando existe un conflicto de nombres de elementos con las palabras clave del lenguaje Java, se modifican añadiendo al nombre del elemento un prefijo con un solo carácter de subrayado.
  9. Las extensiones orientadas a objetos COBOL 5 no están soportadas. Por ejemplo, no está soportado.
  10. La cláusula COBOL OCCURS DEPENDING ON. Las propiedades CWF de Alineación de bytes, Cuenta de saltos de cabecera y Cuenta de saltos de cola de los elementos de una estructura de este tipo no se configuran correctamente. Debe corregirlas utilizando el editor de mensajes.
  11. Cuando se importa el archivo de origen COBOL contiene QUOTE o QUOTES en la cláusula de valor de una cadena de imágenes, el comportamiento por omisión es rellenar los datos con comillas dobles a menos que establezca la opción de compilación COBOL QUOTE en SINGLE en la página Importar opciones del asistente de importación COBOL.

Números decimales externos con signo

El componente de formato físico personalizado CWF de WebSphere Business Integration Message Broker proporciona soporte para diseñar los datos numéricos utilizando el formato de datos Decimal externo (también conocido como Decimal con zona) En este formato, se almacena un número internamente como datos de caracteres decimales. Por ejemplo, en un sistema que utilice el código EBCDIC, el número 1234 almacenado en un campo Decimal externo de 4 bytes se almacenaría como la cadena de caracteres "1234" y su representación hexadecimal interna real será F1F2F3F4.

Con los números decimales externos con signo, el signo se puede incorporar en los datos reales modificando la primera mitad del primer o último byte (dependiendo de si está utilizando la representación de cabecera con signo o de cola con signo). Generalmente, se utiliza '0xC' para representar un número positivo, '0xD' para representar un número negativo y '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 hay varios mecanismos para la representación interna de los datos decimales externos. Una representación ('ASCII con signo') que emplean las máquinas pSeries de IBM utiliza los códigos ASCII normales ("0" [hex 30] a "9" [hex 39]) para el primer/último dígito de ambos 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 (EBCDIC con signo personalizado) en otro tipo de máquinas basadas en ASCII. Esto utiliza los mismos caracteres que una máquina basada en EBCDIC, incluso si la representación hexadecimal interna real para los mismos es diferente. Con esta técnica la serie de caracteres para ambas plataformas EBCDIC y ASCII es idéntica. Puede recibir potencialmente un mensaje de una plataforma EBCDIC (creada desde un libro de copias COBOL que contenga dichas entradas como PIC XXX y PIC S999) y convertir todo el mensaje a ASCII o a la inversa. La cadena 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. Debe tener en cuenta que existe una limitación con este método. Los caracteres de llaves son variables, por ejemplo, tienen puntos de código diferentes en páginas de códigos EBCDIC diferentes). Este mecanismo solamente funciona para dichas páginas de códigos EBCDIC en los que los caracteres de llaves '{' y '}' (que se utilizan para representar el 0 con signo) tienen exactamente los puntos de código x'C0' y x'D0'. Por ejemplo, funcionará para la página de códigos 500 y no para la página de códigos 871 en la que las llaves tienen los puntos de código X'8E' X'9C.

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

Nota: Esto solamente es adecuado para aquellos elementos/atributos que tienen una representación física decimal externa y que tienen intercalado ("Cabecera" o "Cola") un signo (lo determina la propiedad "Orientación con signo").

La tabla siguiente muestra la representación interna (tanto el carácter como el valor hexadecimal real) del primer y último dígito para los números decimales externos con un signo de cabecera o de cola (intercalado) respectivamente. (Nota: la tabla no especifica la representación de los valores sin signo que son 0x30-0x39 para ASCII y 0xF0-0xF9 para EBCDIC)

  Valores con signo positivos   Valores con signo negativos
Entorno ASCII Entorno EBCDIC Entorno ASCII Entorno EBCDIC
Dígito ASCII con signo Signo EBCDIC personalizado   ASCII con signo 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 siguiente proporciona algunos ejemplos para un rango de número sencillos que sería representativo de lo que se puede transmitir o recibir utilizando estos métodos.

  Cabecera con signo Cola con signo
  Entorno ASCII Entorno EBCDIC Entorno ASCII Entorno EBCDIC
Valor decimal ASCII con signo Signo EBCDIC personalizado   ASCII con signo 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
Diseño de mensajes
El modelo de mensaje

Tareas relacionadas
Desarrollo de modelos de mensajes
Trabajar con un archivo de definición de mensajes
Trabajo con los objetos del modelo de mensajes

Referencia relacionada
Información de referencia del modelo de mensaje
Propiedades del objeto del modelo de mensaje