PL/I 到 XML 模式的映射
DFHLS2SC 和 DFHLS2WS 实用程序支持 PL/I 数据结构和 XML 模式定义之间的映射。 由于 Enterprise PL/I 编译器与较早的 PL/I 编译器有所不同,因此支持以下两种语言选项:PLI-ENTERPRISE 和 PLI-OTHER。
按照以下规则将 PL/I 名称转换为 XML 名称:
- 在 XML 元素名称中无效的字符将替换为 "
x'。例如,
monthly$total将变为monthlyxtotal。 - 将通过添加一个或多个数字位来使重复的名称唯一。
例如,两个
year实例将变为year和year1。
DFHLS2SC 和 DFHLS2WS 依据下表将 PL/I 数据类型映射到模式元素。 DFHLS2SC 或 DFHLS2WS 不支持未在该表中显示的 PL/I 类型。 同时适用以下限制:
- 不支持具有 COMPLEX 属性的数据项。
- 在映射级别 1.2 或更高级别上支持具有 FLOAT 属性的数据项。 不支持 Enterprise PL/I FLOAT IEEE。
- 在映射级别 1.2 或更高级别上支持 VARYING 和 VARYINGZ 纯 DBCS 字符串。
- 指定为 DECIMAL ( p , q ) 的数据项 仅当 p ≥ q 时才受支持
- 指定为 BINARY ( p , q ) 的数据项 仅当 q = 0 时才受支持。
- 如果为数据项指定了 PRECISION 属性,那么将忽略该属性。
- 不支持 PICTURE 字符串。
- 将 ORDINAL 数据项视为 FIXED BINARY(7) 数据类型。
- 如果将 MAPPING-LEVEL 参数设置为 1.2 或更高的值,并将 CHAR-VARYING 参数设置为 NULL,那么会将字符数组映射到
xsd:string,并且作为以 null 结束的字符串进行处理;该映射不适用于 Enterprise PL/I。 - 如果将 MAPPING-LEVEL 参数设置为 1.2 或更高,并将 CHAR-VARYING 参数设置为 BINARY,那么字符数组会映射到
xsd:base64Binary并作为二进制数据进行处理。 - 如果将 MAPPING-LEVEL 参数设置为 1.2 或更高,并将 CHAR-VARYING 参数设置为 COLLAPSE,那么会为字符串生成
<xsd:whiteSpace value="collapse"/>。
DFHLS2SC 和 DFHLS2WS 不会完全实现 PL/I 的填充算法;因此,必须在数据结构中明确声明填充字节。 如果 DFHLS2SC 和 DFHLS2WS 检测到缺少填充字节,那么它们会发出一条消息。 每个顶级结构必须在双字边界上开始,并且结构中的每个字节必须映射到正确的边界。 请考虑以下代码片段:
3 FIELD1 FIXED BINARY(7),
3 FIELD2 FIXED BINARY(31),
3 FIELD3 FIXED BINARY(63);在本示例中:- FIELD1 为 1 个字节长度,可以在任何边界上对齐。
- FIELD2 为 4 个字节长度,必须在全字边界上对齐。
- FIELD3 为 8 个字节长度,必须在双字边界上对齐。
- 首先对齐 FIELD3,这是因为它具有最强烈的的边界需求。
- 在 FIELD3 之前紧接着将 FIELD2 在全字边界处对齐。
- 在 FIELD3 之前紧接着将 FIELD1 在字节边界处对齐。
由于 DFHLS2WS 不插入相等的填充字节数,因此必须在 DFHLS2WS 处理该结构之前明确声明这些字节。 例如:
3 PAD1 FIXED BINARY(7),
3 PAD2 FIXED BINARY(7),
3 PAD3 FIXED BINARY(7),
3 FIELD1 FIXED BINARY(7),
3 FIELD2 FIXED BINARY(31),
3 FIELD3 FIXED BINARY(63);或者,也可以更改该结构,将所有字段声明为未对齐,并重新编译使用该结构的应用程序。 有关 PL/I 结构内存对齐需求的更多信息,请参阅 Enterprise PL/I for z/OS 产品信息。| PL/I 数据描述 | 模式 |
|---|---|
FIXED BINARY (n)其中 n ≤ 7 |
|
FIXED BINARY (n)其中,8 ≤ n ≤ 15 |
|
FIXED BINARY (n)其中,16 ≤ n ≤ 31 |
|
FIXED BINARY (n)其中,32 ≤ n ≤ 63 限制: 仅限 Enterprise PL/I
|
|
UNSIGNED FIXED BINARY(n)其中 n ≤ 8 限制: 仅限 Enterprise PL/I
|
|
UNSIGNED FIXED BINARY(n)其中,9 ≤ n ≤ 16 限制: 仅限 Enterprise PL/I
|
|
UNSIGNED FIXED BINARY(n)其中,17 ≤ n ≤ 32 限制: 仅限 Enterprise PL/I
|
|
UNSIGNED FIXED BINARY(n)其中,33 ≤ n ≤ 64 限制: 仅限 Enterprise PL/I
|
|
FIXED DECIMAL( n , m ) |
|
FIXED DECIMAL(15)当 DATETIME=PACKED15 时,在映射级别 3.0 和更高级别上受支持 |
时间戳记的格式为 CICS® ABSTIME。 |
BIT(n)其中 n 是 8 的倍数。 不支持其他值。 |
其中
m = n /8 |
CHARACTER( n )在映射级别 1.2 和更高级别上还支持 限制:
VARYINGZ 仅受 Enterprise PL/I 支持 |
|
GRAPHIC(
n
)
在映射级别 1.2 和更高级别上还支持 限制:
VARYINGZ 仅受 Enterprise PL/I 支持 |
在映射级别 1.0 和 1.1,其中
m = 2* n
:
在映射级别 1.2 或更高级别上:
|
WIDECHAR(
n
)
限制: 仅限 Enterprise PL/I
|
在映射级别 1.0 和 1.1,其中
m = 2* n
:
在映射级别 1.2 或更高级别上:
在映射级别 4.0 和更高版本上, CICS 使用 UTF-16 数据填充应用程序数据结构字段。
|
ORDINAL限制: 仅限 Enterprise PL/I
|
|
BINARY FLOAT( n ) where N <= 21 在映射级别 1.2 和更高级别上受支持。 |
|
BINARY FLOAT( n ) 其中 不支持大于 53 的值。 在映射级别 1.2 和更高级别上受支持。 |
|
DECIMAL FLOAT( n ) where N <= 6 在映射级别 1.2 和更高级别上受支持。 注: IBM® 十六进制浮点 (HFP) 数据表示与用于 XML 的 IEEE-754-1985 表示不完全相同。 某些值可能不会精确从一个表示转换为另一个表示。 对于
xsd:float 数据来说,一些极大值或极小值可能会无效。 转换为 HFP 表示或从 HFP 表示转换时,某些值可能会不精确。 如果精确转换很重要,请考虑将 DECIMAL FLOAT 数据类型的使用替换为固定精度替代方法。 |
|
DECIMAL FLOAT( n ) 其中 6 < n
<= 16 不支持大于 16 的值。 在映射级别 1.2 和更高级别上受支持。 注: IBM 十六进制浮点 (HFP) 数据表示与用于 XML 的 IEEE-754-1985 表示不完全相同。 某些值可能不会精确从一个表示转换为另一个表示。 对于
xsd:double 数据来说,一些极大值或极小值可能会无效。 转换为 HFP 表示或从 HFP 表示转换时,某些值可能会不精确。 如果精确转换很重要,请考虑将 DECIMAL FLOAT 数据类型的使用替换为固定精度替代方法。 |
|