• 検索結果がありません。

MQPMRF_ACCOUNTING_TOKEN

ドキュメント内 TP1/Message Queue プログラム作成リファレンス (ページ 158-163)

課金トークンフィールドが存在することを示します。

このフラグが指定された場合,MQPMO_SET_IDENTITY_CONTEXT または

MQPMO_SET_ALL_CONTEXT が Options フィールドに指定されなければなりません。この条件が 満たされない場合,MQRC_PMO_RECORD_FLAGS_ERROR の理由コードで失敗します。

MQPMR 構造体のフィールドが存在しない場合,次のフラグを指定できます。

MQPMRF_NONE

登録メッセージレコードが存在しないことを示します。

この値が指定されると,RecsPresent フィールドは 0 でなければなりません。同時に,

PutMsgRecOffset フィールドおよび PutMsgRecPtr フィールドは,どちらも 0 でなければなりません。

MQPMRF_NONE はプログラムの文書化のために定義されています。値としては 0 が定義されていま すが,プログラムを文書化する以外の目的はありません。

次の場合,MQRC_PMO_RECORD_FLAGS_ERROR の理由コードで失敗します。

• PutMsgRecFields フィールドに不正なフラグが含まれている場合

• 登録メッセージレコードが指定されているが,PutMsgRecFields フィールドが MQPMRF_NONE で ある場合

これは入力用のフィールドです。

このフィールドの初期値は MQPMRF_NONE です。

このフィールドは,Version フィールドの値が MQPMO_VERSION_2 以降の場合だけ有効です。

● PutMsgRecOffset(MQLONG 型) 最初の登録メッセージレコードまでのオフセット

MQPMO 構造体の先頭から最初の MQPMR 構造体登録メッセージレコードまでのバイトオフセットで す。オフセットは正の場合も負の場合もあります。PutMsgRecOffset フィールドは,配布リストにメッ セージを登録するときだけ使用されます。RecsPresent フィールドが 0 の場合は無視されます。

配布リストにメッセージが登録されるとき,一つ以上の MQPMR 構造体登録メッセージレコードの配列 があて先ごとのメッセージ属性を指定するために指定されなければなりません。指定する属性を次に示し ます。

• メッセージ識別子

• 相関識別子

• グループ識別子

• フィードバック値

• 課金トークン

この属性をすべて指定する必要はありません。ただし,どの属性を選択しても,フィールドは正しい順序 に指定されなければなりません。詳細については,この章の「MQPMR 構造体 − 登録メッセージレ

コード」を参照してください。

配布リストのオープン時に,MQOD 構造体によって指定されたオブジェクトレコードと同じ数の登録メッ セージレコードが存在しなければなりません。登録メッセージレコードは,対応するオブジェクトレコー ドによって指定されるキューに対してメッセージ属性を与えます。配布リストのオープンに失敗したキュー には,配列の適当な位置に配置される登録メッセージレコードが登録されなければなりません。その場合,

メッセージ属性は無視されます。

登録メッセージレコードの数が,オブジェクトレコードの数と異なることがあります。オブジェクトレコー ドより登録メッセージレコードが少ない場合,登録メッセージレコードのないあて先のメッセージ属性は,

メッセージ記述子 MQMD 構造体の対応するフィールドの属性が指定されます。オブジェクトレコードよ り登録メッセージレコードが多い場合,必要数以上のレコードは使用されません。ただし,使用されない レコードにもアクセスできなければなりません。

登録メッセージレコードの指定は任意です。ただし,RecsPresent フィールドがある場合は,指定しなけ ればなりません。

登録メッセージレコードは MQOD 構造体のオブジェクトレコードと同様の方法で指定できます。

PutMsgRecOffset フィールドのオフセットを指定するか,または PutMsgRecPtr フィールドのアドレス を使用して指定してください。詳細は,この章の「MQDH 構造体 − 配布ヘッダ」で ObjectRecOffset フィールドを参照してください。

PutMsgRecOffset フィールドと PutMsgRecPtr フィールドは同時に使用できません。両方のフィールド が 0 以外の場合,MQRC_PUT_MSG_RECORDS_ERROR の理由コードで失敗します。

これは入力用のフィールドです。

このフィールドの初期値は 0 です。

このフィールドは,Version フィールドの値が MQPMO_VERSION_2 以降の場合だけ有効です。

● PutMsgRecPtr(MQPTR 型) 最初の登録メッセージレコードのアドレス

最初の登録メッセージレコードのアドレスです。PutMsgRecPtr フィールドは,配布リストにメッセージ が登録されたときだけ使用されます。RecsPresent フィールドが 0 の場合は無視されます。

PutMsgRecPtr フィールドまたは PutMsgRecOffset フィールドのどちらかを登録メッセージレコードを 指定するのに使用できます。ただし,同時に使用できません。詳細については,「PutMsgRecOffset フィー ルド」を参照してください。PutMsgRecPtr フィールドが使用されない場合は,ヌルポインタか 0 を設定 しなければなりません。

これは入力用のフィールドです。

このフィールドの初期値は,ポインタをサポートしているプログラミング言語ではヌルポインタです。文 字列の場合はヌル文字列です。

このフィールドは,Version フィールドの値が MQPMO_VERSION_2 以降の場合だけ有効です。

注意事項

プログラミング言語がポインタのデータ型をサポートしていないオペレーティングシステムでは,

このフィールドは,初期値がすべてヌル文字列の,適当な長さのバイト文字列として宣言されます。

● RecsPresent(MQLONG 型) 登録メッセージレコード数または応答レコード数

