MQPUT1 -放置一条消息

MQPUT1 调用将一条消息放入队列或分发列表中,或放入主题中。

队列,分发列表或主题不需要打开。

语法

MQPUT1HconnObjDescMsgDescPutMsgOptsBufferLengthBufferCompCodeReason)

参数

Hconn
类型 :MQHCONN-输入

此句柄表示与队列管理器的连接。 先前的 MQCONN 或 MQCONNX 调用返回了 Hconn 的值。

[z/OS]z/OS® for CICS® 应用程序上,可以省略 MQCONN 调用,并为 Hconn指定以下值:
MQHC_DEF_HCONN
缺省连接句柄。
ObjDesc
类型 :MQOD-输入/输出

这是一种结构,用于标识将消息添加到的队列或将消息发布到的主题。 请参阅 MQOD-对象描述符 以获取详细信息。

如果结构是队列,那么必须授权用户打开队列以进行输出。 该队列不能是模型队列。

MsgDesc
类型 :MQMD-输入/输出

此结构描述要发送的消息的属性,并在 put 请求完成后接收反馈信息。 请参阅 MQMD-消息描述符 以获取详细信息。

如果应用程序提供了 version-1 MQMD ,那么可以使用 MQMDE 结构作为消息数据的前缀,以指定 version-2 MQMD 中存在但 version-1中不存在的字段的值。 将 MQMD 中的 Format 字段设置为 MQFMT_MD_EXTENSION ,以指示存在 MQMDE。 有关更多详细信息,请参阅 MQMDE-消息描述符扩展

如果在 MQGMO 结构的 MsgHandle 字段或 MQPMO 结构的 OriginalMsgHandleNewMsgHandle 字段中提供了有效的消息句柄,那么应用程序不需要提供 MQMD 结构。 如果在其中一个字段中未提供任何内容,那么将从与消息句柄关联的描述符中获取消息描述符。

PutMsgOpts
类型 :MQPMO-输入/输出

请参阅 MQPMO-放置消息选项 以获取详细信息。

BufferLength
类型 :MQLONG-输入

Buffer中消息的长度。 零有效,指示消息不包含应用程序数据。 上限取决于各种因素; 请参阅 MQPUT-放置消息 以获取 BufferLength 参数的描述。

缓冲区
类型:MQBYTExBufferLength- 输入

这是一个缓冲区,其中包含要发送的应用程序消息数据。 将缓冲区与消息中数据的性质相应的边界对齐。 4 字节对齐适用于大多数消息 (包括包含 IBM® MQ 头结构的消息) ,但某些消息可能需要更严格的对齐。 例如,包含 64 位二进制整数的消息可能需要 8 字节对齐。

如果 Buffer 包含字符或数字数据,请将 MsgDesc 参数中的 CodedCharSetIdEncoding 字段设置为适合于数据的值; 这使消息接收方能够将数据 (如果需要) 转换为接收方使用的字符集和编码。

注: MQPUT1 调用上的所有其他参数必须采用本地队列管理器的字符集和编码 (由 CodedCharSetId 队列管理器属性和 MQENC_NATIVE 提供)。

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

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

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

限定 CompCode的原因码。

