情報カタログ・マネージャー プログラミングの手引きおよび解説書

情報カタログ・マネージャー API 呼び出しとの間でのデータの受け渡し

情報カタログ API 呼び出しは、パラメーターと、入力構造および出力構造との 2 つの メカニズムを使用して入力を受け取り、出力を提供します。

パラメーターによる単一の入力値およびポインターの受け渡し

パラメーターを使用して、単一の入力値およびポインターを出力値および データ構造に提供することができます。

API 呼び出しパラメーターが文字列である場合、これらのパラメーターはすべて、 NULL 文字で終了するストリング として渡さなければなりません。 情報カタログ・マネージャー API 呼び出しの構文における各 API 呼び出しの構文のセクションでは、 このようなパラメーターを説明する際には、NULL 文字を含まない実際のデータの 最大長が指定されています。 たとえば、オブジェクト・タイプ識別子 ObjTypeID の長さは、7 ではなく 6 と指定されています。

ただし、例の中でのこの種のパラメーターの C 宣言では、NULL 文字のための 追加バイトが含まれています。 たとえば、DG2API.H ファイルで #define 定数を使用する場合、ObjTypeID パラメーターを次のように宣言することが考えられます。

uchar objtypid[FLG_OBJTYPID_LEN+1]

(DG2API.H ファイル内の定数のリストについては、付録 B, 情報カタログ・マネージャー API ヘッダー・ファイル − DG2APIHを参照してください。)

入力構造および出力構造による複数の値の受け渡し

情報カタログ・マネージャー API 呼び出しに複数の入力値を提供したり、情報カタログ・マネージャー API 呼び出しから複数の 出力値を受け取ったりする場合には、入力構造と出力構造を使用する必要があります。

入力構造および出力構造は自己定義データ構造です。つまり、それぞれの構造で、 その構造が渡すデータの形式と意味が定義されています。

それぞれの自己定義構造は、記憶域内で連続した区域になっていなければなりません。 入力構造および出力構造には文字データだけが含まれ、NULL 文字を含めるこ とはできません。

それぞれの入力構造および出力構造には、次の 2 つの区域が含まれていなければなりません。

ヘッダー域
構造のサイズを識別し、定義します。

定義域
オブジェクト区域特性を定義します。

定義域で定義されている特性の値を定義したり受け取ったりする構造には、 その定義域で定義されている特性の値を指定するオブジェクト域 も 含まれている必要があります。

図 3 は、これらの 3 つの区域がどのような形でいっしょに収められるのかを示しています。

図 3. 入出力構造


入出力構造でのヘッダー域、定義域、およびオブジェクト域の図

API 呼び出しに入力構造を渡すためには、入力構造を作成して、その入力構造の先頭 を指すポインターを API 呼び出しの入力パラメーターとして渡してください。

出力構造から情報を検索するには、入力パラメーターとして NULL ポインター のアドレスを渡し、情報カタログ・マネージャーがそのポインターに出力構造の先頭のアドレスを 割り当てられるようにしてください。

たとえば、API 呼び出しに ppListStruct という名前のポインターを渡すもの とします。このポインターには pOutStruct という名前の NULL ポインターが含まれます。 この API 呼び出しは、図 4 に示すように、出力構造の アドレスを pOutStruct に割り当てます。

図 4. 出力構造を指すポインター


出力構造の先頭を指す pOutStruct の図

複数の API 呼び出しを呼び出すことによってメモリーを使い切ることのないように、 ユーザーのプログラムで情報カタログ・マネージャーの API 呼び出し FLGFreeMem を使用して、この出力構造に 割り振られたメモリーを割り振り解除することができます。 FLGFreeMem の使い方の詳細については、FLGFreeMemを参照してください。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]