9.253 DEFINE_OVERRIDE_FILE

LANSA

9.253 DEFINE_OVERRIDE_FILE


この組み込み関数を使って、データベース・テーブルのオーナー名やデータベース・テーブル名を上書きできます。

通常この組み込み関数は、複数の企業で使用されるアプリケーションで使用され、共通のファイル(テーブル)定義を使用しながらも、各企業が異なるライブラリ(スキーマ名)により区別される独自のファイル(テーブル)を持つ場合などに利用できます。アプリケーションが起動されると、ユーザー情報が確認され、どの企業がアクティブな状態なのかを判断します。そして、この組み込み関数により適切な上書きが行われます。詳細は「上書きが必要となる理由」および「SuperServerやLANSA Open.Netを利用したDefine_Override_Fileの使用」を参照してください。

このデータベースの上書きが有効なのは現セッション終了までです。

DEFINE_OVERRIDE_FILEの機能はSELECT_SQLの自由形式のコマンドには利用できません。

各製品の対応

LANSA/AD

未対応

Visual LANSA for Windows

使用可

Visual LANSA for Linux

未対応

 

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

任意

ファイル・ライブラリ名

ファイル・ライブラリ名が指定されない場合、定義された上書き全てを削除します。

1

10

 

 

2

A

任意

ファイル名

1

10

 

 

3

A

任意

データベース・テーブルのオーナー名を上書きします。

上書きするデータベース・テーブルのオーナーやテーブル名が指定されない場合、前回定義された上書きを削除します。

1

128

 

 

4

A

任意

データベース・テーブル名を上書きします。

上書きするデータベース・テーブルのオーナーやテーブル名が指定されない場合、前回定義された上書きを削除します。

1

128

 

 

 

戻り値

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

戻りコード: OK    

2

2

 

 

 

 

上書きが必要となる理由

複数の企業で使用されるアプリケーションでは同じ名前で複数のテーブルがサポートされます。そしてLANSAライブラリを使用することで、各企業の適切なテーブルが区別されるようになっています。LANSAライブラリはデータベースに匹敵するものにマップされ、異なるデータベース・マネージャにそれぞれ別の名前が付けられています。様々な呼び名がありますが、これがスキーマ、オーナー、コレクションと言われるものです。ただしOAM生成時、OAMには1つのLANSAライブラリしか組み込ません。複数の企業で使用するアプリケーションを実行するには、このOAMが現企業の適切なLANSAライブラリにリダイレクトされる必要があります。

以下はこのプロセスの概要です。

1.ファンクション/コンポーネントが"生成"ライブラリで生成され、これが共通のデータベース実行レイヤーに渡されます。

2.OAMが検索されます。区画モジュール・ライブラリ区画ファイル・ライブラリにある場合、ライブラリは"生成"ライブラリではなくなります。"実行"ライブラリになります。

     ファイルOAMは"生成"されたライブラリを指します。上書きの際は、この"生成"ライブラリをOVERRIDE_TABLE_OWNERに指定します。

3."実行"ライブラリが検索され、上書きが存在しないか確認されます。"実行"ライブラリがまだ"生成"ライブラリの場合、ファイルは新しいライブラリで上書きされます。

     区画ファイル・ライブラリにインストールされたファイルを上書きする場合は、区画ファイル・ライブラリのシステム変数がフィールドに適用されている必要があり、このフィールドがOVERRIDE_TABLE_OWNERに渡され、ライブラリが実行時に上書きされます。

複数企業のアプリケーションでは、この区画ファイル・ライブラリに共通ファイルがインストールされます。通常はこの区画ファイル・ライブラリは"生成"ライブラリではありません。もし、これが同じものであれば、生成時の上書きで区画ファイル・ライブラリも上書きされてしまいます。この共通ファイルはどの会社がアクティブであったとしても、常に同じライブラリにアクセスできなければならないので、上記の状態では期待通りの結果を得ることはできません。各企業はライブラリ名が必要ですが、これは区画ファイル・ライブラリや区画モジュール・ライブラリと同じ名前にすることはできません。これはOAMが区画モジュール・ライブラリ区画ファイル・ライブラリにインストールされないようにするためです。OAMは実行区画にインストールされなければいけません。指定のライブラリが、区画ファイル・ライブラリもしくは 区画モジュール・ライブラリと同じでない場合に、OAMが実行区画にインストールされます。そして、全てのアプリケーションでプロンプト表示をして、企業とその企業に一致するライブラリをOVERRIDE_TABLE_OWNER (BUILT COMPLIB)を使用して適用する必要があります。