如果 CompCode 为 MQCC_OK:
MQRC_NONE
(0, X'000') 没有要报告的原因。
如果 CompCode 为 MQCC_WARNING:
MQRC_MULTIPLE_原因
(2136 , X'858 ') 返回了多个原因码。
MQRC_INCOMPLETE_GROUP
(2241,X'8C1')报文组未完成。
MQRC_INCOMPLETE_MSG
(2242,X'8C2')逻辑报文未完成。
MQRC_PRIORITY_EXCEEDS_MAXIMUM
(2049 , X'801 ') 消息优先级超过支持的最大值。
MQRC_UNKNOWN_REPORT_OPTION
(2104 , X'838 ') 无法识别消息描述符中的报告选项。
如果 CompCode 是 MQCC_FAILED:
MQRC_ADAPTER_NOT_AVAILABLE
(2204, X'89C') 适配器不可用。
MQRC_ADAPTER_SERV_LOAD_ERROR
(2130, X'852') 无法装入适配器服务模块。
MQRC_ALIAS_BASE_Q_TYPE_ERROR
(2001,X'7D1')别名基础队列不是有效类型。
MQRC_API_EXIT_ERROR
(2374, X'946') API 出口失败。
MQRC_API_EXIT_LOAD_ERROR
(2183 , X'887 ') 无法装入 API 出口。
MQRC_ASID_MISMATCH
(2157, X'86D') 主 ASID (Primary ASID) 与主 ASID (home ASID) 不同。
MQRC_BACKED_OUT
(2003,X'7D3')工作单位退出。
MQRC_BUFFER_ERROR
(2004,X'7D4')缓冲区参数无效。
MQRC_BUFFER_LENGTH_ERROR
(2005, X'7D5') 缓冲区长度参数无效。
MQRC_CALL_IN_PROGRESS
(2219, X'8AB') 在先前调用完成前输入了 MQI 调用。
MQRC_CF_NOT_AVAILABLE
(2345 , X' 929 ') 耦合设施不可用。
MQRC_CF_STRUC_AUTH_FAILED
(2348,X'92C')耦合-设施结构授权检查失败。
MQRC_CF_STRUC_ERROR
(2349,X'92D')耦合设备结构无效。
MQRC_CF_STRUC_FAILED
(2373 , X' 945 ') 耦合设施结构失败。
MQRC_CF_STRUC_IN_USE
(2346,X'92A')使用中的耦合设施结构。
MQRC_CF_STRUC_LIST_HDR_IN_USE
(2347,X'92B')正在使用耦合-设施结构列表头。
MQRC_CFGR_ERROR
(2416 , X' 970 ') 消息数据中的 PCF 组参数结构 MQCFGR 无效。
MQRC_CFH_ERROR
(2235,X'8BB') PCF 报头结构无效。
MQRC_CFIF_ERROR
(2414,X'96E')报文数据中的 PCF 整数滤波器参数结构无效。
MQRC_CFIL_ERROR
(2236,X'8BC') PCF 整数列表参数结构或PCIF*64整数列表参数结构无效。
MQRC_CFIN_ERROR
(2237,X'8BD') PCF 整数参数结构或PCIF*64整数参数结构无效。
MQRC_CFSF_ERROR
(2415,X'96F')报文数据中的 PCF 字符串过滤器参数结构无效。
MQRC_CFSL_ERROR
(2238,X'8BE') PCF 字符串列表参数结构无效。
MQRC_CFST_ERROR
(2239,X'8BF') PCF 字符串参数结构无效。
MQRC_CICS_WAIT_FAILED
(2140,X'85C') 等待请求被 "CICS拒绝 .
MQRC_CLUSTER_EXIT_ERROR
(2266,X'8DA') 集群工作负载退出失败。
MQRC_CLUSTER_RESOLUTION_ERROR
(2189,X'88D') 集群名称解析失败。
MQRC_CLUSTER_RESOURCE_ERROR
(2269,X'8DD') 集群资源错误。
MQRC_COD_NOT_VALID_FOR_XCF_Q
(2106,X'83A')COD 报告选项对 XCF 队列无效。
MQRC_CONNECTION_BROKEN
(2009, X'7D9') 与队列管理器的连接丢失。
MQRC_CONNECTION_NOT_AUTHORIZED
(2217,X'8A9')未授权连接。
MQRC_CONNECTION_QUIESCING
(2202, X'89A') 连接正在停顿。
MQRC_CONNECTION_STOPPING
(2203, X'89B') 连接正在关闭。
MQRC_CONTENT_ERROR
2554X'09FA')无法对报文内容进行解析,以确定报文是否可以发送给带有扩展报文选择器的订户。
MQRC_CONTEXT_HANDLE_ERROR
(2097 , X'831 ') 引用的队列句柄不保存上下文。
MQRC_CONTEXT_NOT_AVAILABLE
(2098 , X'832 ') 上下文不可用于引用的队列句柄。
MQRC_DATA_LENGTH_ERROR
(2010,X'7DA')数据长度参数无效。
MQRC_DB2_NOT_AVAILABLE
(2342 , X' 926 ') Db2® 子系统不可用。
MQRC_DEF_XMIT_Q_TYPE_ERROR
(2198 , X'896 ') 缺省传输队列不是本地传输队列。
MQRC_DEF_XMIT_Q_USAGE_ERROR
(2199 , X'897 ') 缺省传输队列使用错误。
MQRC_DH_ERROR
(2135 , X'857 ') 分发头结构无效。
MQRC_DLH_ERROR
(2141,X'85D')死字母报头结构无效。
MQRC_EPH_ERROR
(2420 , X' 974 ') 嵌入式 PCF 结构无效。
MQRC_EXPIRY_ERROR
(2013,X'7DD') 失效时间无效。
MQRC_FEEDBACK_ERROR
(2014,X'7DE')反馈代码无效。
MQRC_GLOBAL_UOW_CONFLICT
(2351,X'92F')全球工作单位冲突。
MQRC_GROUP_ID_ERROR
(2258,X'8D2')组标识符无效。
MQRC_HANDLE_IN_USE_FOR_UOW
(2353 , X' 931 ') 用于全局工作单元的句柄。
MQRC_HANDLE_NOT_AVAILABLE
(2017,X'7E1')没有更多手柄可用。
MQRC_HCONN_ERROR
(2018, X'7E2') 连接句柄无效。
MQRC_HEADER_ERROR
(2142,X'85E')"IBM MQ标头结构无效。
MQRC_IIH_ERROR
(2148 , X'864 ') IMS 信息头结构无效。
MQRC_LOCAL_UOW_CONFLICT
(2352 , X' 930 ') 全局工作单元与本地工作单元冲突。
MQRC_MD_ERROR
(2026,X'7EA')报文描述符无效。
MQRC_MDE_ERROR
(2248,X'8C8')报文描述符扩展名无效。
MQRC_MISSING_REPLY_TO_Q
(2027,X'7EB') 缺少回复队列。
MQRC_MISSING_WIH
(2332,X'91C')报文数据不以 MQWIH 开头。
MQRC_MSG_FLAGS_ERROR
(2249,X'8C9')报文标志无效。
MQRC_MSG_SEQ_NUMBER_ERROR
(2250,X'8CA')报文序列号无效。
MQRC_MSG_TOO_BIG_FOR_Q
(2030,X'7EE')报文长度超过队列最大值。
MQRC_MSG_TOO_BIG_FOR_Q_MGR
(2031,X'7EF') 报文长度超过队列管理器的最大值。
MQRC_MSG_TYPE_ERROR
(2029,X'7ED')报文描述符中的报文类型无效。
MQRC_MULTIPLE_原因
(2136 , X'858 ') 返回了多个原因码。
MQRC_NO_DESTINATIONS_AVAILABLE
(2270,X'8DE')没有可用的目标队列。
MQRC_NOT_AUTHORIZED
(2035, X'7F3') 未获得访问授权。
MQRC_OBJECT_DAMAGED
(2101 , X'835 ') 对象已损坏。
MQRC_OBJECT_IN_USE
(2042,X'7FA')对象已打开,但选项冲突。
MQRC_OBJECT_LEVEL_不兼容
(2360 , X' 938 ') 对象级别不兼容。
MQRC_OBJECT_NAME_ERROR
(2152 , X'868 ') 对象名无效。
MQRC_OBJECT_NOT_UNIQUE
(2343 , X' 927 ') 对象不唯一。
MQRC_OBJECT_Q_MGR_NAME_ERROR
(2153 , X'869 ') 对象队列管理器名称无效。
MQRC_OBJECT_RECORDS_ERROR
(2155,X'86B')对象记录无效。
MQRC_OBJECT_TYPE_ERROR
(2043,X'7FB')对象类型无效。
MQRC_OD_ERROR
(2044,X'7FC')对象描述符结构无效。
MQRC_OFFSET_ERROR
(2251,X'8CB')报文段偏移无效。
MQRC_OPTIONS_ERROR
(2046,X'7FE') 选项无效或不一致。
MQRC_ORIGINAL_LENGTH_ERROR
(2252,X'8CC')原始长度无效。
MQRC_PAGESET_ERROR
(2193 , X'891 ') 访问页集数据集时出错。
MQRC_PAGESET_FULL
(2192 , X'890 ') 外部存储介质已满。
MQRC_PCF_ERROR
(2149 , X'865 ') PCF 结构无效。
MQRC_PERSISTENCE_ERROR
(2047,X'7FF') 持久性无效。
MQRC_PERSISTENT_NOT_ALLOWED
(2048 , X'800 ') 队列不支持持久消息。
MQRC_PMO_ERROR
(2173,X'87D') 看跌期权结构无效。
MQRC_PMO_RECORD_FLAGS_ERROR
(2158,X'86E')报文记录标志无效。
MQRC_PRIORITY_ERROR
(2050 , X'802 ') 消息优先级无效。
MQRC_PUBLICATION_FAILURE
(2502,X'9C6')该出版物尚未交付给任何订户。
MQRC_PUT_禁止
(2051 , X'803 ') 对队列禁止 Put 调用。
MQRC_PUT_MSG_RECORDS_ERROR
(2159,X'86F')输入的报文记录无效。
MQRC_Q_DELETED
(2052 , X'804 ') 队列已删除。
MQRC_Q_FULL
(2053 , X'805 ') 队列已包含最大消息数。
MQRC_Q_MGR_NAME_ERROR
(2058, X'80A') 队列管理器名称无效或者未知。
MQRC_Q_MGR_NOT_AVAILABLE
(2059, X'80B') 队列管理器针对连接不可用。
MQRC_Q_MGR_QUIESCING
(2161, X'871') 队列管理器正在停顿。
MQRC_Q_MGR_STOPPING
(2162, X'872') 队列管理器正在关闭。
MQRC_Q_SPACE_NOT_AVAILABLE
(2056 , X'808 ') 磁盘上没有可用于队列的空间。
MQRC_Q_TYPE_ERROR
(2057 , X'809 ') 队列类型无效。
MQRC_RECS_PRESENT_ERROR
(2154,X'86A')当前记录数无效。
MQRC_REMOTE_Q_NAME_ERROR
(2184 , X'888 ') 远程队列名无效。
MQRC_REPORT_OPTIONS_ERROR
(2061,X'80D') 报文描述符中的报告选项无效。
MQRC_RESOURCE_PROBLEM
(2102, X'836') 没有足够系统资源可用。
MQRC_RESPONSE_RECORDS_ERROR
(2156,X'86C') 响应记录无效。
MQRC_RFH_ERROR
(2334,X'91E') MQRFH 或MQRFH2结构无效。
MQRC_RMH_ERROR
(2220,X'8AC')参考报文头结构无效。
MQRC_SECURITY_ERROR
(2063, X'80F') 发生了安全性错误。
MQRC_SEGMENT_LENGTH_ZERO
(2253,X'8CD')报文段中的数据长度为零。
MQRC_SELECTION_NOT_AVAILABLE
2551X'09F7') 该出版物可能有一个订阅者,但队列管理器无法检查是否向该订阅者发送该出版物。
MQRC_STOPPED_BY_CLUSTER_EXIT
(2188,X'88C') 集群工作负载退出拒绝调用。
MQRC_STORAGE_CLASS_ERROR
(2105 , X'839 ') 存储类错误。
MQRC_STORAGE_MEDIUM_FULL
(2192 , X'890 ') 外部存储介质已满。
MQRC_STORAGE_NOT_AVAILABLE
(2071, X'817') 没有足够的存储空间可用。
MQRC_SUPPRESSED_BY_EXIT
(2109,X'83D')退出程序抑制了调用。
MQRC_SYNCPOINT_LIMIT_已达到
(2024,X'7E8')当前工作单元内无法处理更多信息。
MQRC_SYNCPOINT_NOT_AVAILABLE
(2072 , X'818 ') 同步点支持不可用。
MQRC_TM_ERROR
(2265,X'8D9')触发报文结构无效。
MQRC_TMC_ERROR
(2191,X'88F')字符触发报文结构无效。
MQRC_UNEXPECTED_ERROR
(2195, X'893') 发生了意外错误。
MQRC_UNKNOWN_ALIAS_BASE_Q
(2082 , X'822 ') 未知别名基本队列。
MQRC_UNKNOWN_DEF_XMIT_Q
(2197 , X'895 ') 未知缺省传输队列。
MQRC_UNKNOWN_OBJECT_NAME
(2085 , X'825 ') 未知对象名。
MQRC_UNKNOWN_OBJECT_Q_MGR
(2086 , X'826 ') 未知对象队列管理器。
MQRC_UNKNOWN_REMOTE_Q_MGR
(2087 , X'827 ') 未知远程队列管理器。
MQRC_UNKNOWN_XMIT_Q
(2196 , X'894 ') 未知传输队列。
MQRC_UOW_ENLISTMENT_ERROR
(2354 , X' 932 ') 在全局工作单元中登记失败。
MQRC_UOW_MIX_NOT_SUPPORTED
(2355 , X' 933 ') 不支持混合工作单元调用。
MQRC_UOW_NOT_AVAILABLE
(2255,X'8CF')队列管理器无法使用的工作单位。
MQRC_WIH_ERROR
(2333,X'91D')MQWIH 结构无效。
MQRC_不法 _cf_level
(2366,X'93E')耦合设备结构水平错误。
MQRC_不法 _md_version
(2257,X'8D1')提供的 MQMD 版本错误。
MQRC_XMIT_Q_TYPE_ERROR
(2091,X'82B')传输队列不在本地。
MQRC_XMIT_Q_USAGE_ERROR
(2092,X'82C')传输队列使用错误。
MQRC_XQH_ERROR
(2260,X'8D4')传输队列标头结构无效。

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

