从 COBOL 导入:支持的功能

下表显示 COBOL 定义如何影响消息模型中的 XML 模型设置。

注意有些 xsd 类型在类型后有“-”。这表明它是基于此类型的匿名简单类型。对于字符串,匿名类型的用途是添加长度限制;例如,对于数字类型,用途是添加最小和/或最大值限制。
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

注:
  1. 根据 COBOL 定义中的 SEPARATE、LEADING 或 TRAILING 关键字,符号方向可以使用以下某个值:
    • 前导
    • 前导分隔
    • 尾随
    • 尾随分隔
  2. SYNC 关键字使得字段在 1、2、4 或 8 字节边界上对齐。这可能导致在字段之前或之后添加“松弛字节”。 前导跳过计数是在字段前添加的字节数;尾随跳跃计数是在字段后面添加的字节数。

    不考虑 SYNC 子句,为每个由导入器导入的元素计算前导跳过计数和尾随跳跃计数。当 SYNC 子句出现时它们将具有非零值。

    只要有重复元素,前导跳跃计数和尾随跳跃计数用于重复元素的第一次出现,对于后续出现的重复元素,只使用尾随跳跃计数。

    请参阅 COBOL 参考资料以获取需要字节对齐的字段的详细信息。

  3. COBOL 导入器要求正在导入的所有文件的句法正确。如果不是这种情况,将产生不可预测的结果。
  4. 不支持包含 POINTER、COMP-X、INDEX 和 PROCEDURE-POINTER 的 COBOL 数据类型。
  5. 包含关键字 NATIVE 的 COBOL 引起错误并将不导入。
  6. COBOL 级别 66 和级别 77 数据项没有导入。
  7. 十六进制二进制值无法归结为非数字文字。它们无法驻留在 COBOL 导入器导入的 LINKAGE SECTION 中。它们能在 COBOL 文件的其他位置驻留。或者,您可以将十六进制值转换为 PIC X 的字符串或 PIC 9 的十进制数。
  8. 将与 Java 语言关键字冲突的元素名称修改为以一个下划线字符作为元素名称的前缀。
  9. 不支持 COBOL 85 的面向对象的扩展。例如,不支持 OBJECT-REFERENCE。
  10. COBOL OCCURS DEPENDING ON 子句。此类结构中元素的“字节对齐”、“前面跳过计数”和“后面跳过计数”CWF 属性未适当设置。您必须使用消息编辑器改正这些属性。
  11. 当导入的 COBOL 源文件在图片字符串的值子句中包含 一个或多个 QUOTE时,缺省行为是使用双引号填充数据,除非您在 COBOL 导入器向导的导入选项页上将 COBOL QUOTE 编译选项设置为单独。

带符号的外部十进制数

WebSphere Message Broker的定制有线格式(CWF)提供对模型化使用外部十进制(又称为分区十进制)数据格式的数字数据的支持。在这种格式内部,数字存储为十进制字符数据。例如,在使用 EBCDIC 代码的系统中,存储在 4 位外部十进制区域的数字 1234 将存储为字符串“1234”并且它的实际内部十六进制表示是 F1F2F3F4。

使用带符号的外部十进制数字,通过修改首位或末位的前半部分(取决于是使用符号在前还是符号在后的表示),符号能组成实际值。通常“0xC”用来表示正数,“0xD”用来表示负数,而“0xF”用来表示无符号的数。

注: 一般而言,“0xA”、'0xC'、“0xE”或“0xF”可用来表示正值,而“0xB”或“0xD” 可用来表示负值。实际使用的表示取决于实际的硬件体系结构。

在 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
"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}"

相关概念
消息建模
消息模型
相关任务
开发消息模型
使用消息定义文件
使用消息模型对象
相关参考
消息模型引用信息
消息模型对象属性
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ad06900_