OpenTP1 メッセージキューイング機能 TP1/Message Queue プログラム作成リファレンス
MQPUT命令 − メッセージの登録
機能
MQPUT命令で,メッセージをキューまたは配布リストへ登録できます。このとき,キューはオープンされている必要があります。
形式
C言語の場合
MQPUT(MQHCONN Hconn, MQHOBJ Hobj, PMQVOID MsgDesc, PMQVOID PutMsgOpts, MQLONG BufferLength, PMQVOID Buffer, PMQLONG CompCode, PMQLONG Reason)
COBOL言語の場合
CALL 'MQPUT' USING HCONN, HOBJ, MSGDESC, PUTMSGOPTS, BUFFERLENGTH, BUFFER, COMPCODE, REASON.
引数
コネクションハンドルです。
キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。
オブジェクトハンドルです。
メッセージを登録するキューを示すハンドルです。MQOO_OUTPUTオプションを指定したMQOPEN命令の戻り値を指定してください。
● MsgDesc(MQMD構造体) −input/output
メッセージ記述子です。
送信するメッセージの属性を記述する構造体です。また,登録後のメッセージに関する情報が返されます。
詳細については,「1. データタイプ」の「MQMD構造体 − メッセージ記述子」を参照してください。
アプリケーションがバージョン1のMQMD構造体を指定すると,返却されるメッセージは,バージョン2のMQMD構造体にだけ存在するフィールドの値を指定するために,アプリケーションメッセージデータの前にMQMDE構造体を付加できます。そのとき,MQMDE構造体が存在することを示すために,MQMD構造体のFormatフィールドには,MQFMT_MD_EXTENSIONを設定しなければなりません。
詳細については,「1. データタイプ」の「MQMDE構造体 − メッセージ記述子の拡張」を参照してください。
● PutMsgOpts(MQPMO構造体) −input/output
メッセージ登録オプションです。
詳細については,「1. データタイプ」の「MQPMO構造体 − メッセージ登録オプション」を参照してください。
● BufferLength(MQLONG型) −input
メッセージデータを格納したバッファのバイト長です。
0も指定できます。このとき,アプリケーションデータのないメッセージを登録するものとみなされます。BufferLengthの上限は状況によって異なります。
● Buffer(MQBYTE型×BufferLength) −input
メッセージデータを格納したバッファです。バッファには,メッセージ中のデータに適したバウンダリ調整が必要です。多くのメッセージ(MQヘッダ構造体のあるメッセージを含む)には4バイト単位の調整が適していますが,より厳しい調整が必要なメッセージもあります。例えば,64ビット2進整数を含めるメッセージには8バイト単位のバウンダリ調整が必要です。
バッファ内に文字または数値がある場合,MsgDesc引数のCodedCharSetIdフィールドとEncodingフィールドに,適切な値を指定してください。これらの値によって,受信側でデータを適切な文字セットとマシンコード形式に変換できます。
C言語では,この引数をvoid型のポインタとして指定します。したがって,どんなデータタイプのアドレスでも,引数として指定できます。
BufferLength引数に0を指定した場合,Buffer引数は参照されません。したがって,C言語のプログラムでは,この引数のアドレスとしてヌルを指定できます。
完了コードです。
次のどれかが返されます。
理由コードです。
CompCode引数がMQCC_OKの場合
| 理由コード | 数値 | 意味 |
|---|---|---|
| MQRC_NONE | 0 | 理由コードはありません。 |
CompCode引数がMQCC_WARNINGの場合
| 理由コード | 数値 | 意味 |
|---|---|---|
| MQRC_INCOMPLETE_GROUP | 2241 | メッセージグループが完全ではありません。 |
| MQRC_INCOMPLETE_MSG | 2242 | 論理メッセージが完全ではありません。 |
| MQRC_INCONSISTENT_PERSISTENCE | 2185 | 永続性指定が矛盾しています。 |
| MQRC_INCONSISTENT_UOW | 2245 | コミット単位の指定が矛盾しています。 |
| MQRC_MULTIPLE_REASONS | 2136 | 複数の理由コードが返されました。 |
| MQRC_PRIORITY_EXCEEDS_MAXIMUM | 2049 | メッセージ優先度が最大値を超えています。 |
| MQRC_UNKNOWN_REPORT_OPTION | 2104 | メッセージ記述子中の報告オプションを認識できません。 |
CompCode引数がMQCC_FAILEDの場合
| 理由コード | 数値 | 意味 |
|---|---|---|
| MQRC_BUFFER_ERROR | 2004 | バッファの引数が不正です。 |
| MQRC_BUFFER_LENGTH_ERROR | 2005 | バッファ長の引数が不正です。 |
| MQRC_CLUSTER_RESOLUTION_ERROR | 2189 | クラスタ名称の解決に失敗しました。 |
| MQRC_CLUSTER_RESOURCE_ERROR | 2269 | クラスタリソースのエラーです。 |
| MQRC_CONTEXT_HANDLE_ERROR | 2097 | 参照先のキューハンドルにコンテキストが保存されていません。 |
| MQRC_CONTEXT_NOT_AVAILABLE | 2098 | 参照先のキューハンドルのコンテキストが不正です。 |
| MQRC_DH_ERROR | 2135 | 配布リストの構造体が不正です。 |
| MQRC_EXPIRY_ERROR | 2013 | メッセージ保持時間が不正です。 |
| MQRC_FEEDBACK_ERROR | 2014 | 報告メッセージ返答コードが不正です。 |
| MQRC_HCONN_ERROR | 2018 | コネクションハンドルが不正です。 |
| MQRC_HOBJ_ERROR | 2019 | オブジェクトハンドルが不正です。 |
| MQRC_INCOMPLETE_GROUP | 2241 | メッセージグループが完全ではありません。 |
| MQRC_INCOMPLETE_MSG | 2242 | 論理メッセージが完全ではありません。 |
| MQRC_INCONSISTENT_PERSISTENCE | 2185 | 永続性指定が矛盾しています。 |
| MQRC_INCONSISTENT_UOW | 2245 | コミット単位の指定が矛盾しています。 |
| MQRC_MD_ERROR | 2026 | メッセージ記述子が不正です。 |
| MQRC_MDE_ERROR | 2248 | メッセージ記述子の拡張子が不正です。 |
| MQRC_MISSING_REPLY_TO_Q | 2027 | 応答キューがありません。 |
| MQRC_MSG_FLAGS_ERROR | 2249 | メッセージフラグが不正です。 |
| MQRC_MSG_SEQ_NUMBER_ERROR | 2250 | メッセージシーケンス番号が不正です。 |
| MQRC_MSG_TOO_BIG_FOR_Q | 2030 | メッセージ長がキューに定義された最大値を超えています。 |
| MQRC_MSG_TYPE_ERROR | 2029 | メッセージ記述子中のメッセージタイプが不正です。 |
| MQRC_MULTIPLE_REASONS | 2136 | 複数の理由コードが返されています。 |
| MQRC_NO_DESTINATIONS_AVAILABLE | 2270 | 利用可能なあて先キューが存在しません。 |
| MQRC_NOT_OPEN_FOR_OUTPUT | 2039 | キューが登録用にオープンされていません。 |
| MQRC_NOT_OPEN_FOR_PASS_ALL | 2093 | キューが全コンテキスト引き渡し用にオープンされていません。 |
| MQRC_NOT_OPEN_FOR_PASS_IDENT | 2094 | キューが識別コンテキスト引き渡し用にオープンされていません。 |
| MQRC_NOT_OPEN_FOR_SET_ALL | 2095 | キューが全コンテキスト設定用にオープンされていません。 |
| MQRC_NOT_OPEN_FOR_SET_IDENT | 2096 | キューが識別コンテキスト設定用にオープンされていません。 |
| MQRC_OBJECT_DAMAGED | 2101 | オブジェクトが破損しています。 |
| MQRC_OFFSET_ERROR | 2251 | メッセージセグメントのオフセットが不正です。 |
| MQRC_OPEN_FAILED | 2137 | キューのオープンに失敗しました。 |
| MQRC_OPTIONS_ERROR | 2046 | オプションが不正です。または,指定されていません。 |
| MQRC_ORIGINAL_LENGTH_ERROR | 2252 | 元のメッセージの長さが不正です。 |
| MQRC_PCF_ERROR | 2149 | PCF構造体が不正です。 |
| MQRC_PERSISTENCE_ERROR | 2047 | メッセージ永続性が不正です。 |
| MQRC_PERSISTENT_NOT_ALLOWED | 2048 | キューは永続メッセージをサポートしていません。 |
| MQRC_PMO_ERROR | 2173 | メッセージ登録オプションの構造体が不正です。 |
| MQRC_PMO_RECORD_FLAGS_ERROR | 2158 | メッセージ登録レコードのフラグが不正です |
| MQRC_PRIORITY_ERROR | 2050 | メッセージ優先度が不正です。 |
| MQRC_PUT_INHIBITED | 2051 | 指定されたキューへの登録は禁止されています。 |
| MQRC_PUT_MSG_RECORDS_ERROR | 2159 | メッセージ登録レコードが不正です。 |
| MQRC_Q_DELETED | 2052 | キューが削除されています。 |
| MQRC_Q_FULL | 2053 | キューが満杯です。 |
| MQRC_Q_SPACE_NOT_AVAILABLE | 2056 | キューに対応するディスクに空き領域がありません。 |
| MQRC_RECS_PRESENT_ERROR | 2154 | 不正なレコードが存在します。 |
| MQRC_REPORT_OPTIONS_ERROR | 2061 | メッセージ記述子中の報告オプションが不正です。 |
| MQRC_RESOURCE_PROBLEM | 2102 | システム資源が不足しています。 |
| MQRC_RESPONSE_RECORDS_ERROR | 2156 | 応答レコードが不正です。 |
| MQRC_SEGMENT_LENGTH_ZERO | 2253 | メッセージセグメント長が0です。 |
| MQRC_STORAGE_NOT_AVAILABLE | 2071 | 記憶容量が不足しています。 |
| MQRC_SYNCPOINT_NOT_AVAILABLE | 2072 | 同期点処理はできません。 |
| MQRC_UNEXPECTED_ERROR | 2195 | 予期しないエラーが発生しました。 |
| MQRC_UOW_NOT_AVAILABLE | 2255 | コミット単位ではキューマネジャを使用できません。 |
| MQRC_WRONG_MD_VERSION | 2257 | MQMD構造体で指定されたバージョンが誤っています。 |
詳細は,「付録B.2 理由コード」を参照してください。
注意事項
All Rights Reserved. Copyright (C) 2006, 2011, Hitachi, Ltd.
(C) Copyright International Business Machines Corporation 1994, 2003. All rights reserved.