“应用程序数据”中的“UTF-16 支持”

CICS® Web Service 支持将 UTF-16 编码的应用程序数据转换为 XML 或 JSON ,还支持将 XML 或 JSON 转换为 UTF-16 编码的应用程序数据。 如果您需要存储和处理多种语言版本的数据,请使用 UTF-16。

CICS SOAP 和 JSON Web Service 支持将 UTF-16 编码的应用程序数据转换为 XML 或 JSON ,还支持将 XML 或 JSON 转换为 UTF-16 编码的应用程序数据。 Unicode 是一种可变宽度编码方案,使系统能够高效地处理数据。

UTF-16 是 Unicode 的可变宽度编码,其中每个字符由 2 或 4 字节表示。 CICS Web Service 支持将 CCSID 1200 用于应用程序数据,即具有 IBM® Private Use Area 的 UTF-16 BE (大尾数法)。 此行为与所有受支持语言的 UTF-16 支持一致。

UTF-16 在映射级别 4.0 和更高版本上受支持。 您可以使用助手中的映射设置来定制应用程序数据的转换方式。 有关 XML 映射级别的更多信息,请参阅 CICS 助手的映射级别 。 有关 JSON 映射级别的更多信息,请参阅 CICS JSON 助手的映射级别

注: UTF-16 需要更多的处理时间,并且比 EBCDIC 编码的存储效率更低。 此外,混合编码类型会产生额外的运行时处理。

将 UTF-16 从 XML 或 JSON 模式映射到语言结构

对 UTF-16 的支持取决于您创建 Web Service 的方式。 将 XML 或 JSON 模式映射到语言结构 (也称为自顶向下映射) 具有以下特征。 如果启用了 UTF-16 ,那么所有文本字段都将映射到 UTF-16 字段,而 COBOL 中的数字显示数据类型将映射为 EBCDIC。 要使用 UTF-16,请将 DFHJS2LS, DFHSC2LS或 DFHWS2LS 的 CCSID 参数设置为 1200

例如,如果 WSDL 中存在以下 XML 模式片段:

<xsd:element name="myString" nillable="false">
  <xsd:simpleType>
    <xsd:restriction base="xsd:string">
      <xsd:maxLength value="20"/>
    </xsd:restriction>
  </xsd:simpleType>
</xsd:element>

DFHWS2LS 助手在 COBOL 语言结构中生成以下字段:

myString PIC N(20) USAGE NATIONAL
Web Service 助手的 CHAR-增效器参数可用于指定助手生成的字段的长度。
CHAR-乘数

使用 UTF-16时, CHAR-MULTIPLIER 参数的有效值只有 24 ,其中 2 是缺省值。

CHAR-MULTIPLIER = 2 ,其中模式描述 maxlength x 的字符串,生成 PIC N( x ) 。 设置 CHAR-MULTIPLIER = 2 不会阻止在 UTF-16 字符串中使用代理对,但会影响字段中适合的字符数。

CHAR-MULTIPLIER = 4 生成 PIC N( 2x ) 。 如果 CHAR-MULTIPLIER = 4 ,那么如果字符串包含可以在单个编码单元中表示的字符,那么将填充运行时的值。

将 UTF-16 从语言结构映射到 XML 或 JSON 模式

从语言结构到 XML 或 JSON 模式的映射 (也称为自底向上映射) 的管理方式与自顶向下映射不同。 如果在语言结构中声明了 UTF-16 字符串,那么 CICS 会将数据解释为 UTF-16 编码,否则将假定数据采用 EBCDIC 编码。 DFHLS2JS, DFHLS2SC或 DFHLS2WS 的 CCSID 参数指示应用程序数据中任何 EBCDIC 文本的编码; 不得将其设置为指示 UTF-16。

解释为 UTF-16 字符的数据类型如下: PIC N ( n ) (在 COBOL 中) , WIDECHAR( n ) (在 PL/I 中) 和 char16_t[ n ] (在 C 和 C++ 中)。

Web Service 助手的 CHAR-USAGE 参数可用于指定数据类型。
CHAR-用法

在 COBOL 中,本地数据类型 PIC N 可用于 UTF-16 或 DBCS 数据。 此设置由 NSYMBOL 编译器选项控制。 必须将助手上的 CHAR-USAGE 参数设置为与 NSYMBOL 编译器选项相同的值,以确保正确处理数据。 当您使用 UTF-16时,通常会将此值设置为 CHAR-USAGE=NATIONAL

如果要在同一副本中混用包含 UTF-16 和 DBCS 数据的本地数据类型,那么可以在各个字段上使用 USAGE NATIONALUSAGE DISPLAY-1 限定符。

注: DFHLS2WS, DFHLS2SC和 DFHLS2JS 不支持 COBOL GROUP USAGE NATIONAL 子句。