9.2.3 MQPMO構造体によるオプションの指定
MQPMO構造体は,MQPUT命令とMQPUT1命令にオプションを渡すために使用します。
次に示すフィールドがあります。
-
StrucId
-
Version
-
Options
-
Context
-
ResolvedQName
-
ResolvedQMgrName
各フィールドについて説明します。
- StrucId
-
メッセージ登録オプション構造体を識別します。4文字のフィールドです。常にMQPMO_STRUC_IDを指定してください。
- Version
-
構造体のバージョン番号を記述します。デフォルトはMQPMO_VERSION_1です。MQPMO_VERSION_2を指定すると,配布リストを使用できます。MQPMO_CURRENT_VERSIONを指定すると,アプリケーションは常に最新のバージョンを使用します。
- Options
-
次に示す項目を制御します。
-
登録操作がトランザクションに参加するかどうか
-
メッセージに関連づけるコンテキスト情報
-
コンテキスト情報の取得先
-
キューマネジャが停止状態のときに命令が失敗するかどうか
-
グループ化とセグメント分割を許可するかどうか
-
新規のメッセージ識別子と相関識別子の生成
-
メッセージとセグメントがキューに登録される順序
Optionsフィールドをデフォルトの値(MQPMO_NONE)にする場合は,関連するデフォルトのコンテキスト情報が登録するメッセージに設定されます。
-
- Context
-
Optionsフィールドで要求した場合に,コンテキスト情報のコピー元とするキューハンドルの名前です。
- ResolvedQName
-
メッセージを受信するため,別名の解決後にオープンされたキューの名前です。出力フィールドです。
- ResolvedQMgrName
-
ResolvedQNameフィールドのキューを別名の解決後に保持するキューマネジャの名前です。出力フィールドです。
MQPMO構造体は配布リストで必要なフィールドも提供します。配布リストを使用する場合はバージョン2のMQPMO構造体を使用してください。
バージョン2のMQPMO構造体には,次に示すフィールドがあります。
- Version
-
構造体のバージョン番号を記述します。配布リストでは,MQPMO_VERSION_2を指定します。
- RecsPresent
-
配布リストにあるキューの数です。つまり,登録メッセージレコード(MQPMR構造体)および応答レコード(MQRR構造体)の数です。
指定した値は,MQOPEN命令で提供されたオブジェクトレコードの数と同じになることがあります。しかし,MQOPEN命令で提供されたオブジェクトレコードの数よりも値が小さい場合,または登録メッセージレコードが提供されない場合には,メッセージ記述子によって提供されるデフォルトの値から,定義されないキューの値が取得されます。また,提供されたオブジェクトレコードの数よりも値が大きい場合には,余分な登録メッセージレコードは無視されます。
次に示すどちらかを実行することをお勧めします。
-
各あて先から報告または応答を受信したい場合は,MQOR構造体と同じ値を入力して,MQPMR構造体にあるMsgIdフィールドを使用してください。どちらの場合でもMsgIdフィールドを0にするか,またはMQPMO_NEW_MSG_IDを指定します。
キューにメッセージを登録したときは,キューマネジャで生成したMsgIdフィールドの値をMQPMR構造体で利用できます。ユーザは各報告および応答に対応するあて先を識別するために,これらの値を使用できます。
-
報告または応答を受信しない場合は,次に示すどちらかを選択してください。
1.失敗したあて先を即時に識別したい場合は,RecsPresentフィールドにMQOR構造体と同じ値を入力して,MQRR構造体を指定してください。MQPMR構造体は指定しないでください。
2.失敗したあて先を識別しない場合は,RecsPresentフィールドに0を入力してください。MQPMR構造体およびMQRR構造体は指定しないでください。
- 注意
-
MQPUT1命令を使用している場合は,応答レコードポインタおよび応答レコードオフセットの数は0にしてください。
-
- PutMsgRecFields
-
各登録メッセージレコード(MQPMR構造体)にあるフィールドを示します。
該当するフィールドのリストについては,「9.6.2(1) MQPMR構造体の使用」を参照してください。
- PutMsgRecPtrおよびPutMsgRecOffsest
-
登録メッセージレコードの位置を示すために,ポインタ(C言語)およびオフセット(COBOL言語)が使用されます。
最初の登録メッセージレコードのポインタを指定するにはPutMsgRecPtrフィールドを使用してください。最初の登録メッセージレコードのオフセットを指定するにはPutMsgRecOffsestフィールドを使用してください。これはMQPMO構造体の先頭からのオフセットです。PutMsgRecFieldsフィールドによっては,PutMsgRecPtrまたはPutMsgRecOffsestフィールドにヌル以外の値を入力してください。
- ResponseRecPtrおよびResponseRecOffset
-
応答レコードの位置を示すために,ポインタ(C言語)およびオフセット(COBOL言語)が使用されます。
最初の応答レコードのポインタを指定するにはResponseRecPtrフィールドを使用してください。最初の応答レコードのオフセットを指定するにはResponseRecOffsetフィールドを使用してください。これはMQPMO構造体の先頭からのオフセットです。ResponseRecPtrまたはResponseRecOffsetフィールドにはヌル以外の値を入力してください。
- 注意
-
配布リストにメッセージを登録するためにMQPUT1命令を使用している場合は,ResponseRecPtrフィールドはヌルまたは0にし,ResponseRecOffsetフィールドは0にしてください。
配布リストにメッセージを登録する方法については,「9.6 配布リスト」を参照してください。