使用说明

  1. MQPUT 和 MQPUT1 调用都可用于将消息放入队列; 要使用的调用取决于以下情况:
    • 使用 MQPUT 调用将多条消息放在 同一 队列上。

      首先发出指定 MQOO_OUTPUT 选项的 MQOPEN 调用,然后发出一个或多个 MQPUT 请求以向队列添加消息; 最后使用 MQCLOSE 调用关闭队列。 这将提供比重复使用 MQPUT1 调用更好的性能。

    • 使用 MQPUT1 调用仅将 一条 消息放入队列中。

      此调用将 MQOPEN , MQPUT 和 MQCLOSE 调用封装到单个调用中,从而最大限度减少必须发出的调用数。

  2. 如果应用程序在不使用消息组的情况下将消息序列放在同一队列上,那么在满足特定条件时将保留这些消息的顺序。 但是,在大多数环境中, MQPUT1 调用不满足这些条件,因此不会保留消息顺序。 必须改为在这些环境中使用 MQPUT 调用。 请参阅 MQPUT 使用说明 以获取详细信息。
  3. MQPUT1 调用可用于将消息放入分发列表。 有关此操作的常规信息,请参阅 MQOPEN 和 MQPUT 调用的用法说明。
    在以下环境中支持分发列表:
    • [AIX]AIX®
    • [IBM i]IBM i
    • [Linux]Linux®
    • [Windows]Windows
    以及用于连接到这些系统的 IBM MQ 客户机。
    使用 MQPUT1 调用时,以下差异适用:
    1. 如果应用程序提供 MQRR 响应记录,那么必须使用 MQOD 结构提供这些记录; 不能使用 MQPMO 结构提供这些记录。
    2. 响应记录中的 MQPUT1 从不返回原因码 MQRC_OPEN_FAILED; 如果队列未能打开,那么该队列的响应记录包含由打开操作生成的原因码。

      如果队列的打开操作成功,并且完成代码为 MQCC_WARNING ,那么该队列的响应记录中的完成代码和原因码将替换为由放置操作生成的完成代码和原因码。

      与 MQOPEN 和 MQPUT 调用一样,仅当调用结果对于分发列表中的所有队列都不相同时,队列管理器才会设置响应记录 (如果提供); 这由调用完成时使用原因码 MQRC_MULTIPLE_REASON 指示。

  4. 如果使用 MQPUT1 调用将消息放在集群队列上,那么该调用的行为就像在 MQOPEN 调用上指定了 MQOO_BIND_NOT_FIXED 一样。
  5. 如果消息在应用程序消息数据的开头放置了一个或多个 IBM MQ 头结构,那么队列管理器将对头结构执行某些检查以验证它们是否有效。 有关此操作的更多信息,请参阅 MQPUT 调用的用法说明。
  6. 如果出现多个警告情境 (请参阅 CompCode 参数) ,那么返回的原因码是以下列表中适用的第一个原因码:
    1. MQRC_MULTIPLE_原因
    2. MQRC_INCOMPLETE_MSG
    3. MQRC_INCOMPLETE_GROUP
    4. MQRC_PRIORITY_EXCEEDS_MAXIMUM 或 MQRC_UNKNOWN_REPORT_OPTION
  7. 对于 Visual Basic 编程语言,以下要点适用:
    • 如果 Buffer 参数的大小小于 BufferLength 参数指定的长度,那么调用将失败,原因码为 MQRC_BUFFER_LENGTH_ERROR。
    • Buffer 参数声明为 String类型。 如果要放置在队列上的数据不是 String类型,请使用 MQPUT1Any 调用来代替 MQPUT1。

      MQPUT1Any 调用具有与 MQPUT1 调用相同的参数,但 Buffer 参数声明为 Any类型,允许将任何类型的数据放在队列上。 但是,这意味着无法检查 Buffer 以确保其大小至少为 BufferLength 字节。

  8. 发出带有 MQPMO_SYNCPOINT 的 MQPUT1 调用时,缺省行为会发生更改,因此 put 操作将异步完成。 这可能导致依靠返回的 MQOD 和 MQMD 结构中的某些字段的部分应用程序行为发生更改(但是现在这些字段现在包含未定义的值)。 应用程序可以指定 MQPMO_SYNC_RESPONSE 以确保同步执行 put 操作并完成所有相应的字段值。

