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

MQCO_DELETE_PURGE

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

キューを削除します。

次のどちらかの場合,キューは削除されます。

• 永続的動的キューで,メッセージを格納しないで,かつコミットしていないトランザクションから の登録・取り出しがない場合

ほかのアプリケーションによる登録・取り出しがない場合も含みます。

• 一時的動的キューで,Hobj のハンドルがそのキューを生成した MQOPEN 命令で返されたハンド ルの場合

上記以外の場合,理由コード MQRC_OPTION_NOT_VALID_FOR_TYPE で命令は失敗します。こ のとき,キューは削除されません。

MQCO_DELETE_PURGE

キューを強制的に削除します。

次のどちらかの場合,キューは削除されます。

• 永続的動的キューで,コミットしていないトランザクションからの登録・取り出しがない場合 ほかのアプリケーションによる登録・取り出しがない場合も含みます。

• 一時的動的キューで,Hobj のハンドルがそのキューを生成した MQOPEN 命令で返されたハンド ルの場合

上記以外の場合,理由コード MQRC_OPTION_NOT_VALID_FOR_TYPE で命令は失敗します。こ の場合,キューは削除されません。

クローズオプションとオブジェクトの関係を次の表に示します。

表 2‒1 クローズオプションとオブジェクトの関係

オブジェクト クローズオプション

MQCO_NONE MQCO_DELETE MQCO_DELETE_PURGE

キュー以外 1 2 2

定義済みキュー 1 2 2

永続的動的キュー 1 3 4

一時的動的キュー

(作成者)

5 5 5

一時的動的キュー

(作成者以外)

1 2 2

配布リスト 1 2 2

(凡例)

1:オブジェクトは削除されません。

2:不正な組み合わせです。

3:キューが空であり,かつ未決着の登録・取り出しがないときだけ削除されます。

4:未決着の登録・取り出しがないときだけ削除されます。

5:オブジェクトは削除されます。

● CompCode(MQLONG 型) −output

完了コードです。

次のどれかが返されます。

MQCC_OK:成功

MQCC_WARNING:警告(一部成功)

MQCC_FAILED:失敗

● Reason(MQLONG 型) −output

理由コードです。

CompCode 引数が MQCC_OK の場合

理由コード 数値 意味

MQRC_NONE 0 理由コードはありません。

CompCode 引数が MQCC_WARNING の場合

理由コード 数値 意味

MQRC_INCOMPLETE_GROUP 2241 メッセージグループが完全ではありません。

理由コード 数値 意味

MQRC_INCOMPLETE_MSG 2242 論理メッセージが完全ではありません。

CompCode 引数が MQCC_FAILED の場合

理由コード 数値 意味

MQRC_HCONN_ERROR 2018 コネクションハンドルが不正です。

MQRC_HOBJ_ERROR 2019 オブジェクトハンドルが不正です。

MQRC_OBJECT_DAMAGED 2101 オブジェクトが破損しています。

MQRC_OPTION_NOT_VALID_FOR _TYPE

2045 オブジェクトタイプに適合しないオプションが指定されました。

MQRC_OPTIONS_ERROR 2046 オプションが不正です。または,指定されていません。

MQRC_Q_NOT_EMPTY 2055 キューに一つ以上のメッセージがあります。または,キューに対する 登録・取り出し要求がコミットしていません。

MQRC_RESOURCE_PROBLEM 2102 システム資源が不足しています。

MQRC_STORAGE_NOT_AVAILABL E

2071 記憶容量が不足しています。

MQRC_UNEXPECTED_ERROR 2195 予期しないエラーが発生しました。

詳細は,「付録 B.2 理由コード」を参照してください。

注意事項

1. アプリケーションが MQDISC 命令を呼び出したとき,または正常終了・異常終了したときに,オープ ンしたままのオブジェクトは MQCO_NONE オプションで自動的にクローズされます。

2. キューをクローズするときは,次の点に注意してください。

• トランザクション内で処理するときでも,同期点の結果に影響しません。同期点の前でもあとでも キューをクローズできます。

• MQOO_BROWSE オプションでキューをオープンしていた場合,検索カーソルは消滅します。

MQOO_BROWSE オプションで再びオープンしたときは,新しい検索カーソルが生成されます。

MQOO_BROWSE オプションについては,この章の「MQOPEN 命令 − オブジェクトのオー

プン」で Options 引数の説明を参照してください。

• MQCLOSE 命令を呼び出した時点で,そのハンドルで排他状態にしたメッセージがある場合,排他 状態は解除されます。「1. データタイプ」の「MQGMO 構造体 − メッセージ取り出しオプ

ション」で Options フィールドの MQGMO_LOCK オプションの説明を参照してください。

3. クローズされるオブジェクトが動的キュー(永続的動的キューまたは一時的動的キュー)であるとき,

次の点に注意してください。

• 一時的動的キューの場合で,Hobj のハンドルがそのキューを生成した MQOPEN 命令で返された ハンドルのとき,キュー内にメッセージが格納されていてもキューは削除されます。このとき,

Options 引数に指定したオプションは関係ありません。これは,コミットしていない MQGET 命 令,MQPUT 命令または MQPUT1 命令が,このハンドルを使用した場合,使用しなかった場合,

およびそのキューに対して未決着のままの場合でも同様です。コミットしていない処理での更新が 失われた場合も,トランザクションの失敗にはなりません。

• 動的キューが削除されるときにキューに対して未解決の MQGMO_WAIT オプションを指定する MQGET 命令は取り消され,理由コード MQRC_Q_DELETED が返されます。

