Hitachi

OpenTP1 Version 7 OpenTP1 メッセージキューイング機能 TP1/Message Queue プログラム作成の手引


9.2.3 MQPMO構造体によるオプションの指定

MQPMO構造体は,MQPUT命令とMQPUT1命令にオプションを渡すために使用します。

次に示すフィールドがあります。

各フィールドについて説明します。

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 配布リスト」を参照してください。