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

プログラムで情報カタログ・マネージャー API 呼び出しを使用する方法

情報カタログ・マネージャー API 呼び出しを含む C 言語プログラムを書く際には、特定の規則および 指針に従う必要があります。 このセクションでは、これらの指針について説明します。

FLGInit によるプログラムの開始

情報カタログ・マネージャー API 呼び出しを出すプログラムを作成する場合、FLGInit 呼び出しを出して からでなければ、その他の情報カタログ・マネージャー API 呼び出しを出すことができません。

FLGInit は情報カタログ・マネージャーを初期設定し、情報カタログ・マネージャー・オブジェクト・タイプおよび登録 に必要な特性の名前を戻し、環境情報を戻します。

FLGInit によって戻された情報を保管してください。 この情報は、他の情報カタログ・マネージャー API 呼び出しを出すために必要になることがあります。 各国語版の情報カタログ・マネージャーを使用している場合、FLGInit は、情報カタログ・マネージャー・オブジェクト・タイプ および登録に必要な特性の翻訳された名前を戻します。 オブジェクト・タイプおよび登録を作成または保守するときに、 入力構造の定義域でこれらの翻訳名を使用する必要があります。

FLGInit 出力構造の内容については、FLGInitを参照してください。

FLGTerm によるプログラムの終了

情報カタログ・マネージャー機能を使用し終わったプログラムは、FLGTerm 呼び出し をする必要があります。 FLGTerm は情報カタログ・マネージャー・セッションを終了させ、情報カタログ・マネージャーによって使用されていた資源を 解放します。 この API 呼び出しの詳細については、FLGTermを参照してください。

エラーが発生した場合の情報カタログ・データベースの保護

いくつかの情報カタログ・マネージャー・エラーでは、情報カタログが存在するデータベース内 のメタデータの一部が矛盾している可能性があることが示されます。 したがって、プログラムでエラーが発生したときに情報カタログ・データベースを ロールバックするようにプログラムを書く必要があります。 API 呼び出しが正常に行われたときに FLGCommit 呼び出しを出し、 失敗したときに FLGRollback 呼び出しを出すことにより、情報カタログ・データベースに 矛盾が生じないようにすることができます。

考慮事項: 情報カタログ・データベースが DB2 上で使用されている場合、 エラーが発生したときには FLGRollback 呼び出しを出さなければなりません。 そのようにしないと、プログラムが FLGTerm を出したとき に情報カタログ・データベースが損傷を受ける可能性があります。

プログラムを開始するための Programs オブジェクトの設定

情報カタログ・マネージャー・アプリケーションから得られたデータを使用するプログラムを開始する には、その種類のデータを表すオブジェクト・タイプに関連付けられ た Programs オブジェクト・インスタンスを作成してください。

表 5 に示すように、プログラムを識別する 3 つ の特性を Programs オブジェクト・インスタンス内で定義し、Programs オブジェクト・インスタンスとオブジェクト・タイプを関連付け る必要があります。

表 5. プログラムを開始する Programs オブジェクト・インスタンスの特性
特性名 特性省略名
呼び出しによる開始 STARTCMD 開始されるプログラムのパスとファイル名、および開始オプション。
このプログラムが扱うオブジェクト・タイプ HANDLES オブジェクト・タイプを表す 8 文字の省略名。
パラメーター・リスト PARMLIST 関連するオブジェクト・タイプにおける、プログラムに コマンド行パラメーターとして渡したい特性のリスト。 各特性は 2 つのパーセント記号 (%%) によって区切られる。

呼び出しによる開始 (STARTCMD) 特性の値に推奨される形式は、 そのプログラムのインターフェース・タイプによって異なります。 プログラムのファイル名と、推奨される開始パラメーターを入力します。 Windows NT(R)、Windows 95、および Windows 98 の場合、 推奨される開始パラメーターは START filename.exe です。 PATH ステートメントには、プログラムが存在するディレクトリー を指定する必要があります。

プログラムのファイル名がハイ・パフォーマンス・ファイル・システム (HPFS) 形式 になっていて、ブランクが含まれている場合には、次のように、そのプログラムのパス とファイル名を二重引用符で囲む必要があります。

""D:\PROGPATH\My Program.EXE""

プログラム名にブランクが含まれている場合には、STARTCMD 特性値で別の 開始オプションを指定することはできません。