C 调用

MQPUT1 (Hconn, &ObjDesc, &MsgDesc, &PutMsgOpts,
       BufferLength, Buffer, &CompCode, &Reason);
按如下所示声明参数:
MQHCONN  Hconn;         /* Connection handle */
MQOD     ObjDesc;       /* Object descriptor */
MQMD     MsgDesc;       /* Message descriptor */
MQPMO    PutMsgOpts;    /* Options that control the action of MQPUT1 */
MQLONG   BufferLength;  /* Length of the message in Buffer */
MQBYTE   Buffer[n];     /* Message data */
MQLONG   CompCode;      /* Completion code */
MQLONG   Reason;        /* Reason code qualifying CompCode */

COBOL 调用

     CALL 'MQPUT1' USING HCONN, OBJDESC, MSGDESC, PUTMSGOPTS,
                         BUFFERLENGTH, BUFFER, COMPCODE, REASON.
按如下所示声明参数:
**   Connection handle
 01  HCONN         PIC S9(9) BINARY.
**   Object descriptor
 01  OBJDESC.
     COPY CMQODV.
**   Message descriptor
 01  MSGDESC.
     COPY CMQMDV.
**   Options that control the action of MQPUT1
 01  PUTMSGOPTS.
     COPY CMQPMOV.
**   Length of the message in BUFFER
 01  BUFFERLENGTH  PIC S9(9) BINARY.
