A tabela a seguir mostra como as definições de COBOL influenciam nas configurações do esquema XML no modelo de mensagens.
Cláusula COBOL | Tipo de Dados do Esquema XML | Notas |
---|---|---|
PIC A | xsd:string - | |
PIC G | xsd:string - | Configure o nome do código do idioma do tempo de compilação como ja_JP no Windows - Preferências - Importador - COBOL para processá-lo. |
PIC N | xsd:string - | Configure o nome do código do idioma do tempo de compilação como ja_JP no Windows - Preferências - Importador - COBOL para processá-lo. |
PIC X | xsd:string - | |
PIC 9(n) n = 1-4 | xsd:short - | DISPLAY, COMP ou COMP-3 |
PIC 9(n) n = 5-9 | xsd:int - | DISPLAY, COMP ou COMP-3 |
PIC 9(n) n = 10-18 | xsd:long - | DISPLAY, COMP ou COMP-3 |
PIC 9(n) n = 19-31 | xsd:integer - | DISPLAY, COMP ou COMP-3 |
PIC 9(n)V9(m) | xsd:decimal - | Qualquer valor de ponto decimal virtual DISPLAY, COMP ou COMP-3 |
COMP-1 | xsd:float - | |
COMP-2 | xsd:double - | |
Qualquer cadeia editada | xsd:string - | |
Qualquer número editado | xsd:string - | Por exemplo, PIC Z |
VALUE | Todos | As cláusulas VALUE de Nível Não-88 podem ser importadas como valores padrão de esquema (opção no assistente de importação). |
A tabela a seguir mostra como as definições de COBOL influenciam as características físicas de CWF dos elementos que são gerados no modelo de mensagem.
Palavra-chave COBOL | Tipo Físico de CWF | Características de Comprimento de CWF | Outras Características de CWF |
---|---|---|---|
PIC X(n) PIC A(n) |
Cadeia de Comprimento Fixo | Comprimento = n Unidades de Comprimento = Bytes |
Justificação = Alinhar à Esquerda Padding Character = SPACE |
PIC G(n) PIC N(n) |
Cadeia de Comprimento Fixo | Comprimento = n Unidades de Comprimento = Caracteres |
Justificação = Alinhar à Esquerda Padding Character = SPACE |
PIC 9(n) DISPLAY n=1-31 | Decimal Externo | Comprimento = n Unidades de Comprimento = Bytes |
Justificação = Alinhar à Direita Caractere de Preenchimento = '0' Assinado = Desmarcado Orientação de Sinal= Rastreando |
PIC 9(n) COMP, COMP-4, COMP-5 ou BINARY | Inteiro | Comprimento = 2, 4 ou 8 com base em n Unidades de Comprimento = Bytes |
Assinado = Desmarcado Orientação de Sinal= Em Branco |
PIC 9(n) COMP-3 n=1-18 | Decimal Compactado | Comprimento = CEILING((n+1)/2) Unidades de Comprimento = Bytes |
Assinado = Desmarcado Orientação de Sinal= Em Branco |
PIC S9(n) DISPLAY n=1-31 | Decimal Externo | Comprimento = n Unidades de Comprimento = Bytes |
Assinado = Marcado Orientação de Sinal= Rastreando *Consulte a Nota 1 |
PIC S9(n) COMP ou COMP-3 n=1-18 |
Inteiro ou Decimal Compactado | Comprimento = Consulte as definições de COMP e COMP-3 acima Unidades de Comprimento = Bytes |
Assinado = Marcado Orientação de Sinal= Em Branco |
PIC 9(m)V9(n) DISPLAY n=1-31 | Decimal Externo | Comprimento = n+m Unidades de Comprimento = Bytes |
Assinado = Desmarcado Orientação de Sinal= Rastreando Ponto Decimal Virtual = n |
PIC 9(m)V9(n) COMP ou COMP-3 | Inteiro ou Decimal Compactado | Comprimento = CEILING((n+m+1)/2) para COMP-3 Comprimento = 2, 4 ou 8 para COMP Unidades de Comprimento = Bytes |
Assinado = Desmarcado Orientação de Sinal= Em Branco Ponto Decimal Virtual = n |
COMP-1 | Float | Comprimento = 4 Unidades de Comprimento = Bytes |
Assinado = Marcado Orientação de Sinal= Em Branco |
COMP-2 | Float | Comprimento = 8 Unidades de Comprimento = Bytes |
Assinado = Marcado Orientação de Sinal= Em Branco |
SYNC | Flutuante, Inteiro ou Decimal Compactado | Ignorar Contagem Inicial conforme apropriado Ignorar Contagem Final conforme apropriado Alinhamento de bytes conforme apropriado *Consulte a nota 2 |
|
Ignorar Contagem Inicial e Ignorar Contagem Final são calculados para cada elemento importado pelo importador, sem considerar a cláusula SYNC. Eles têm valores diferentes de zero quando a cláusula SYNC está presente.
Onde houver um elemento repetido, Ignorar Contagem Inicial e Ignorar Contagem Final serão utilizados para a primeira ocorrência do elemento repetido; nas ocorrências subseqüentes, apenas o Ignorar Contagem Final será utilizado.
Consulte o material de referência de COBOL para obter detalhes dos campos que requerem Alinhamento de Bytes.
O componente CWF (Custom Wire Format) do WebSphere Message Broker oferece suporte para a modelagem de dados numéricos utilizando o formato de dados Decimal Externo (também conhecido como Decimal por Zona). Neste formato, um número é armazenado internamente como dados de caracteres decimais. Por exemplo, em um sistema que utiliza o código EBCDIC, o número 1234 armazenado no campo de decimal externo de 4 bytes seria armazenado como a cadeia de caracteres "1234" e sua representação hexadecimal interna real seria F1F2F3F4.
Com os números decimais externos sinalizados, o sinal pode ser incorporado nos dados reais, modificando a primeira metade do primeiro ou do último byte (dependendo se você está utilizando uma representação com sinal no início ou no fim). Geralmente, '0xC' é utilizado para representar um número positivo, '0xD' é utilizado para representar um número negativo e '0xF' é utilizado para representar um número sem sinal.
Em máquinas ASCII, há um número de mecanismos para a representação interna de dados decimais externos. Uma representação ('Sign ASCII') empregada pelas máquinas pSeries da IBM utiliza os códigos ASCII normais ("0" [hex 30] a "9" [hex 39]) para o primeiro/último dígito de números positivos e sem sinal e os caracteres "p" [hex 70] a "y" [hex 79] para números negativos.
Um método alternativo (Sign EBCDIC Custom) é utilizado em algumas outras máquinas com base em ASCII. Utiliza os mesmos caracteres que uma máquina com base em EBCDIC, mesmo que a representação hexadecimal interna real deles seja diferente. Utilizando esta técnica, a cadeia de caracteres para as plataformas EBCDIC e ASCII é idêntica. Você poderia receber potencialmente uma mensagem de uma plataforma EBCDIC (criada a partir de um CopyBook COBOL que contém entradas como PIC XXX e PIC S999) e converter a mensagem inteira para ASCII ou outra forma aproximada. A cadeia de caracteres que representa o campo decimal externo na mensagem (depois da conversão ASCII/EBCDIC) é mapeada para o ponto do código que representa o sinal correto do decimal. Você deveria notar que há uma limitação com este método. As chaves são variantes (ou seja, elas têm pontos de código diferentes em páginas de códigos EBCDIC diferentes). Esse mecanismo funciona somente para as páginas de códigos EBCDIC nas quais as chaves '{' e '}' (utilizadas para representar o 0 com sinal) têm exatamente os pontos de código x'C0' e x'D0'. Por exemplo, funcionará para a página de códigos 500 e não para a página de códigos 871, na qual as chaves têm pontos de código X'8E' e X'9C.
Em um ambiente ASCII (determinado pela propriedade CCSID em tempo de execução), o padrão para entrada e saída é a representação 'Sinal ASCII'. É possível especificar a representação aplicável na camada física CWF para os atributos locais e elementos locais dos tipos decimal, flutuante e inteiro.
A tabela a seguir mostra a representação interna (caractere e valor hexadecimal real) do primeiro ou do último dígito para números decimais externos com um sinal final ou inicial incluído (incorporado), respectivamente. (Nota: a tabela não especifica a representação para os valores sem sinal, que são 0x30-0x39 para ASCII e 0xF0-0xF9 para EBCDIC)
Valores com sinal positivo | Valores com sinal negativo | ||||||
Ambiente ASCII | Ambiente EBCDIC | Ambiente ASCII | Ambiente EBCDIC | ||||
Digito | Sinal ASCII | Sinal EBCDIC Personalizado | Sinal ASCII | Sinal 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) |
Esta próxima tabela fornece alguns exemplos para uma faixa de números simples que seriam representativos do que poderia ser transmitido ou recebido utilizando essas abordagens.
Sinal inicial | Sinal final | |||||
Ambiente ASCII | Ambiente EBCDIC | Ambiente ASCII | Ambiente EBCDIC | |||
Valor decimal | Sinal ASCII | Sinal EBCDIC Personalizado | Sinal ASCII | Sinal 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 |