“应用程序数据”中的“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 从 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
- CHAR-乘数
使用 UTF-16时, CHAR-MULTIPLIER 参数的有效值只有 2 或 4 ,其中 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++ 中)。
- CHAR-用法
在 COBOL 中,本地数据类型
PIC N可用于 UTF-16 或 DBCS 数据。 此设置由 NSYMBOL 编译器选项控制。 必须将助手上的 CHAR-USAGE 参数设置为与 NSYMBOL 编译器选项相同的值,以确保正确处理数据。 当您使用 UTF-16时,通常会将此值设置为CHAR-USAGE=NATIONAL。如果要在同一副本中混用包含 UTF-16 和 DBCS 数据的本地数据类型,那么可以在各个字段上使用 USAGE NATIONAL 或 USAGE DISPLAY-1 限定符。