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

FLGCreateType

新規のユーザー定義オブジェクト・タイプを作成します。

管理者は、Program および Attachment 区分を除いて、どの区分にもタイプ を作成することができます。これらの区分は、情報カタログ内で情報カタログ・マネージャーが 自動的に作成する Programs および Comments タイプのみを含むことができるからです。

許可

管理者

構文



APIRET  APIENTRY   FLGCreateType( PFLGHEADERAREA   pObjTypeStruct,
                                  PFLGEXTCODE  pExtCode );

パラメーター

pObjTypeStruct (PFLGHEADERAREA) − 入力
入力構造を指します。入力構造にはこのオブジェクト・タイプに関 する特性の仕様が含まれています。

pExtCode (PFLGEXTCODE) − 出力
理由コードに関連する拡張コードを指します。 戻された理由コードに関連した意味のある拡張コードがあるかどうかについて は、付録 D, 情報カタログ・マネージャーの理由コードを参照してください。

理由コード (APIRET)
この API 呼び出しの実行結果を表します。

戻された理由コードの説明については、付録 D, 情報カタログ・マネージャーの理由コードを参照してくだ さい。

入力構造

FLGCreateType を使用するには、図 53 に示す入力構造を定義し なければなりません。 この構造はヘッダー域と定義域だけからなります。

図 53. FLGCreateType 入力構造


Figure FLAA2007 not displayed.

バイト・オフセットの意味については、情報カタログ・マネージャー API 入力構造を参照してくだ さい。

使用方法

前提条件

FLGCreateType API を呼び出して新規オブジェクト・タイプを作成する前に、こ の新規タイプを登録するために FLGCreateReg API を呼び出す必要があります。

FLGCreateType を呼び出すときには、FLGCreateReg API によって戻された オブジェクト・タイプ識別子を指定する必要があります。

入力要件

ヘッダー域

入力構造のヘッダーに指定するオブジェクト・タイプは、登録済みであっ て、しかもまだ作成されていないものでなければなりません。

定義域

  • 定義域に定義する最初の 5 つの特性は、情報カタログ・マネージャーの 5 つの必須特性 OBJTYPID、 INSTIDNT、NAME、UPDATIME、および UPDATEBY に対応するものでなければなりません。 これらの特性がこのとおりの順番で指定されていない場合には、作成は失敗し ます。

    OBJTYPID
    オブジェクト・タイプを表す固有のシステム生成識別子 (ID)。

    INSTIDNT
    オブジェクトを表す固有のシステム生成 ID。

    NAME
    オブジェクトを表すユーザー指定の名前。

    UPDATIME
    オブジェクトが最後に更新された時期を表すシステム生成のタイム・スタンプ。

    UPDATEBY
    オブジェクトを最後に更新した管理者またはユーザー を表すシステム生成のユーザー ID。
  • 必須特性に関する規則
    • これらの各必須特性のデータ・タイプ、長さ、特性省略名、および値フラグ (vf) は 固定されており、図 53 に示したとおりに指定しなければなりません。
    • UUI 順序 (us) は 4 つの各システム生成 (S) 特性についてはブランクに 固定されていますが、NAME 特性については 1、2、3、4、5、またはブランクに することができます。
    • 80 バイトの特性名は固定されていますが、サポートされる各国語版では翻訳可能です。 これらの必須特性の翻訳名は、FLGInit の出力構造に入れて戻されます。
  • 定義における特性の合計数は、FLG_MAX_PROPERTIES (255) を 超えてはなりません。
  • 定義におけるデータ・タイプが LONG VARCHAR の特性の合計数は、情報カタログ・マネージャーの 限界である FLG_MAX_NUM_LONG_VARCHARS (14) を超えてはなりません。
  • UUI に関する規則
    • 作成するそれぞれのオブジェクト・タイプについて、少なくとも 1 つ は UUI 特性を定義しなければなりません。
    • オブジェクト・タイプ内では、UUI の番号付けは 1 から始める必要があり、 番号を飛ばすことはできません。 たとえば、あるオブジェクト・タイプ内で 1、2、および 3 と いう一連の UUI 順序番号値を指定することは有効ですが、2、3、 および 5 という指定は無効です。
    • 同じオブジェクト・タイプ内で同一の UUI 順序番号を 2 回以上指定すること はできません。
    • UUI として指定する特性の長さは、254 バイトを超えてはなりません。
    • UUI として指定する特性は、必須特性 (桁 126 に "R" 値フラグ がある特性) でなければなりません。
    • UUI として指定する特性 (桁 127) のデータ・タイプを LONG VARCHAR にするこ とはできません。
    • UUI 特性を定義するときには、そのオブジェクトの各インスタンスが個別に 識別できるようにしてください。 このオブジェクトのインスタンスが複数の関連する情報カタログに存在していて も、これらの特性によって特定のインスタンスが識別できるようにする必要があります。
  • 必須特性以外にも、作成したオブジェクト・タイプを業務の必要に 応じて調整するために、さらに特性を追加することができます。

    情報カタログ・マネージャーは、すべての必須特性が常に指定されていることを確認するために、 バイト 118 からバイト 125 までの特性省略名をキーとして使用しますので、定義域に おけるこれらの追加特性の順序は影響を与えません。 FLGCreateType 呼び出しの場合の定義域における特性の順序は、情報カタログ・マネージャーによって 呼び出し元アプリケーションに戻された特性の順番どおりになります。

  • 新規の特性名は、そのオブジェクト・タイプの中では固有のものでなければなり ません。
  • 新規の特性省略名は、そのオブジェクト・タイプの中では固有のものでなければ なりません。
  • この特性が 2 つ以上の関連する情報カタログで共用される オブジェクト・タイプに属する場合に、情報を共用するために 情報カタログ・マネージャー・データのインポートおよびエクスポートを計画しているときには、 データ・タイプ、データ長、特性省略名、値フラグ、および UUI 順序の値は、 他の情報カタログにおける同一オブジェクト・タイプに関する値と同じにしなければなりません。 特性名は異なっていても差し支えありません。
  • 特性省略名は以下の規則に従っている必要があります。
    • SBCS だけで指定しなければなりません。
    • 先頭文字は、A から Z または a から z まで、@ または #、 あるいは $ でなければなりません。
    • 先頭以外の文字には、A から Z または a から z まで、0 から 9 まで、 @ または #、$ または _ (下線) を使用することができます。
    • 先行または組み込みブランクを使用することはできません。
    • 使用されるデータベースに関する SQL 予約語を使用することはできません。
  • 1 つのオブジェクト・タイプに関するすべての特性の合計長が、 使用するデータベースの行限界を超えてはなりません。 行の長さの計算方法については、使用するデータベースに関する資料を参照してく ださい。

