下表显示 COBOL 定义如何影响消息模型中的 XML 模型设置。
COBOL 子句 | XML 模型数据类型 | 注 |
---|---|---|
PIC A | xsd:string - | |
PIC G | xsd:string - | 在 Windows - 首选项 - 导入器 - COBOL 中将编译时语言环境设置成 ja_JP 以进行处理。 |
PIC N | xsd:string - | 在 Windows - 首选项 - 导入器 - COBOL 中将编译时语言环境设置成 ja_JP 以进行处理。 |
PIC X | xsd:string - | |
PIC 9(n) n = 1-4 | xsd:short - | DISPLAY、COMP 或 COMP-3 |
PIC 9(n) n = 5-9 | xsd:int - | DISPLAY、COMP 或 COMP-3 |
PIC 9(n) n = 10-18 | xsd:long - | DISPLAY、COMP 或 COMP-3 |
PIC 9(n) n = 19-31 | xsd:integer - | DISPLAY、COMP 或 COMP-3 |
PIC 9(n)V9(m) | xsd:decimal - | DISPLAY、COMP 或 COMP-3 任何虚拟十进制小数点值 |
COMP-1 | xsd:float - | |
COMP-2 | xsd:double - | |
任何编辑的字符串 | xsd:string - | |
任何编辑的数字 | xsd:string - | 例如,PIC Z |
VALUE | 全部 | 非 88 级别 VALUE 子句可导入为模型缺省值(导入向导上的选项)。 |
下表显示 COBOL 定义如何影响消息模型中生成的元素的物理 CWF 特性。
COBOL 关键字 | CWF 物理类型 | CWF 长度特性 | 其他 CWF 特性 |
---|---|---|---|
PIC X(n) PIC A(n) |
固定长度字符串 | Length = n Length Units = Bytes |
Justification = Left Justify Padding Character = SPACE |
PIC G(n) PIC N(n) |
固定长度字符串 | Length = n Length Units = Characters |
Justification = Left Justify Padding Character = SPACE |
PIC 9(n) DISPLAY n=1-31 | 外部十进制 | Length = n Length Units = Bytes |
Justification = Right Justify Padding Character = '0' Signed = Unticked Sign Orientation = Trailing |
PIC 9(n) COMP、COMP-4、COMP-5 或 BINARY | 整数 | Length = 2、4 或 8(基于 n) Length Units = Bytes |
Signed = Unticked Sign Orientation = Blank |
PIC 9(n) COMP-3 n=1-18 | 压缩十进制 | Length = CEILING((n+1)/2) Length Units = Bytes |
Signed = Unticked Sign Orientation = Blank |
PIC S9(n) DISPLAY n=1-31 | 外部十进制 | Length = n Length Units = Bytes |
Signed = Ticked Sign Orientation = Trailing *请参阅注 1 |
PIC S9(n) COMP 或 COMP-3 n=1-18 |
整数或压缩十进制 | Length = 请参阅上面 COMP 和 COMP-3 定义 Length Units = Bytes |
Signed = Ticked Sign Orientation = Blank |
PIC 9(m)V9(n) DISPLAY n=1-31 | 外部十进制 | Length = n+m Length Units = Bytes |
Signed = Unticked Sign Orientation = Trailing Decimal Point = n |
PIC 9(m)V9(n) COMP 或 COMP-3 | 整数或压缩十进制 | 对于 COMP-3,Length = CEILING((n+m+1)/2) Length = 2、4 或 8(对于 COMP) Length Units = Bytes |
Signed = Unticked Sign Orientation = Blank Decimal Point = n |
COMP-1 | Float | Length = 4 Length Units = Bytes |
Signed = Ticked Sign Orientation = Blank |
COMP-2 | Float | Length = 8 Length Units = Bytes |
Signed = Ticked Sign Orientation = Blank |
SYNC | 浮点、整数或压缩十进制 | 如果适合,前导跳过计数 如果适合,尾随跳过计数 如果适合,字节对齐 *请参阅注 2 |
|
不考虑 SYNC 子句,为每个由导入器导入的元素计算前导跳过计数和尾随跳跃计数。当 SYNC 子句出现时它们将具有非零值。
只要有重复元素,前导跳跃计数和尾随跳跃计数用于重复元素的第一次出现,对于后续出现的重复元素,只使用尾随跳跃计数。
请参阅 COBOL 参考资料以获取需要字节对齐的字段的详细信息。
WebSphere Message Broker的定制有线格式(CWF)提供对模型化使用外部十进制(又称为分区十进制)数据格式的数字数据的支持。在这种格式内部,数字存储为十进制字符数据。例如,在使用 EBCDIC 代码的系统中,存储在 4 位外部十进制区域的数字 1234 将存储为字符串“1234”并且它的实际内部十六进制表示是 F1F2F3F4。
使用带符号的外部十进制数字,通过修改首位或末位的前半部分(取决于是使用符号在前还是符号在后的表示),符号能组成实际值。通常“0xC”用来表示正数,“0xD”用来表示负数,而“0xF”用来表示无符号的数。
在 ASCII 机器上有一些外部十进制数据的内部表示。IBM 的 pSeries 机器使用的一种表示(“带符号的 ASCII”)使用常规 ASCII 代码(“0”[十六进制 30] 到“9”[十六进制 39])表示无符号和正数的首/末位,而字符“p”[十六进制 70] 到"y"[十六进制 79] 表示负数。
在某些其他基于 ASCII 的机器上使用备用方法(符号 EBCDIC 定制)。这使用与基于 EBCDIC 的机器一样的字符,即使它们的实际内部十六进制表示不同。使用此技术使 EBCDIC 和 ASCII 平台的字符串都是相同的。您可能收到 EBCDIC 平台的消息(由包含像 PIC XXX 和 PIC S999 那样的条目的 COBOL 副本创建)并将整个消息转换为 ASCII,反之亦然。在消息中表示外部十进制区域的字符串(ASCII/EBCDIC 转换后)映射到表示正确的十进制符号的代码点。您应该注意此方法的局限性。花括号字符是变体(即,它们在不同的 EBCDIC 代码页中有不同的代码点)。此机制只适用于那些花括号字符“{”和“}”(用来表示带符号的 0 )的代码点为 x'C0' 和 x'D0' 的代码页。例如,此机制适用于代码页 500 而不适用于代码页 871,前者中花括号的代码点为 X'8E',X'9C。
在 ASCII 环境中(在运行时由 CCSID 属性决定),输入和输出的缺省值都是“带符号的 ASCII”表示。在 CWF 物理层中为十进制、浮点型和整型的局部属性和局部元素指定适当的表示是可能的。
下表显示分别具有包含的(嵌入式)前导或尾随符号的外部十进制数的首位或末位的内部表示(字符和实际十六进制值)。(注意:此表未指定 ASCII 为 0x30 - 0x39 和 EBCDIC 为 0xF0 - 0xF9 的无符号值的表示)
正值 | 负值 | ||||||
ASCII 环境 | EBCDIC 环境 | ASCII 环境 | EBCDIC 环境 | ||||
位 | 符号 ASCII | 符号 EBCDIC 定制 | 符号 ASCII | 符号 EBCDIC 定制 | |||
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) |
下表提供使用这些方法可以表示为可发送或接收的某写些简单数字一些示例。
符号前导 | 符号尾随 | |||||
ASCII 环境 | EBCDIC 环境 | ASCII 环境 | EBCDIC 环境 | |||
十进制值 | 符号 ASCII | 符号 EBCDIC 定制 | 符号 ASCII | 符号 EBCDIC 定制 | ||
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 |