ユーザー定義の探索基準にもとづいて情報カタログを探索し、特定の オブジェクト・タイプのインスタンスを突き止めるために使用します。
許可
管理者またはユーザー
構文
APIRET APIENTRY FLGSearch( PSZ pszObjTypeID,
PFLGHEADERAREA pSelCriteriaStruct,
PFLGHEADERAREA * ppListStruct,
PFLGEXTCODE pExtCode );
パラメーター
この値が NULL の場合、情報カタログ・マネージャーは指定されたオブジェクト・タイプのすべての インスタンスを戻します。
各インスタンスについて以下の情報が示されます。
すべてのインスタンスは、使用するデータベース管理システムの照合順序に 従って、80 文字の外部名 (名前の値) の昇順で分類されます。
FLGSearch によって戻すことのできるオブジェクト・インスタンスの 最大数は計算機で使用可能な記憶域によって異なり、約 5000 です。
出力構造がない場合、出力構造へのポインターは NULL にセットされます。
戻された理由コードの説明については、付録 D, 情報カタログ・マネージャーの理由コードを参照してくだ さい。
入力構造
FLGSearch を使用するには、図 138 に示す入力構造を定義し なければなりません。 この構造はヘッダー域と定義域だけからなります。
FLGSearch 入力構造の定義域は、図 138 に示すとおりに指定 しなければなりません。ただし、オブジェクト・タイプに関して定義された 特性はどれでも指定することができます。 定義域に指定されたそれぞれの特性に対応する探索基準値を、 オブジェクト域に指定しなければなりません。 バイト・オフセットの意味については、情報カタログ・マネージャーの API 出力構造を参照してくだ さい。
データベースが DB2 UDB (OS/390 版) である場合、探索基準の最大長は 254 です。
出力構造
FLGSearch が作成する出力構造には、図 139 に示すように、 探索基準を使用して検索されたオブジェクトのリストが入っています。
出力構造のオブジェクト域には、入力探索基準に一致したすべての オブジェクト・インスタンスのリストが入ります。 戻されたオブジェクト・インスタンスは、FLGID の値と オブジェクト・インスタンスの外部名によって識別されます。
使用方法
FLGSearch は 1 つのオブジェクト・タイプのインスタンスだけを探索します。 すべてのオブジェクト・タイプのインスタンスを探索するには、 FLGSearchAll API 呼び出しを使用してください。
すべてのオブジェクト・タイプではなく、そのうちの複数の オブジェクト・タイプを探索するには、探索したいオブジェクト・タイプ ごとに 1 回ずつ FLGSearch を呼び出してください。
入力構造には、探索基準の特性の仕様と値が入ります。
ユーザー・インターフェースではこれと異なるワイルド・カード文字を使用することもできますが、 FLGSearch で使用できるのは % 文字と _ 文字 だけです。
DB2 データベースは、後書きのブランクを有効なものとして扱うので、 探索基準または CHAR タイプ特性の最後にワイルドカードを組み込まな ければなりません。そうしない場合、FLGSearch への呼び出しから受け取 るオブジェクトが予想よりも少なくなります。
探索基準にワイルド・カード文字を含める場合には、 ファジー探索フラグ (fs) を Y にセットしなければなりません。
情報カタログが、DB2 UDB (OS/390 版) にある場合、
情報カタログ更新の制御
FLGSearch はデータベースに対して変更をコミットします。 FLGSearch 呼び出しの前に行われた予期しない変更が情報カタログ・マネージャーによって コミットされないようにするために、プログラムの中で、FLGSearch を 出す前に FLGCommit または FLGRollback を出すようにしてください。
出力構造に割り振られたメモリーの解放
FLGSearch が出力構造にあるデータを戻した場合、出力構造に戻されたデータを 保管してから、FLGFreeMem を呼び出さなくてはなりません (FLGFreeMem参照)。 メモリーを解放するのに、たとえば C 言語指示のような他の方式は使用しないで ください。
図 140 のサンプル・コードは、用語集インスタンスの探索 を行います。 図 141 に示すように、定義域のバイト 129 でファジー探索フラグ が N にセットされているため、この探索は絶対探索 です。 ただし、バイト 128 の大文字小文字の区別フラグは N にセットさ れているため、値で使用される文字の大文字と小文字の区別は意味を持ちません。 FLGListObjTypes または FLGGetType 呼び出しを使って、オブジェクト・タイプ識別子を 見つけておく必要があります。
図 140. C 言語による FLGSearch の呼び出しのサンプル
APIRET rc; // reason code from FLGSearch
UCHAR pszObjTypeID[FLG_OBJTYPID_LEN + 1];
PFLGHEADERAREA pSelCriteria; // search criterion input structure pointer
PFLGHEADERAREA * ppListStruct; // pointer to search result pointer
FLGEXTCODE ExtCode = 0; // Declare extended code
.
. /* provide values for input parameters */
.
strcpy (pszObjTypeID, "000006");
rc = FLGSearch (pszObjTypeID, // information Catalog Manager object type ID
pSelCriteria, // input structure pointer
ppListStruct, // pass the address of
// output structure pointer
&ExtCode);
図 141 は、この探索に関する特性と値の情報が入る 探索条件入力構造 (pSelCriteria によって指し示されます) を示しています。
定義域におけるバイト 128 の大文字小文字の区別フラグとバイト 129 の ファジー探索フラグは N にセットしなければなりません。これは、ユーザーが 絶対探索を希望していて、しかも特性値の大文字と小文字を区別しようとしていないためです。
図 141. FLGSearch のための入力構造のサンプル
図 142 は、探索によって得られた用語集インスタンスが入った 出力構造を示しています (ppListStruct は、この出力構造を指すポインター のアドレスを指します)。
図 142. FLGSearch のための出力構造のサンプル
CONTEXT の値 Customer Orders が探索基準として使用されます。 CONTEXT がこの値になっている用語集インスタンスが出力構造に戻されます。 大文字小文字の区別フラグが N にセットされているため、 CONTEXT 値が customer orders や CUSTOMER ORDERS な どのようになっているインスタンスも戻されます。
この例は、あるパターンに一致する値を含むインスタンスを見つけるために、 ユーザーのプログラムでファジー探索を使用する方法を示しています。
図 143 の入力構造に指定された値では、metadata という 文字を含む用語集インスタンスをワイルド・カード探索することが指定されています。 複数文字ワイルド・カード (%) は、その値に任意の別の文字が含まれ ていても探索基準が満たされることを示しています。
図 143 は、ユーザーのプログラムが FLGSearch に 渡す入力構造 (pSelCriteria によって指し示されます) を示しています。
図 143. FLGSearch のための入力構造のサンプル
この探索はワイルド・カード探索であるため、バイト 129 のファジー探索フラグ は Y にセットしなければなりません。ファジー探索フラグが N にセット されていると、% 文字は探索基準のリテラル部分になります。つまり指定さ れた特性値に % が含まれているインスタンスだけが戻されます。
この例ではメタデータの大文字と小文字の区別が意味を持つため、定義域の バイト 128 にある大文字小文字の区別フラグは Y にセットされています。 図 144 は、探索によって得られた用語集インスタンスが入った 出力構造を示しています (ppListStruct は、この出力構造を指すポインターの アドレスを指します)。
図 144. FLGSearch のための出力構造のサンプル
定義特性の値 %metadata% が探索基準として使用されます。 定義特性値に metadata が含まれている用語集インスタンスが 出力構造に戻されます。 大文字小文字の区別フラグが Y にセットされているため、この例で検出された すべてのインスタンスは、metadata の大文字と小文字の区別にも一致します。
この例は、あるパターンに一致する値を含むインスタンスを見つけるために、 ユーザーのプログラムでファジー探索を使用する方法を示しています。
図 145 の入力構造で指定された値では、指定した特性値 のほかに 1 つだけの可変文字を含む用語集インスタンスを探索するために、 単一文字ワイルド・カード (_) が使用されています。
図 145 は、ユーザーのプログラムが FLGSearch に渡す 入力構造 (pSelCriteria によって指し示されます) を示しています。
図 145. FLGSearch のための入力構造のサンプル
検索基準に単一文字ワイルドカード (_) が含まれているため、 129 バイトのファジー検索フラグを Y にセットする必要があります。 ファジー探索フラグが N にセットされていると、情報カタログ・マネージャーは _ を探索基準の リテラル部分と見なし、指定された特性値の一部として _ が含まれている オブジェクト・インスタンスだけを戻します。
この例では、NAME および UPDATIME の両方の値が探索基準として使用されます。
図 146 は、探索によって得られた用語集インスタンスが入った 出力構造を示しています (ppListStruct は、この出力構造を指すポインター のアドレスを指します) 。
図 146. FLGSearch のための出力構造のサンプル
5 文字の名前値の接頭部が Dept になっていて、1995 年の各月の 最初の日に更新された用語集インスタンスが出力構造に戻されます。