MQGMO_WAIT オプションについては,「1. データタイプ」の「MQGMO 構造体 − メッ

セージ取り出しオプション」で Options フィールドの説明を参照してください。

動的キューが削除されたあとで,取得済みの Hobj ハンドルを使用して MQCLOSE 命令以外の命 令がキューを参照しようとすると,理由コード MQRC_Q_DELETED で失敗します。

削除されたキューにアプリケーションからアクセスできなくても,キューを参照するすべてのハン ドルがクローズされ,キューに影響するすべてのトランザクションがコミットされるかロールバッ クされるまでは,キューはシステムから除去されず,関連リソースも解放されないことに注意して ください。

• 一時的動的キューをクローズするときに MQCLOSE 命令に指定した Hobj ハンドルが,キューを 作成した MQOPEN 命令が返したハンドルである場合,キューは削除されます。これは MQCLOSE 命令のクローズオプションに関係なく発生します。キューにメッセージがある場合は破棄されます。

報告メッセージは生成されません。

キューに影響を与える未コミットのトランザクションがあるときでも,キューとメッセージは削除 されます。しかし,これによってトランザクションは失敗しません。ただし,上記のとおり,各ト ランザクションがコミットされるかロールバックされるまでは,トランザクションに関連するリソー スは解放されません。

4. クローズされるオブジェクトが配布リストの場合,次の点に注意してください。

• 配布リストに対する適当なオプションは MQCO_NONE だけです。ほかのオプションが指定され ると,理由コード MQRC_OPTIONS_ERROR または

MQRC_OPTION_NOT_VALID_FOR_TYPE で失敗します。

• 配布リストがクローズされるとき,リスト中のキューについてのおのおのの完了コードと理由コー ドは,返却されません。CompCode 引数と Reason 引数は結果を確認するためだけに利用できます。

キューのうち一つのクローズに失敗した場合も,キューマネジャは処理を続行し,配布リストの残 りのキューをクローズしようとします。CompCode 引数と Reason 引数は失敗を記述した情報を 返します。しかし,ほとんどのキューのクローズに成功しても,完了コードが MQCC_FAILED に なる場合があります。なお,エラーの発生したキューは識別できません。

一つ以上のキューでクローズに失敗しても,どんな失敗が CompCode 引数と Reason 引数に報告 されるかは定義されていません。

MQCONN 命令 − キューマネジャへの接続

機能

MQCONN 命令で,アプリケーションをキューマネジャへ接続できます。この命令では,キューマネジャ のコネクションハンドルが返されます。コネクションハンドルは,以降のそのキューマネジャへの命令で 使用します。

形式

C 言語の場合

MQCONN(PMQCHAR Name, PMQHCONN Hconn, PMQLONG CompCode, PMQLONG Reason)

COBOL 言語の場合

CALL 'MQCONN' USING NAME, HCONN, COMPCODE, REASON.

引数

● Name(MQCHAR48 型) −input

キューマネジャ名です。

アプリケーションが接続するキューマネジャの名前です。名前には,次に示す文字を使用できます。

• 英大文字(A〜Z)

• 英小文字(a〜z)

• 数字(0〜9)

• ピリオド(.),スラント(/),アンダスコア(_),パーセント(%)

名前の先頭および中間には,空白を使用できません。末尾には空白を使用できます。名前の中で有効なデー タの末尾を示すためにヌル文字を使用できます。ヌル文字とそれに続く文字はすべて空白として処理され ます。

すべて空白の名前を指定した場合,省略時のキューマネジャ名が使用されます。

指定するキューマネジャ名は接続可能なキューマネジャの名前にする必要があります。

接続できるキューマネジャは,環境に依存します。TP1/Message Queue では,アプリケーションと同じ OpenTP1 で動作するキューマネジャにだけ接続できます。

この引数の長さは,MQ_Q_MGR_NAME_LENGTH に定義されています。

● Hconn(MQHCONN 型) −output

コネクションハンドルです。

キューマネジャへの接続を示すハンドルです。以降に呼び出すメッセージキューイング機能の命令で指定 してください。MQDISC 命令を呼び出すと,またはこのハンドルの範囲の処理が終了すると,このハン ドルは無効になります。

このハンドルの範囲は,環境のパラレル処理の最小単位に制限されます。MQCONN 命令を呼び出したパ ラレル処理の単位以外では,このハンドルは無効です。TP1/Message Queue では,パラレル処理の最小 単位はプロセスです。

● CompCode(MQLONG 型) −output

完了コードです。

次のどれかが返されます。

MQCC_OK:成功

MQCC_WARNING:警告(一部成功)

MQCC_FAILED:失敗

● Reason(MQLONG 型) −output

理由コードです。

CompCode 引数が MQCC_OK の場合

理由コード 数値 意味

MQRC_NONE 0 理由コードはありません。

CompCode 引数が MQCC_WARNING の場合

理由コード 数値 意味

MQRC_ALREADY_CONNECTED 2002 アプリケーションはすでに接続されています。

CompCode 引数が MQCC_FAILED の場合

理由コード 数値 意味

MQRC_HCONN_ERROR 2018 コネクションハンドルが不正です。

MQRC_Q_MGR_NAME_ERROR 2058 キューマネジャ名が不正です。または,キューマネジャ名を認識でき ません。

MQRC_Q_MGR_NOT_AVAILABLE 2059 キューマネジャが接続できる状態ではありません。

MQRC_Q_MGR_STOPPING 2162 キューマネジャが終了処理中です。

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