El importador COBOL utiliza un conjunto de valores y comportamientos predeterminados al correlacionar tipos de datos COBOL con elementos de modelo de mensajes.
La tabla siguiente muestra cómo influyen las definiciones COBOL en los valores de esquema XML del modelo de mensaje.
Cláusula COBOL | Tipo de datos del 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 | .
PIC N | xsd:string | Para procesar esto, establezca el nombre del entorno local de tiempo de compilación en ja_JP en | .
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 editada | xsd:string | |
Cualquier número editado | xsd:string | Por ejemplo, una cláusula COBOL PICTURE que contiene cualquiera de los caracteres siguientes:
Si desea que el tipo lógico de intermediario sea numérico, asegúrese de que la cláusula COBOL PICTURE no contiene ninguno de estos caracteres. |
VALUE | Todos | Las cláusulas VALUE de nivel distinto al 88 se pueden importar como valores predeterminados 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 MRM CWF de los elementos que se generan en el modelo de mensaje.
Cláusula COBOL | Tipo físico CWF | Características de longitud CWF | Otras características CWF |
---|---|---|---|
PIC X(n) PIC A(n) |
Serie 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 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 MRM Formato físico personalizado (CWF) y los componentes TDS de WebSphere Message Broker dan soporte al formato de datos Decimal Externo (también conocido como Decimal con zona) para datos numéricos. En este formato, los datos numéricos se almacenan internamente como datos de caracteres decimales. 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á '1F2F3F4'.
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 máquinas IBM pSeries, utiliza los códigos ASCII normales ('0' [hex 30] a '9' [hex 39]) para el primer o ú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. Este método 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 o EBCDIC a ASCII), se correlaciona con el punto de código que representa el signo correcto para el decimal.
Este método tiene una limitación: 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 predeterminado para la entrada y la salida es la representación 'Signo ASCII'. Puede 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. (La tabla no especifica la representación para valores sin signo que sean 0x30-0x39 para ASCII y 0xF0-0xF9 para EBCDIC).
Entorno ASCII | Entorno EBCDIC | Entorno ASCII | Entorno EBCDIC | ||||
---|---|---|---|---|---|---|---|
Valores con signo positivo | Valores con signo negativo | ||||||
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 siguiente proporciona algunos ejemplos para un rango de números simples que serán representativos de lo que se puede transmitir o recibir utilizando estos métodos.
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 |