MQSETMP-设置消息属性

使用 MQSETMP 调用来设置或修改消息句柄的属性。

语法

MQSETMPHconnHmsgSetPropOptsNamePropDescTypeValueLengthValueCompcodeReason)

参数

Hconn
类型 :MQHCONN-输入

此句柄表示与队列管理器的连接。

该值必须与用于创建 Hmsg 参数中指定的消息句柄的连接句柄相匹配。 如果使用 MQHC_UNASSOCIATED_HCONN 创建了消息句柄,那么必须在设置消息句柄属性的线程上建立有效连接,否则调用将失败,原因码为 MQRC_CONNECTION_BROKEN。

赫消息
类型 :MQHMSG-输入

这是要修改的消息句柄。 该值由先前的 MQCRTMH 调用返回。

SetPropOpts
类型 :MQSMPO-输入

控制如何设置消息属性。

此结构允许应用程序指定用于控制如何设置消息属性的选项。 此结构是 MQSETMP 调用上的输入参数。 请参阅 MQSMPO 以获取更多信息。

名称
类型 :MQCHARV-输入

这是要设置的属性的名称。

请参阅 属性名属性名限制 ,以获取有关使用属性名的更多信息。

PropDesc
类型 :MQPD-输入/输出
此结构用于定义属性的属性,包括:
  • 如果该属性不受支持,那么会发生什么情况
  • 属性所属的消息上下文
  • 在属性流动时将其复制到其中的消息

请参阅 MQPD 以获取有关此结构的更多信息。

类型
类型 :MQLONG-输入

要设置的属性的数据类型。 可以为以下某项:

MQTYPE_BOOLEAN
布尔值。 ValueLength 必须为 4。
MQTYPE_BYTE_STRING
字节字符串。 ValueLength 必须为零或更大值。
MQTYPE_INT8
8 位带符号整数。 ValueLength 必须为 1。
MQTYPE_INT16
16 位带符号整数。 ValueLength 必须为 2。
MQTYPE_INT32
32 位带符号整数。 ValueLength 必须为 4。
MQTYPE_INT64
64 位带符号整数。 ValueLength 必须为 8。
MQTYPE_FLOAT32
32 位浮点数。 ValueLength 必须为 4。
注: 使用 IBM® COBOL for z/OS®的应用程序不支持此类型。
MQTYPE_FLOAT64
64 位浮点数。 ValueLength 必须为 8。
注: 使用 IBM COBOL for z/OS的应用程序不支持此类型。
MQTYPE_STRING
字符串。 ValueLength 必须为零或更大的值,或者特殊值 MQVL_NULL_TERMINATED。
MQTYPE_NULL
该属性存在,但具有空值。 ValueLength 必须为零。
ValueLength
类型 :MQLONG-输入

Value 参数中属性值的长度 (以字节计)。 零仅对空值或字符串或字节字符串有效。 零表示该属性存在,但该值不包含任何字符或字节。

如果 Type 参数设置了 MQTYPE_STRING ,那么该值必须大于或等于零或以下特殊值:
MQVL_NULL_TERMINATED
该值由字符串中迂到的第一个空值定界。 空值不包含在字符串中。 如果未同时设置 MQTYPE_STRING ,那么此值无效。
注: 如果设置了 MQVL_NULL_TERMINATED ,那么用于终止字符串的空字符是来自值的字符集的空字符。
类型:MQBYTExValueLength- 输入

要设置的属性的值。 缓冲区必须在适合于值中数据的性质的边界上对齐。

在 C 编程语言中,该参数被声明为指向 void 的指针; 任何类型数据的地址都可以被指定为该参数。

如果 ValueLength 为零,那么不会引用 。 在这种情况下,以 C 或 System/390 汇编程序编写的程序传递的参数地址可以为空。

CompCode
类型:MQLONG - 输出
完成代码;此完成代码为以下其中一项:
MQCC_OK
成功完成。
MQCC_FAILED
调用失败。
原因
类型:MQLONG - 输出

限定 CompCode的原因码。

如果 CompCode 为 MQCC_OK:
MQRC_NONE
(0, X'000') 没有要报告的原因。

如果 CompCode 为 MQCC_WARNING:

MQRC_RFH_FORMAT_ERROR
(2421 , X'0975 ') 无法解析包含属性的 MQRFH2 文件夹。
如果 CompCode 为 MQCC_FAILED:
MQRC_ADAPTER_NOT_AVAILABLE
(2204,X'089C')适配器不可用。
MQRC_ADAPTER_SERV_LOAD_ERROR
(2130, X'852') 无法装入适配器服务模块。
MQRC_ASID_MISMATCH
(2157, X'86D') 主 ASID (Primary ASID) 与主 ASID (home ASID) 不同。
MQRC_BUFFER_ERROR
(2004,X'07D4')参数值无效。
MQRC_BUFFER_LENGTH_ERROR
(2005,X'07D5')值长度参数无效。
MQRC_CALL_IN_PROGRESS
(2219,X'08AB') MQI 呼叫在前一个呼叫完成前进入。
MQRC_HMSG_ERROR
(2460,X'099C') 信息句柄指针无效。
MQRC_MSG_HANDLE_IN_USE
(2499,X'09C3') 消息句柄已在使用中。
MQRC_OPTIONS_ERROR
(2046,X'07FE') 选项无效或不一致。
MQRC_PD_ERROR
(2482,X'09B2')属性描述符结构无效。
MQRC_PROPERTY_NAME_ERROR
(2442,X'098A')无效属性名。
MQRC_PROPERTY_TYPE_ERROR
(2473,X'09A9')属性数据类型无效。
MQRC_PROP_NUMBER_FORMAT_ERROR
(2472,X'09A8')数值数据中遇到数字格式错误。
MQRC_SMPO_ERROR
(2463,X'099F') 设置报文属性选项结构无效。
MQRC_SOURCE_CCSID_ERROR
(2111,X'083F') 属性名编码字符集标识符无效。
MQRC_STORAGE_NOT_AVAILABLE
(2071, X'817') 没有足够的存储空间可用。
MQRC_UNEXPECTED_ERROR
(2195, X'893') 发生了意外错误。

有关这些代码的详细信息,请参阅 消息和原因码

C 调用

MQSETMP (Hconn, Hmsg, &SetPropOpts, &Name, &PropDesc, Type,
ValueLength, &Value, &CompCode, &Reason);
按如下所示声明参数:
MQHCONN  Hconn;       /* Connection handle */
MQHMSG   Hmsg;        /* Message handle */
MQSMPO   SetPropOpts; /* Options that control the action of MQSETMP */
MQCHARV  Name;        /* Property name */
MQPD     PropDesc;    /* Property descriptor */
MQLONG   Type;        /* Property data type */
MQLONG   ValueLength; /* Length of property value in Value */
MQBYTE   Value[n];    /* Property value */
MQLONG   CompCode;    /* Completion code */
MQLONG   Reason;      /* Reason code qualifying CompCode */

COBOL 调用

     CALL 'MQSETMP' USING HCONN, HMSG, SETMSGOPTS, NAME, PROPDESC, TYPE, 
                          VALUELENGTH, VALUE, COMPCODE, REASON.
按如下所示声明参数:
**   Connection handle
 01  HCONN     PIC S9(9) BINARY.
**   Message handle
 01  HMSG    PIC S9(18) BINARY.
**   Options that control the action of MQSETMP
 01  SETMSGOPTS.
     COPY CMQSMPOV.
**   Property name
 01  NAME
    COPY CMQCHRVV.
**   Property descriptor
 01  PROPDESC.
     COPY CMQPDV.
**   Property data type
 01  TYPE          PIC S9(9) BINARY.
**   Length of property value in VALUE
 01  VALUELENGTH   PIC S9(9) BINARY.
**   Property value
 01  VALUE         PIC X(n).
**   Completion code
 01  COMPCODE  PIC S9(9) BINARY.
**   Reason code qualifying COMPCODE
 01  REASON    PIC S9(9) BINARY.

PL/I 调用

call MQSETMP (Hconn, Hmsg, SetPropOpts, Name, PropDesc, Type, ValueLength,
              Value, CompCode, Reason);
按如下所示声明参数:
dcl Hconn       fixed bin(31);  /* Connection handle */
dcl Hmsg        fixed bin(63);  /* Message handle */
dcl SetPropOpts like MQSMPO;    /* Options that control the action of MQSETMP */
dcl Name        like MQCHARV;   /* Property name */
dcl PropDesc    like MQPD;      /* Property descriptor */
dcl Type        fixed bin(31);  /* Property data type */
dcl ValueLength fixed bin(31);  /* Length of property value in Value */
dcl Value       char(n);        /* Property value */
dcl CompCode    fixed bin(31);  /* Completion code */
dcl Reason      fixed bin(31);  /* Reason code qualifying CompCode */

高级汇编程序调用

         CALL MQSETMP,(HCONN,HMSG,SETMSGHOPTS,NAME,PROPDESC,TYPE,VALUELENGTH,
                VALUE,COMPCODE,REASON)
按如下所示声明参数:
HCONN        DS         F     Connection handle
HMSG         DS         D     Message handle
SETMSGOPTS   CMQSMPOA   ,     Options that control the action of MQSETMP
NAME         CMQCHRVA   ,     Property name
PROPDESC     CMQPDA     ,     Property descriptor
TYPE         DS         F     Property data type
VALUELENGTH  DS         F     Length of property value in VALUE
VALUE        DS         CL(n) Property value
COMPCODE     DS         F     Completion code
REASON       DS         F     Reason code qualifying COMPCODE