SuperServerやLANSA Open.Netを利用したDefine_Override_Fileの使用

DEFINE_OVERRIDE_FILEは実行中のRDMLのローカル・データベース上で作動します。データベースのIOが実行されると、OAMはOAMが実行されているマシンやプロセスのファイル上書きをチェックします。ですから、サーバー上でOAMを実行するには、ファイルの上書きはCALL_SERVER_FUNCTIONを使用して、DEFINE_OVERRIDE_FILEを正しく呼び出す必要があります。これは、SuperServerもLANSA Open .Netでも同じことが言えます。

上書きの設定方法

1.有効なファイル・ライブラリ名とオプションでファイル名を指定して、上書きを行うファイルを示します。

2.また上書きするデータベース・テーブルのオーナー名と上書きするデータベース・テーブル名の両方、もしくはどちらか一方も指定されなければいけません。次の表では全ての有効なケースが紹介されています。

説明

ファイル・ライブラリ名

ファイル名

データベース・テーブル・オーナー名の上書き

データベース・テーブル名の上書き

特定のファイル・ライブラリ名の全てのファイルを異なるデータベース・テーブル・オーナーに上書き

X

*Default

X

 

特定のファイルを異なるデータベース・テーブル・オーナーに上書き

X

X

X

 

特定のファイルを異なるデータベース・テーブル・オーナーで異なるデータベースに上書き

X

X

*Default

X

特定のファイルを異なるデータベース・テーブルに上書き

X

X

X

X

 

上書きグループの上書きを削除する方法

1.DEFINE_OVERRIDE_FILEを引数なしに実行し、データベース・ファイルの全ての上書きを取り除きます。

2.ファイル・ライブラリ名の引数のみでDEFINE_OVERRIDE_FILEを実行し、ライブラリ内の全てのファイルの上書きを取り除きます。

3.ファイル・ライブラリ名とファイル名の引数でDEFINE_OVERRIDE_FILEを実行し、特定のファイルの上書きを取り除きます。

説明

ファイル・ライブラリ名

ファイル名

データベース・テーブル・オーナー名の上書き

データベース・テーブル名の上書き

全ての定義された上書きを削除する

 

 

 

 

ファイル・ライブラリの上書きを削除する

X

 

 

 

特定のファイルの上書きを削除する

X

X

 

 

 

 

使用例

例1:特定のファイル・ライブラリ名の全てのファイルを異なるデータベース・テーブル・オーナーABCに上書きする。

Use BIF(Define_Override_File) ('DC@DEMOLIB' *Default 'ABC') To_Get(#retcode)

 

例2:特定のファイルを異なるデータベース・テーブル・オーナーABCに上書きする。

Use BIF(Define_Override_File)  ('DC@DEMOLIB' 'PSLMST' 'ABC') To_Get(#retcode)

 

例3:特定のファイルを異なるデータベース・テーブル・オーナーを使用して異なるデータベースに上書きする。

Use BIF(Define_Override_File) ('DC@DEMOLIB' 'PSLMST' *Default 'XYZ') To_Get(#retcode)

 

例4:特定のファイルを異なるデータベース・テーブルに上書きする。

Use BIF(Define_Override_File) ('DC@DEMOLIB' 'PSLMST' 'ABC' 'XYZ') To_Get(#retcode)

 

例5:全ての定義された上書きを削除する。

Use BIF(Define_Override_File) To_Get(#retcode)

 

例6:ファイル・ライブラリの上書きを削除する。

Use BIF(Define_Override_File)  ('DC@DEMOLIB') To_Get(#retcode)

 

例7:特定のファイルの上書きを削除する。

Use BIF(Define_Override_File) ('DC@DEMOLIB' 'PSLMST') To_Get(#retcode)