COBOL2002 ユーザーズガイド


27.2.7 キューのパス名を検索する(CBLMQLOCATE)

パブリックキューのラベルからパス名を検索するには,CBLMQLOCATEサービスルーチンを呼び出します。

形式

CALL 'CBLMQLOCATE' USING 引数1 引数2

引数

引数1には,「表27‒2 MSMQアクセスサービスルーチンで使用するインタフェース領域」の名前を指定します。

引数2には,データパラメタ領域の名前を指定します。

インタフェース領域に設定する項目
  • 検索強制終了フラグ

    すべてのパス名の検索が終了する前に検索を終了したい場合,この項目に1を指定して再度CBLMQLOCATEサービスルーチンを呼び出します。

    それ以外の場合は0を指定します。

インタフェース領域の形式については,「表27‒2 MSMQアクセスサービスルーチンで使用するインタフェース領域」を参照してください。

データパラメタ領域に設定する項目

検索するキューのラベル名,および検索結果のキューのパス名を格納するデータ項目を,次の形式で指定します。

記述形式

内容

01 データ名1.

CALL文のUSINGで指定するデータパラメタ領域の名前

02 データ名2 PIC S9(9) USAGE COMP.

キューのパス名のデータ長

02 データ名3 PIC X(256).

キューのパス名

02 データ名4 PIC S9(9) USAGE COMP.

キューのラベルのデータ長

02 データ名5 PIC X(256).

キューのラベル

戻り値

100:すべてのパス名の検索が終了した。

2:パス名を格納中にデータエラーを検出した。

1:パス名を検索中である。

0:サービスルーチンは正常に終了した。

-1:MSMQアクセスでエラーを検出した。

-2:MSMQアクセス以外でエラーを検出した。

また,インタフェース領域に次の項目が返されます。

規則
  • データパラメタ領域のデータ名4には,データ名5で指定したキューのラベルのデータ長を,バイト数で指定します。

  • キューのパス名の検索に成功した場合,データパラメタ領域のデータ名2およびデータ名3に,検索したキューのパス名のデータ長,およびパス名が返されます。また,CBLMQLOCATEサービスルーチンは,戻り値として1を返します。

    同じラベルを持つキューのパス名を引き続き検索するには,再度CBLMQLOCATEサービスルーチンを呼び出してください。サービスルーチンを呼び出すたびに,順番にキューのパス名が検索され,データパラメタ領域のデータ名2およびデータ名3に上書きで格納されます。

    目的のパス名を取得できた場合など,パス名の検索を終了したい場合は,インタフェース領域の検索終了強制フラグに1を指定して,再度CBLMQLOCATEサービスルーチンを呼び出してください。戻り値として0が返され,検索が終了します。この方法で正しく検索を終了させないと,ほかのMSMQサービスルーチンを呼び出したときにエラーとなります。

  • すべてのパス名の検索が終了すると,戻り値として100が返され,検索が終了します。この場合,検索終了強制フラグを使用して検索を終了させる必要はありません。

  • パス名の格納中にデータエラーが検出された場合,戻り値として2が返されます。この場合,パス名はデータエラーとなったデータ形式で格納されます。

  • 変換したパス名がデータパラメタ領域のデータ名3よりも長い場合,戻り値として2が返されます。この場合,変換したパス名はデータ名3の領域長分だけ格納されます。