Hitachi

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


10.2.3 MQGMO構造体によるオプションの指定

MQGMO構造体は,MQGET命令にオプションを渡すための入出力用の値です。

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

StrucId

メッセージ取り出しオプション構造体を識別します。4文字のフィールドです。常にMQGMO_STRUC_IDを指定してください。

Version

構造体のバージョン番号を記述します。デフォルトはMQGMO_VERSION_1です。バージョン2のフィールドを使用したい場合,または論理的順序でメッセージを取り出したい場合は,MQGMO_VERSION_2を指定してください。

MQGMO_CURRENT_VERSIONを指定する場合,アプリケーションは常に最新のバージョンを使用します。

Options

アプリケーションコード内で,必要なオプションを任意の順序で指定します。

Optionsフィールドは,次に示す項目を制御します。

  • 完了前にMQGET命令がメッセージのキューへの到着を待ち合わすか

  • 登録操作がトランザクションに参加するか

  • ファーストメッセージ機能を有効にし,非永続メッセージを同期点外で取り出すか

  • キューからメッセージを削除するか,検索するだけか

  • 検索カーソルまたはその他の基準によってメッセージを選択するか

  • メッセージがバッファよりも長い場合に命令を成功させるか

  • キューマネジャが停止状態のときに命令が失敗するか

  • メッセージデータの変換をするか

  • メッセージとセグメントをキューから取り出す順序

  • 完全な論理メッセージだけを取り出すか

  • グループ内の全メッセージが利用できるときだけに,グループ内のメッセージを取り出すか

  • 論理メッセージ内の全セグメントが利用できるときだけに,論理メッセージ内のセグメントを取り出すか

Optionsフィールドをデフォルトの値に(MQGMO_NO_WAIT)する場合は,MQGET命令は次に示すとおりに動作します。

  • 選択基準に合うメッセージがキューにない場合,命令はメッセージの到着を待たないで即時に完了します。

  • TP1/Message Queueでは,同期点を指定した命令は無効になります。

  • 選択されたメッセージはキューから検索ではなく削除されます。

  • アプリケーションデータの変換は実行されません。

  • メッセージがバッファよりも長い場合は,命令は失敗します。

WaitInterval

WaitIntervalフィールドは,MQGMO_WAIT指定時にメッセージのキューへの到着をMQGET命令が待ち合わせる最大時間(ミリ秒)を指定します。時間内にメッセージが到着しない場合に命令は完了し,選択基準に合うメッセージがキューにないことを示す理由コードを返します。

Signal1

TP1/Message Queueではサポートしません。

Signal2

TP1/Message Queueではサポートしません。

ResolvedQName

ResolvedQNameフィールドは,出力用のフィールドです。キューマネジャがメッセージを取り出したキューの名前を別名の解決後に返します。

MatchOptions

MatchOptionsフィールドは,MQGET命令の選択基準を制御します。

GroupStatus

GroupStatusフィールドは,取り出したメッセージがグループ内にあるかを示します。

SegmentStatus

SegmentStatusフィールドは,取り出した項目が論理メッセージのセグメントであるかを示します。

Segmentation

Segmentationフィールドは,取り出したメッセージにセグメント分割を許可するかを示します。