针对可变长度值和空格的支持

您可以通过使用 CICS® 助手上的设置以及通过将构面直接添加到 XML 模式来定制可变长度值和空格的处理方式。

通常, CICS XML 助手和 CICS Web Service 助手会将数据字符串映射到固定长度的字符数组; 这些数组需要使用空格或空值进行填充。 将变长值映射到固定长度数据数组可能效率低下,并且会浪费存储空间。 如果数据的长度是可变的,那么建议您定制处理这些映射的方式。

如果要从语言结构转换为 XML 模式或 WSDL 文档,那么建议您在 XML 模式中指定 whiteSpacemaxLength 构面,并在助手上设置 CHAR-VARYING-LIMIT 参数。

如果要从 XML 模式或 WSDL 文档转换为语言结构,那么建议您为助手上的 CHAR-VARYING 参数设置相应的值。

注: 空字符 ("x00") 在 XML 文档中无效。 将看到 CICS 解析的应用程序数据中的任何空字符表示字符串结束,并且该值将被截断。 当 CICS 生成应用程序数据时,它会根据 CHAR-VARYING 参数的值执行此操作。 例如,如果指定了 CHAR-VARYING=NULL 选项,那么 CICS 生成的可变长度字符串将以空字符结尾。

将可变长度值从 XML 映射到语言结构

使用 XML 模式中的构面或在 CICS 助手上指定某些参数,以定制处理 XML 模式或 WSDL 文档与语言结构之间的映射的方式。

可以使用构面来限制 XML 数据类型。 使用长度构面 ( lengthmaxLengthminLength ) 以及 whiteSpace 构面,用于定制如何处理 XML 中的可变长度数据。
length
用于指定数据的固定长度。
maxLength
用于指定数据类型的最大长度。 如果没有为基于字符串的数据类型设置该值,那么最大长度不受限制。
minLength
用于指定数据类型的最小长度。 如果没有为基于字符串的数据类型设置该值,那么最小长度为 0。
whiteSpace
用于指定如何处理数据值周围的空格。 空格包括空格,制表符和换行符。 whiteSpace 构面可以设置为 preservereplacecollapse :
  • preserve 将保留数据值中的任何空格。
  • replace 表示任何制表符或新行都将替换为相应数量的空格。
  • collapse 表示除去前导空格,尾部空格和嵌入空格,并将所有制表符,换行符和连续空格替换为单个空格字符。
如果未设置 whiteSpace 构面,那么将保留空格。
有关 XML 模式构面的更多信息,请参阅 XML 模式部分 2: 数据类型第二版
CICS 助手 DFHSC2LS 和 DFHWS2LS上的以下参数可用于改变将可变长度数据从 XML 模式映射到语言结构的方式。 这些参数在映射级别 1.2 或更高版本上可用。
缺省-字符-最大长度
指定在 XML 模式或 WSDL 文档中不包含任何长度的映射的字符数据的缺省数组长度 (以字符计)。 此参数的值可以是 1-2 147 483 647 范围内的正整数。

但是,建议您指定希望 DFHSC2LS 或 DFHWS2LS 直接在具有 maxLength 构面的 XML 模式或 WSDL 文档中使用的最大字符长度。 直接在 XML 模式或 WSDL 文档中指定最大长度可避免与将一个全局缺省值应用于所有基于字符串的数据类型相关联的问题。

char-varying-limit
指定映射到语言结构的可变长度字符数据的最大大小。 如果字符数据大小大于此参数中指定的值,那么会将其映射到容器,并在生成的语言结构中使用容器名称。 该值的范围可以从 0 到缺省值 32 767 字节。
CHAR-可变
指定可变长度字符数据的映射方式。 如果不指定此参数,那么缺省映射取决于指定的语言。 您可以选择以下选项:
  • CHAR-VARYING=NO 指定将可变长度字符数据映射为固定长度字符串。
  • CHAR-VARYING=NULL 指定将可变长度字符数据映射到以 null 结束的字符串。
  • CHAR-VARYING=YES 指定将变长字符数据映射到 中的 CHAR VARYING 数据类型。 PL/I 在 COBOL、C和C++语言中,可变长度的字符数据会被映射到一个等效的表示形式,该形式包含两个相关元素:数据长度和数据本身。
设置 CHAR-VARYING=YES 通常会产生最佳性能。

将可变长度值从语言结构映射到 XML

您可以定制处理语言结构与 XML 模式或 WSDL 文档之间的映射的方式。 将 DFHLS2SC 或 DFHLS2WS上的 CHAR-VARYING 参数设置为 折叠NULL 以更改生成字符数组的方式。

设置 CHAR-VARYING=NULL 选项将指示 CICS 在生成 XML 时在每个字符数组的末尾添加空字符。

设置 CHAR-VARYING=COLLAPSE 选项将指示 CICS 在生成 XML 时自动从字符数组末尾除去任何尾部空格。 此选项仅在映射级别 2.1 或更高级别可用, CHAR-VARYING=COLLAPSE 是映射级别 2.1 或更高级别的缺省值,适用于除 C 和 C++ 以外的所有语言。解析 XML 时,将除去所有前导,尾部和嵌入式空格。