ページの先頭行へ戻る
Interstage Navigator ServerV9.5.0 セットアップガイド Vol.1(Enterprise Edition用)
FUJITSU Software

F.2.1 取得開始関数(KVRDIC_open_dicinfo_list)

機能

指定されたユーザに対する辞書情報一覧を取得するためのハンドルを取得します。

書式

int KVRDIC_open_dicinfo_list(static char* username, int dickind, void **ghandle);

パラメタ

static char *

username

(in)

Navigatorのユーザ名

int

dickind

(in)

取得する辞書種別

void **

ghandle

(out)

辞書情報一覧取得用ハンドル

戻り値

戻り値

意味

0

ハンドルの取得が正常に行われた場合に返却します。

1

指定されたユーザに対して、指定された辞書種別の情報を辞書出口から取得しない場合に返却します。
この場合、Navigator辞書管理ツールで定義された辞書情報が有効となります。

それ以外

何らかの原因でハンドルの取得に失敗した場合に返却します。

説明

dickindの辞書種別値は、インクルードファイルで定義した以下の値が渡されます。

KVRDIC_DICKIND_CLOSEINFO:公開/非公開情報

未定義の値が渡された場合は、必ず戻り値1で終了するようにしてください。

ghandleには、辞書情報一覧を取得する対象のハンドルを返却してください。ここで返却されたハンドルは、NavigatorがKVRDIC_get_dicinfo_list、およびKVRDIC_close_dicinfo_listを使用する際に、inパラメタとして使用されます。

公開/非公開情報構造体

以下は公開/非公開情報構造体です。

辞書出口モジュールがNavigatorに対して公開/非公開情報を返却する場合、本構造体の形式で情報を返却してください。

定義

typedef struct{
int     closekind;
int     dbkind;
char    dbname[128+1];
char    idname[252+1];
char    schemaname[36+1];
char    tablename[36+1];
char    columnname[36+1];
} KVRDIC_STRUCT_CLOSEINFO;

メンバ

メンバ

意味

int

closekind

情報種別を以下の値で設定してください。
  KVRDIC_CLOSEKIND_SCHEMA : スキーマ情報
  (対象スキーマ配下の資源をすべて非公開、または公開状態にします。)
  KVRDIC_CLOSEKIND_TABLE:テーブル情報
  (対象テーブル配下の資源をすべて非公開、または公開状態にします。)
  KVRDIC_CLOSEKIND_COLUMN:項目情報
  (対象項目を非公開、または公開状態にします。)

int

dbkind

対象資源のデータベース種別を、以下の値で設定してください。
  KVRDIC_DBKIND_ANYDB  : Shunsaku、ファイルまたは、Postgres
  KVRDIC_DBKIND_SYMFO  : Symfoware Server
  KVRDIC_DBKIND_ORACLE : Oracle
  KVRDIC_DBKIND_SQLSV  : MS SQL Server
  KVRDIC_DBKIND_ODBC   : ODBC
  KVRDIC_DBKIND_SYMFOX : 他サイトのSymfoware Server

char[128]

dbname

対象資源のデータソース名を設定してください。
名前は終端(0x00)付き文字列で指定してください。
名前が128バイトに満たない場合は、後方を0x00で埋めてください。
データベース種別がSymfoware Serverの場合、環境変数「RDBDB」に指定したデータベース名を設定します。

データベース種別がOracleの場合、環境変数「ORACLE_SID」または「RN_ORACLE_DB」に指定した名前を設定します。

データベース種別がSQL Serverの場合、環境変数「RN_MSSQLSERVER_DB」に指定したデータベース名を設定します。

それ以外の場合は、登録したデータソース名を設定します。

char[252]

idname

対象資源がOracleの他サイトの資源の場合、データベースリンク名を設定してください。
対象資源がODBCの資源でカタログ名が有効な場合、カタログ名を設定してください。
対象資源がそれ以外の場合、先頭(idname[0])に0x00を設定してください。
名前は終端(0x00)付き文字列で指定してください。

char[36]

schemaname

対象資源のスキーマ名を設定してください。
名前は終端(0x00)付き文字列で指定してください。

char[36]

tablename

情報種別がスキーマ情報の場合、0x00で埋めてください。
情報種別がそれ以外の場合、対象資源のテーブル名を設定してください。
名前は終端(0x00)付き文字列で指定してください。

char[36]

columnname

情報種別が項目情報以外の場合、0x00で埋めてください。
情報種別が項目情報の場合、対象資源の項目名を設定してください。
名前は終端(0x00)付き文字列で指定してください。

注意事項

公開/非公開情報は、Navigator辞書管理ツールや辞書ユーティリティコマンドなどで、Navigator辞書に追加されている資源に対する情報です。Navigator辞書管理ツールで追加されていない資源に対する情報を返却した場合、その情報は無効となります。

同じ資源に対する情報種別の異なる公開/非公開情報が存在する場合、情報種別が、1)スキーマ情報、2)テーブル情報、3)項目情報の順で優先されるため、優先度の低い情報は無効になります。

サンプルプログラム

===================================================================================
#include <stdlib.h>
#include "kvrdic_dicexit.h"
/* ハンドル構造体 */
typedef struct{
      int info_num;
      int count;
      KVRDIC_STRUCT_CLOSEINFO *info;
}SampleHandle;
/* セキュリティ情報取得関数(内部関数) */
/* GetSecurityInfo ()は、Navigatorユーザ名をinパラメタとして受け取り、*/
/* ユーザに対する非公開情報数と非公開情報リストを返却する関数です。   */
int GetSecurityInfo(char *username, int *info_num, KVRDIC_STRUCT_CLOSEINFO **info);
/**************************/
/* 辞書情報の取得開始関数 */
/**************************/
int KVRDIC_open_dicinfo_list(char *username, int dickind, void **ghandle)
{
      int rc=0;
      SampleHandle *hp;
      /*****     inパラメタチェック    *****/
      /* 辞書出口が返却不可の辞書種別が指定された場合はrc=1で終了する(必須) */
      if(dickind!=KVRDIC_DICKIND_CLOSEINFO) return 1;
      /*****      outパラメタ設定      *****/
      /* ハンドル域取得 */
      *ghandle = (SampleHandle *)malloc(sizeof(SampleHandle));
      /* 何らかの原因でハンドルの取得に失敗した場合はrc!=0or1で終了する */ 
      if(*ghandle==NULL) return 2;
      /* ハンドル作成 */
      hp=*ghandle;
      memset(hp, 0x00, sizeof(SampleHandle));
      /* ハンドルにユーザに対するセキュリティ情報を格納 */
      rc=GetSecurityInfo(username, &(hp->info_num), &(hp->info));
      /* 処理が正常終了した場合はrc=0で終了する */
      if(rc==0) return rc;
      else
      {
                free(*ghandle);
                *ghandle=NULL;
                return rc+100000;
      }
}
===================================================================================