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

FLGUpdateInst

特定のオブジェクト・インスタンスに関する 1 つまたは複数の特性値を 変更するために使用します。

許可

管理者または許可ユーザー (すべてのオブジェクト・タイプ); ユーザー (Comments オブジェクト・タイプのみ)

構文



APIRET  APIENTRY    FLGUpdateInst( PFLGHEADERAREA   pObjInstStruct,
                                  PFLGEXTCODE  pExtCode );

パラメーター

pObjInstStruct (PFLGHEADERAREA) − 入力
更新されるデータベース・オブジェクトに関する特性の仕様と値を含む入力構造を指します。

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

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

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

入力構造

FLGUpdateInst を使用するには、図 154 に示す入力構造を定義し なければなりません。 この構造はヘッダー域、定義域、およびオブジェクト域からなります。

図 154. FLGUpdateInst 入力構造


Figure FLAA2062 not displayed.

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

使用方法

前提条件

FLGUpdateInst 呼び出しを出すまえに、FLGCreateInst 呼び出しまたは FLGGetInst 呼び出しを 出して、修正するインスタンスに関する特性の仕様と値を得ておく必要があります。

入力要件

ヘッダー域

  • ヘッダー・レコードに示されたすべての情報を指定する必要があります。
  • ヘッダー・レコードにおけるオブジェクト・タイプ識別子の値 (33 桁目か ら 38 桁目まで) は、オブジェクト域における値 (オブジェクト域の最初の項 目) と同じでなければなりません。

定義域

定義域は、オブジェクト・インスタンスを更新しているオブジェクト・タイプの定義済みの 特性のいくつか、またはすべてを含むことができます。 以下の規則が適用します。

  • まずはじめに、以下の順序で 5 つの情報カタログ・マネージャーの必須特性をすべて指定します。OBJTYPID、INSTIDNT、NAME、UPDATIME、および UPDATEBY。
  • すべての UUI 特性を指定します。
  • 情報カタログ・マネージャーは、すべての指定された特性の値を、以下の仕様に ついてオブジェクト・タイプ定義と比較します。

    データ・タイプ

    データ長

    特性省略名

    値フラグ

    UUI 番号

オブジェクト域

  • HANDLES 特性に指定するオブジェクト・タイプは情報カタログに存在 しているものでなければならず、しかも非 Program オブジェクト・タイプ でなければなりません。 PARMLIST 特性に指定する特性は、HANDLES に指定されたオブジェクト・タイプ の特性でなければなりません。 詳細については、プログラムを開始するための Programs オブジェクトの設定を参照してください。
  • 定義域の 126 桁目に R が入って定義されている必須特性に、値が指定さ れていない場合は、オブジェクト域の該当スペースを次のように初期設定しな ければなりません。


    データ・タイプ 初期設定値
    CHAR 非適用記号のあとに、特性の長さ全体にわたってブランクが続きます。
    TIMESTAMP 最大設定可能値に設定。 9999-12-31-24.00.00.000000
    VARCHAR LONG VARCHAR 00000001; 8 バイトで指定された長さフィールド。非適用記号が続きます。

  • OBJTYPID 特性と INSTIDNT 特性の値は、更新するインスタンスを 識別するための値であり、したがって必ず指定しなければなりません。
  • UPDATIME 特性と UPDATEBY 特性の値はシステム生成の値であるため、 ユーザーが修正してはなりません。 この FLGUpdateInst 呼び出しを出す前に FLGGetInst 呼び出しを出すと、オブジェクト域に これら 2 つのシステム生成特性の値を入れることができます。 これによってエラーが起こることはありませんが、インスタンスが更新される と、システムはこれら 2 つの特性の値を置き換えます。

VARCHAR または LONG VARCHAR データ・タイプのオブジェクト域からは 後続ブランクが自動的に除去され、それに応じて長さフィールドが自動的に 調整されます。

情報カタログ更新の制御

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

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

このサンプル・コードは、FLGCreateInst の例で定義された Quality Group という 名前のオブジェクト・インスタンスを更新します。 この更新では、短縮記述特性である簡略記述の値が修正されます。

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

 APIRET         rc;                   // Declare reason code
 PFLGHEADERAREA  pObjInstStruct;       // Pointer to the input structure
 FLGEXTCODE     ExtCode = 0;                // Declare extended code
   .
   .  /* updating pObjInstStruct object Instance by   */
      /*                           providing an updated input structure */
   .
 rc = FLGUpdateInst (pObjInstStruct,   // Pointer to updated input structure
                    &ExtCode);             // Pass pointer to extended code
 

図 156 は、更新されるインスタンスに関する特性と値の 情報が入る入力構造 (この C コードの "pObjInstStruct" ポインターに よって指し示されています) を示しています。

図 156. FLGUpdateInst のための入力構造のサンプル


Figure FLAA2063 not displayed.

システム生成されたものでない (すなわち、バイト 126 の値が S に なっていない) 以下のオブジェクト域の値は、修正することができます。

FLGUpdateInst を使うと、修正していない特性と値を省略することができます。

この例では、簡略記述値が更新されます。 簡略記述値を修正すると、その長さも影響を受けます。 したがって、オブジェクト域内の簡略記述フィールドの前の 8 文字の 長さフィールドは 27 から 40 に修正されます。 ヘッダー・レコード内のオブジェクトの長さ値は 246 から 259 に変更されます。

FLGUpdateInst が完了すると、UPDATEBY の値が修正されて、そのインスタンスの更新に使用され たユーザー ID が入り、また UPDATIME には更新のタイム・スタンプが入ります。


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