情報カタログ更新の制御

プログラムを可能な限り、情報カタログと同期化させるために、 FLGCreateType が正常に完了したあとで、呼び出しを FLGCommit (FLGCommit参照) に 組み込む必要があります。 FLGCreateType が正常に完了しない場合は、呼び出し を FLGRollback (FLGRollback参照) に組み込む必要があります。

図 54 は、FLGCreateType API 呼び出しを出すために必要な C 言語コード を示しています。

このサンプル・コードは新規のオブジェクト・タイプを作成します。 この新規オブジェクト・タイプは、構造ヘッダー域に E が指定されていることか ら分かるように Elemental 区分に属し、オブジェクト・タイプ ID は 000044 です。 このオブジェクト・タイプには、情報カタログ・マネージャー必須特性のほかに、イメージ・カラー、 イメージ・サイズ、および説明の 3 つの追加必須特性が含まれています。

図 54. C 言語による FLGCreateType の呼び出しのサンプル

 APIRET         rc;                   // Declare reason code
 PFLGHEADERAREA   pObjTypeStruct;  // Pointer to the input structure
 FLGEXTCODE     ExtCode=0;                 // Declare extended code
   .
   .  /* creating pObjTypeStruct object type by */
      /* providing object type's properties  */
   .
 rc = FLGCreateType (pObjTypeStruct,
                    &ExtCode);             // Pass pointer to extended code
 

図 55 は、この FLGCreateType API 呼び出しのための入力構造を示して います。 pObjTypeStruct ポインターは、新規のオブジェクト・タイプの特性情報が入っ ている構造を指します。

図 55. FLGCreateType のための入力構造のサンプル


Figure FLAA2008 not displayed.

特別なエラー処理

FLGCreateType でデータベース・エラーが発生すると、情報カタログ・マネージャーは、 プログラム内で最後に行われたコミット点にデータベースをロールバックします。

このロールバックが正常に行われた場合、FLGCreateType は 理由コード FLG_SEVERR_DB_AUTO_ROLLBACK_COMPLETE を戻します。 拡張コードには、情報カタログ・マネージャーがデータベースのロールバックを行う原因とな ったデータベース・エラーに関する SQL コードが含まれています。

考慮事項: このロールバックが失敗した場合には、FLGCreateType は 理由コード FLG_SEVERR_DB_AUTO_ROLLBACK_FAIL を戻します。 拡張コードには、情報カタログ・マネージャーがデータベースのロールバックを行う原因とな ったデータベース・エラーに関する SQL コードが含まれています。 この場合、データベースの保全性に関する重大な問題が発生している可能性が あるため、プログラムで FLGTerm を呼び出して情報カタログ・マネージャーを終了させる必要があります。

データベースの状態によっては、バックアップ用データベース・ファイルを 使用してデータベースを回復させなければならないことがあります。 情報カタログ・データベースの回復に関する詳細については、 情報カタログ・マネージャー 管理の手引き を参照してください。

FLGCreateType エラーとは無関係なコミットされていない変更内容が情報カタログ・マネージャーによっ て除去されないようにするために、作成中のオブジェクト・タイプの FLGCreateReg プログラム内の この呼び出しの直前に FLGCommit 呼び出しを組み込んでください。


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