La tabla siguiente muestra cómo influyen las definiciones COBOL en los valores de esquema XML en el modelo de mensaje.
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 |
|
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.
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.
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.
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 |
31 32 33 34 |
F1 F2 F3 F4 |
31 32 33 34 |
31 32 33 34 |
F1 F2 F3 F4 |
+1234 | 31 32 33 34 |
41 32 33 34 |
C1 F2 F3 F4 |
31 32 33 34 |
31 32 33 44 |
F1 F2 F3 C4 |
-1234 | 71 32 33 34 |
4A 32 33 34 |
D1 F2 F3 F4 |
31 32 33 74 |
31 32 33 4D |
F1 F2 F3 D4 |
7890 | 37 38 39 30 |
37 38 39 30 |
F7 F8 F9 F0 |
37 38 39 30 |
37 38 39 30 |
F7 F8 F9 F0 |
+7890 | 37 38 39 30 |
47 38 39 30 |
C7 F8 F9 F0 |
37 38 39 30 |
37 38 39 7B |
F7 F8 F9 C0 |
-7890 | 77 38 39 30 |
50 38 39 30 |
D7 F8 F9 F0 |
37 38 39 70 |
37 38 39 7D |
F7 F8 F9 D0 |