プログラムを開始するには、Programs オブジェクト FLGID と オブジェクト・インスタンス FLGID をパラメーターとして 指定した FLGOpen 呼び出しを出してください。 FLGOpen 呼び出しの詳細については、FLGOpenを参照してください。

API 呼び出しによるメタデータの作成

登録、オブジェクト・タイプ、オブジェクト・インスタンス、および 関係は、相互に依存し合って作成されます。したがって、これらのエンティティー の集合は、特定の順序でなければ作成することができません。 新規のオブジェクト・タイプ、オブジェクト・インスタンス、および関係を 作成するときには、次の順序で情報カタログ・マネージャー API 呼び出しを出す必要があります。

  1. FLGCreateReg
  2. FLGCreateType
  3. FLGCreateInst
  4. FLGRelation

API 呼び出しによるメタデータの削除

一方で、登録、オブジェクト・タイプ、オブジェクト・インスタンスおよび 関係の削除には、2 通りあります。保守的な方法 (時間がかかります) と、 破壊されてしまう可能性のある方法 (しかし速くできます) です。

オブジェクト・タイプおよびオブジェクト・インスタンスを保守的な方法 で削除するときには、次の順序でそのオブジェクト・インスタンスおよび オブジェクト・タイプに関する情報カタログ・マネージャー API 呼び出しを出します。

  1. FLGRelation

    特定のオブジェクト・インスタンスが他のオブジェクト を含む という関係をすべて削除しないと、 これらのオブジェクト・インスタンスを削除することはできません。 FLGDeleteInst は、オブジェクト・インスタンスが含まれている、 あるいは Contact、Attachment、またはリンク・オブジェクトに関連していたという関係を 自動的に削除します。

  2. FLGDeleteInst

    FLGDeleteType を使ったオブジェクト・タイプを削除する前に、 特定のオブジェクト・タイプのオブジェクト・インスタンス をすべて削除しなくてはなりません。

  3. FLGDeleteType
  4. FLGDeleteReg

次の API を使うと、オブジェクト・インスタンスおよびオブジェクト・タイプ の削除をより速く行うことができますが、 情報カタログの内容を完全に理解していないと、破壊される恐れがあります。

  1. FLGDeleteTree

    Grouping オブジェクト・インスタンスと、任意で、それに含まれる オブジェクト・インスタンスに関連するすべての関係に加え、 それが含むすべてのオブジェクト・インスタンスを同時に削除します。

  2. FLGDeleteTypeExt

    オブジェクト・タイプ、オブジェクト・タイプ登録、およびオブジェクト・タイプのすべてのインスタンスを同時に削除します。 FLGDeleteTypeExt を使ってオブジェクト・タイプを削除する前に、他のオブジェクト・タイプの オブジェクトを含む個々のブランチを削除しなくてはなりません。

情報カタログ・マネージャー・データ・タイプを使用する情報カタログ・メタデータの指定

情報カタログ・マネージャーは、表 6 で定義されている 4 つのデータ・タイプ を使用して、オブジェクトの特性に関するメタデータを保管します。

ユーザーのプログラムでは、メタデータが有効な形式になるように、 なんらかのデータ変換を行わなければならないことがあります。

表 6. 情報カタログ・メタデータのための有効なデータ・タイプ
データ・タイプ 表現方法 入力および出力構造における省略された値の表現方法
CHAR 定義された長さを占める。 定義された長さよりも値が短い場合には、値の右側に後続ブランクが埋め込まれる。 その値に定義された長さだけブランクが入る。
TIMESTAMP yyyy-mm-dd-hh.mm.ss.nnnnnn 形式で全部の長さ (26) を占める。 26 個のブランクで表現。
LONG VARCHAR 後続の値の実際の長さを表す 8 文字長フィールドが前に付く。 長さフィールドは、ゼロにセットされて、そのあとに値がないことを表す。 例: 00000000
VARCHAR 後続の値の実際の長さを表す 8 文字長フィールドが前に付く。 長さフィールドはゼロにセットされて、そのあとに値がないことを表す。 例: 00000000

入力構造については、要求の検査と受け入れを行う前に、情報カタログ・マネージャーは変数値 から自動的に後続ブランクを除去し、その結果に合わせて長さを調整します。 したがって、必須変数値にブランクだけが指定されている場合には、その要求は 拒否され、必須値が指定されなかったことを示す理由コードが戻されます。 値が必須であっても利用不能なときは、エラーを防ぐために非適用記号を使うこ とができます。


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