仮想フィールドの考え方

「仮想フィールド」はLANSAリポジトリの特殊機能です。適切に使えば、アプリケーションの処理ロジックを簡潔にし、ユーザー・インターフェースを改善することができます。

「仮想フィールド」もファイル内に現れるフィールドですが、物理データベース・ファイルには存在しません。その値は、他のフィールド(基底フィールド)の値をもとに、実行時に求められます。基底フィールドがやはり別のフィールドから派生した仮想フィールドであってもかまいません。他のフィールドの値を組み合わせ、抽出するなどして情報量を増やすことができる、非常に柔軟な機構と言えるでしょう。

データベースに「概念的な構造」を実装するためにも仮想フィールドの機構が使えます。例えばCENTURY、YEAR、MONTH、DAYというフィールドを組み合わせて、DATEという仮想フィールドを作ることができます。これを「YYMMDD」という書式で格納しておき、検索や表示には「MMDDYY」や「DDMMYY」という書式も使えるようにする、といった設定も可能です。

プログラム側から見ると、仮想フィールドも通常のフィールドと同様、ファイルの一部として扱えます。しかしその値は、実際に格納されているのではなく、レコードの入出力時に動的に求められます。ファイルの内容をそのまま表示した場合、仮想フィールドは現れないので、これをキーとして扱うことはできません。仮想フィールドの例をいくつか紹介します。

このように、フィールドに対する文字列操作や変換、計算などといった処理を、簡潔に記述し、標準化して集中管理することができます。

仮想フィールドはリポジトリに定義します。フィールド単位、ファイル単位妥当性規則を与えることも可能です。また、基底フィールドに妥当性規則が設定されていれば、仮想フィールドにも適用されます。このように、仮想フィールドは、リポジトリの他のフィールドと同じように使えます。

仮想フィールドは、実ファイル中には存在しないので、LANSA外から直接使うことはできません。LANSA OAM (オブジェクト・アクセス・モジュール) の働きで、存在するように見せかけているのです。したがって、仮想フィールドにアクセスできるのは、LANSA Open を使うクライアント・アプリケーションや、LANSA OAMを使うアプリケーションに限ります。

仮想フィールドは他のフィールドから派生したものであって、ファイル内に実際に存在するフィールドではありません。したがって、物理ファイルや論理ビューのキーとして使うことはできません。キーとして使いたい場合は、ファイルの構成を見直し、仮想フィールドではなく実フィールドとして実装する必要があります。

仮想フィールドを定義する方法としては次のようなものがあります。

タイプや長さの変換、日付から年齢への変換、実行時データ変換など、複雑な処理が必要な場合は、RPGやCで変換方法を定義する必要があります。

別のファイルのフィールドから仮想フィールドを派生させたい場合については、「事前結合フィールドの考え方」を参照してください。

次のトピックも参照してください。

実フィールドと仮想フィールドの違い

仮想フィールドの応用例