ASBITSTREAM 函数

ASBITSTREAM 字段函数根据拥有给定字段的解析器的规则生成该字段子树的位流,并将调用者提供的参数用于:
  • Encoding
  • CCSID
  • Message set
  • Message type
  • Message format
  • Options
此函数有效地除去现有 BITSTREAM 函数的局限性,这些 BITSTREAM 函数只可在属于输入节点的解析器产生的树上使用。

BITSTREAM 函数只为向后兼容保留。

语法

注:
  1. 每个子句只能出现一次

ASBITSTREAM 返回 BLOB 类型的值,该值包含 FieldReference 及其子代所指向的字段的位流表示

取决于不同的解析器和根据指定的选项,完成此操作的算法是不同的。所有的解析器都支持下列方式:
  • 在 RootBitStream 方式下位流生成算法与输出节点所用的算法相同。在此方式中,只有当所指向的字段位于具有相应结构的子树最前面时,才获取有意义的结果。
  • 在 EmbeddedBitStream 方式下,不仅位流生成算法与输出节点所使用的算法相同,并且
    • Encoding
    • CCSID
    • Message set
    • Message type
    • Message format
    如果没有显式指定,其方式与输出节点的方式相同。即,通过搜索 FieldReference 前面的同代(假设这些表示头)来确定它们。

    通过这个方法,确定这些属性的算法实质上与用于 BITSTREAM 函数的方法相同。

某些解析器还支持另一种方式 FolderBitStream,如果所指向的字段表示一个文件夹,则该方式会为任何子树生成有效的位流。

在所有情况下,获得的位流提供给带有 PARSE 子句的 CREATE 语句,使用相同的 DOMAIN 和 OPTIONS 重新产生原始子树。

当调用此函数时,将求值任何子句表达式。如果以下任何表达式不生成相应类型的值,将抛出异常。

只要有一个参数是 NULL,结果便为 NULL。

子句 类型 缺省值
Options 整数 RootBitStream & ValidateNone
Encoding 整数 0
Ccsid 整数 0
Message set 字符 零长度字符串
Message type 字符 零长度字符串
Message format 字符 零长度字符串

尽管 OPTIONS 子句接受任何返回值的类型为整数的表达式,但是只有从所提供常量的列表中生成选项值才是有效的(如果需要多个选项,使用 BITOR 函数)。

一旦生成,该值成为一个整数,可保存在变量中或作为参数传递给函数并直接在 ASBITSTREAM 调用中使用。全局定义的常量的列表为:
        验证主选项...
        ValidateContentAndValue
                ValidateValue		-- 可与 ValidateContent 一起使用
                ValidateContent		-- 可与 ValidateValue 一起使用
        ValidateNone

        验证故障操作选项...
                ValidateException
        ValidateExceptionList
                ValidateLocalError
        ValidateUserTrace

       验证值约束选项...
                ValidateFullConstraints
       ValidateBasicConstraints

       验证修正选项...
                ValidateFullFixUp
       ValidateNoFixUp
注:
  1. validateFullFixUp 选项被保留以备将来使用。 选择 validateFullFixUp 会给出与 validateNoFixUp 相同的行为。
  2. 保留 validateFullConstraints 选项以备将来使用。选择 validateFullConstraints 会给出与 validateBasicConstraints 相同的行为。
  3. 有关验证选项的完整详细信息,请参阅MRM 域中消息的验证属性

C 和 Java 的等价 API

注意,等价选项在以下方法上不可用:
  • Java 插件节点 API MBElement 方法 createElementAsLastChildFromBitstream()toBitstream()
  • C 插件节点 API 方法 cniCreateElementAsLastChildFromBitstream()cniElementAsBitstream

每个组只能指定一个选项,但 ValidateValue 和 ValidateContent 除外,它们可以一起使用以获取内容和值验证。如果没有指定组中的选项,则使用粗体表示的选项。

ENCODING 子句接受任何返回类型为整数的值的表达式。但是,它只有从提供的常量列表中生成编码值才是有意义的:
       0
       MQENC_INTEGER_NORMAL
              MQENC_INTEGER_REVERSED
              MQENC_DECIMAL_NORMAL
              MQENC_DECIMAL_REVERSED
              MQENC_FLOAT_IEEE_NORMAL
              MQENC_FLOAT_IEEE_REVERSED
              MQENC_FLOAT_S390
0 使用队列管理器的编码。

用于 CCSID 子句的值遵守常规的编号系统。例如,1200 = UCS-2,1208 = UTF-8。

此外,还支持下列特殊值:
       0
       -1
0 使用队列管理器的 CCSID,-1 使用解析器自身决定的 CCSID。保留该值。

对于没有出现的子句,使用给定的缺省值。请使用 CCSID 和编码缺省值,因为它们从队列管理器的编码和 CCSID 设置获取它们的值。

类似地,对每个消息集、类型和格式选项使用缺省值,因为许多解析器不需要消息集、类型或格式信息;因此,任何有效值就足够了。

对任何表达式求值时,生成相应的位流。
注: 因为该函数有大量子句,所以支持一种备用的语法,在该语法中参数作为逗号分隔的列表而不是命名的子句提供。在这种情况下,表达式的顺序必须为:
ENCODING -> CCSID -> SET -> TYPE -> FORMAT -> OPTIONS

可在任何一点截断该列表,且可对任何您没有提供值的子句使用空表达式。

示例

      DECLARE options INTEGER BITOR(FolderBitStream, ValidateContent, ValidateValue);
      SET result = ASBITSTREAM(cursor OPTIONS options CCSID 1208);
            SET Result = ASBITSTREAM(Environment.Variables.MQRFH2.Data,,1208,,,,options);
相关概念
ESQL 概述
相关任务
正在开发 ESQL
处理大型 XML 消息
处理 XML 消息和位流
相关参考
语法图:可用类型
ESQL 字段函数
BITSTREAM 函数(不推荐)
支持的代码页
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ak05510_