既存のオブジェクト・タイプに任意選択の特性を追加するために使用します。
Comments オブジェクト・タイプは拡張できませんが、 Comments オブジェクト・タイプ以外のオブジェクト・タイプ はどれでも追加することができます。
許可
管理者
構文
APIRET APIENTRY FLGAppendType( PFLGHEADERAREA pObjTypeStruct,
PFLGEXTCODE pExtCode );
パラメーター
戻された理由コードの説明については、付録 D, 情報カタログ・マネージャーの理由コードを参照してくだ さい。
入力構造
FLGAppendType を使用するには、図 42 に示す入力構造を定義し なければなりません。 この構造はヘッダー域と定義域だけからなります。
バイト・オフセットの意味については、情報カタログ・マネージャー API 入力構造を参照してください。
使用方法
制約事項
Comments オブジェクト・タイプは拡張できませんが、 Comments オブジェクト・タイプ以外のオブジェクト・タイプ はどれでも追加することができます。
オブジェクト・タイプ内に既に存在する新規の特性を追加すると、"新規"特性は、 複写として扱われ、FLGAppendType は警告 (FLG_WRN_PROPDUP) をもって正常に完了します。 以下のすべてが既存の特性と一致する場合、特性はコピーです。
データ・タイプ
データ長
特性省略名
値フラグ
UUI 番号
入力要件
プログラムを可能な限り、情報カタログと同期化させるために、 FLGAppendType が正常に完了したあとで、呼び出しを FLGCommit (FLGCommit参照) に 組み込む必要があります。 FLGAppendType が正常に完了しない場合は、呼び出しを FLGRollback (FLGRollback参照) に 組み込む必要があります。
図 43 は、FLGAppendType 呼び出しを出すために必要な C 言語コード を示しています。 このコードは、オブジェクト・タイプ識別子 000044 のオブジェクト・タイプ に Density という名前特性を追加するものです。
図 43. C 言語による FLGAppendType の呼び出しのサンプル
APIRET rc; // Declare reason code
PFLGHEADERAREA pObjTypeStruct; // Pointer to the input structure
FLGEXTCODE ExtCode = 0; // Declare extended code
.
. /* Appending pObjTypeStruct object Type */
. /* by providing object properties */
.
rc = FLGAppendType (pObjTypeStruct,
&ExtCode); // Pass pointer to extended code
図 44 は、この FLGAppendType 呼び出しの ための入力構造を示しています。 pObjTypeStruct パラメーターはこの入力構造を指しています。
図 44. FLGAppendType のための入力構造のサンプル
特別なエラー処理
FLGAppendType でデータベース・エラーが発生すると、情報カタログ・マネージャーは、 プログラム内で最後に行われたコミット点にデータベースをロールバックします。
このロールバックが正常に行われた場合、FLGAppendType は 理由コード FLG_SEVERR_DB_AUTO_ROLLBACK_COMPLETE を戻します。 拡張コードには、情報カタログ・マネージャーがデータベースのロールバックを行う原因とな ったデータベース・エラーに関する SQL コードが含まれています。
考慮事項: このロールバックが失敗した場合には、FLGAppendType は 理由コード FLG_SEVERR_DB_AUTO_ROLLBACK_FAIL を戻します。 拡張コードには、情報カタログ・マネージャーがデータベースのロールバックを行う原因とな ったデータベース・エラーに関する SQL コードが含まれています。 この場合、データベースの保全性に関する重大な問題が発生している可能性が あるため、プログラムで FLGTerm を呼び出して情報カタログ・マネージャーを終了させる必要があります。
データベースの状態によっては、バックアップ用データベース・ファイルを 使用してデータベースを回復させなければならないことがあります。 情報カタログ・データベースの回復に関する詳細については、 情報カタログ・マネージャー 管理の手引き を参照してください。
FLGAppendType エラーとは無関係なコミットされていない変更内容が情報カタログ・マネージャーによっ て除去されないようにするために、プログラム内のこの呼び出しの直前 に FLGCommit 呼び出しを組み込んでください。