アプリケーションによって指定された MQPMR 構造体の登録メッセージレコード数または MQRR 構造体 の応答レコード数です。メッセージが配布リストに登録されたときだけ,この数が 0 より大きくなります。

登録メッセージレコードまたは応答レコードは任意に選択できます。アプリケーションはどちらのレコー ドも指定しなかったり,どちらか一つのレコードだけ選択したりできます。ただし,アプリケーションが 両方のレコードを指定する場合は,それぞれの RecsPresent フィールドのレコードを指定しなければなり ません。

RecsPresent フィールドの値は,配布リストのあて先の数と同じである必要はありません。指定された値 が必要数より大きい場合,必要数以上のレコードは使用されません。必要数より少ないレコードが指定さ れた場合,登録メッセージレコードがないあて先のメッセージのプロパティ値は初期値を取ります。詳細 については,「PutMsgRecOffset フィールド」を参照してください。

RecsPresent フィールドの値が 0 より小さい,または 0 より大きいがメッセージは配布リストに登録され ない場合,理由コード MQRC_RECS_PRESENT_ERROR で失敗します。

これは入力用のフィールドです。

このフィールドの初期値は 0 です。

このフィールドは,Version フィールドの値が MQPMO_VERSION_2 以降の場合だけ有効です。

● ResolvedQMgrName(MQCHAR48 型) 受信キューマネジャ名

ResolvedQName のキューを定義しているキューマネジャの名称(実名)です。

ローカルキューマネジャが名称解決を実行したあとのあて先キューマネジャの名前です。返される名前は,

ResolvedQName フィールドに指定されたキューを保持するキューマネジャの名前です。

ResolvedQMgrName フィールドは,ローカルキューマネジャの名前になることがあります。

空白でない値が返されるのは,オブジェクトが単一のキューである場合だけです。オブジェクトが配布リ ストである場合,返される値は未定義です。

これは出力用のフィールドです。

このフィールドの長さは,MQ_Q_MGR_NAME_LENGTH に定義されています。

このフィールドの初期値は,C 言語ではヌル文字列です。そのほかのプログラミング言語では,48 個の空 白です。

● ResolvedQName(MQCHAR48 型) 受信キュー名

キューマネジャによって設定される出力用のフィールドです。

ローカルキューマネジャが名称解決を実行したあとのあて先キューの名前です。返される名前は,

ResolvedQMgrName フィールドに指定されたキューマネジャが保持するキューの名前です。キューがモ デルキューでオープンされた場合,生成された動的ローカルキューの名称が返されます。

空白でない値が返されるのは,オブジェクトが単一のキューである場合だけです。オブジェクトが配布リ ストである場合,返される値は未定義です。

これは出力用のフィールドです。

このフィールドの長さは,MQ_Q_NAME_LENGTH に定義されています。

このフィールドの初期値は,C 言語ではヌル文字列です。そのほかのプログラミング言語では,48 個の空 白です。

● ResponseRecOffset(MQLONG 型) 最初の応答レコードまでのオフセット

MQPMO 構造体の先頭から最初の MQRR 構造体の応答レコードまでのバイトオフセットです。オフセッ トは,正の場合も負の場合もあります。ResponseRecOffset フィールドは,メッセージが配布リストに登 録されるときだけ使用されます。RecsPresent フィールドが 0 の場合は無視されます。

メッセージが配布リストに登録されるとき,一つ以上の MQRR 構造体の応答レコードの配列が,メッセー ジの送信が成功しなかったキューと,その失敗の理由を特定するために指定されなければなりません。な お,メッセージの送信が成功しなかったキューは MQRR 構造体の CompCode フィールドに記述され,

その失敗の理由は MQRR 構造体の Reason フィールドに記述されます。

メッセージは,キューのオープンに失敗したか,登録操作が失敗したかのどちらかの理由で送信されてい ない可能性があります。キューマネジャが応答レコードを設定するのは,命令の結果が混在している場合 だけです。例えば,次のような場合です。

• あるメッセージは送信に成功したが,ほかのメッセージが失敗している場合

• すべての送信が失敗し,その理由が異なる場合

この場合,MQRC_MULTIPLE_REASONS の理由コードが出現します。同じ理由コードがすべてのキュー に適用される場合,応答レコードは設定されません。

配布リストがオープンされたとき,MQOD 構造体によって指定されたオブジェクトレコードと同じ数の 応答レコードが存在しなければなりません。応答レコードが必要であれば,対応するオブジェクトレコー ドによって指定されるキューに対する登録の完了コードと理由コードに設定されます。配布リストのオー プンに失敗したキューには,配列の適当な位置に配置される応答レコードがなければなりません。その場 合,登録操作ではなく,オープン操作の完了コードと理由コードが設定されます。

応答レコードの数がオブジェクトレコードの数と異なることがあります。

オブジェクトレコードよりも応答レコードが少ない場合,アプリケーションは登録に失敗したあて先や,

失敗した理由のすべてを特定できなくなります。オブジェクトレコードよりも応答レコードが多い場合,

必要数以上のレコードは使用されません。ただし,使用されないレコードにもアクセスできなければなり ません。応答レコードは任意で指定できますが,指定された場合は RecsPresent フィールドがなければな りません。

応答レコードはオブジェクトレコードと同様に,ResponseRecOffset フィールドのオフセットを指定する か,または ResponseRecPtr フィールドのアドレスを指定できます。指定方法については,この章の

ドキュメント内 TP1/Message Queue プログラム作成リファレンス (ページ 158-163)