**   Message data
 01  BUFFER        PIC X(n).
**   Completion code
 01  COMPCODE      PIC S9(9) BINARY.
**   Reason code qualifying COMPCODE
 01  REASON        PIC S9(9) BINARY.

PL/I 调用

call MQPUT1 (Hconn, ObjDesc, MsgDesc, PutMsgOpts, BufferLength, Buffer,
            CompCode, Reason);
按如下所示声明参数:
dcl Hconn         fixed bin(31);  /* Connection handle */
dcl ObjDesc       like MQOD;      /* Object descriptor */
dcl MsgDesc       like MQMD;      /* Message descriptor */
dcl PutMsgOpts    like MQPMO;     /* Options that control the action of
                                     MQPUT1 */
dcl BufferLength  fixed bin(31);  /* Length of the message in Buffer */
dcl Buffer        char(n);        /* Message data */
dcl CompCode      fixed bin(31);  /* Completion code */
dcl Reason        fixed bin(31);  /* Reason code qualifying CompCode */

高级汇编程序调用

         CALL MQPUT1,(HCONN,OBJDESC,MSGDESC,PUTMSGOPTS,BUFFERLENGTH,   X
               BUFFER,COMPCODE,REASON)
按如下所示声明参数:
HCONN         DS       F      Connection handle
OBJDESC       CMQODA   ,      Object descriptor
MSGDESC       CMQMDA   ,      Message descriptor
PUTMSGOPTS    CMQPMOA  ,      Options that control the action of MQPUT1
BUFFERLENGTH  DS       F      Length of the message in BUFFER
BUFFER        DS       CL(n)  Message data
COMPCODE      DS       F      Completion code
REASON        DS       F      Reason code qualifying COMPCODE
[Windows]

Visual Basic 调用

MQPUT1 Hconn, ObjDesc, MsgDesc, PutMsgOpts, BufferLength, Buffer,
       CompCode, Reason
按如下所示声明参数:
Dim Hconn        As Long   'Connection handle'
Dim ObjDesc      As MQOD   'Object descriptor'
Dim MsgDesc      As MQMD   'Message descriptor'
Dim PutMsgOpts   As MQPMO  'Options that control the action of MQPUT1'
Dim BufferLength As Long   'Length of the message in Buffer'
Dim Buffer       As String 'Message data'
Dim CompCode     As Long   'Completion code'
Dim Reason       As Long   'Reason code qualifying CompCode'