Q: コード・テーブルは実データベース・テーブルですか。
A:いいえ、コード・テーブルは抽象あるいは概念的な定義にすぎません。フレームワークにコード・テーブル内の列を定義し、どの定義がコード・テーブルの行の固有のキーになるかを指定します。テーブル・データは頻繁に実データベース・テーブルに保存されますが、このデータベース・テーブルは他のテーブルと共有される場合があります。
Q: コード・テーブル内のデータはどこから取得するのですか。A:データはいろいろなところから取得できます。省略値でフレームワークに組み込まれている RDML ファンクションが、内部の単体データベース・テーブルにコード・テーブルのデータを保存します。しかし、コード・テーブル・データを好きなところから取得するデータ保存ファンクションを用意することができます。このタイプのファンクションはテーブル・データ・ハンドラーファンクションとして参照されます。
Q: どうすればデータ保存ファンクションを作成できますか。A:テーブル・データ・ハンドラーファンクションは定義済みのプロトコルでフレームワークと通信する標準LANSA RDMLファンクションです。テーブル・データ・ハンドラーファンクションを作成したい場合は、プロセスUF_SYSBR、ファンクションUFU0010~UFU0015を例として参照してください。
Q: データ保存ファンクションはエンドユーザーと対話処理ができますか。A: いいえ。データ保存ファンクションは、異なるさまざまなコンテキストで稼動するデータ取得/更新ルーチンとして作動するよう設計されています。例えば、Windosベースのフレームワーク・アプリケーションからリモート・プロシージャとして呼び出すことができます。またリモート・サーバーでは、ブラウザ・ベースのアプリケーションの一部として呼び出すことができます。これは、コンテキストがユーザー・インターフェースが使用できない状態で実行する必要があることを意味しています。
Q: コード・テーブルを使用する利点とはなんですか。A: フレームワーク・コード・テーブル・システム機能を使用する最大の利点は、生産性と一貫性の向上です。標準の組み込みアーキテクチャでコード・テーブルを保守することで、アプリケーションの開発と保守がより迅速になり、コストとコード・テーブル・システム開発の複雑さが軽減されます。
Q: どうすればフレームワーク汎用テーブル・データ・テーブル (FPTAB) で外部 LANSA ファンクションをインターフェースできますか。
A: FPTABのデータは特殊で、テーブルのキー以外の各セルごとにレコードを1つ含んでいます。
例えば、オーストラリアの州のテーブルには、以下のようなフィールドがあります。
CODE (a key)
DESCRIPTN
MYSEQ
FPTABの各州は2つのレコードで表します。1つはDESCRIPTNでもう1つはMYSEQです。どちらのレコードもすべてのキー・データ(この場合はCODE)を含みます。
|
*インデックス (kya) の使用
*キー: テーブル名, AKey1, Nkey1, AKey2, Nkey 2, Akey3, Nkey3 ..., フィールド名
CHECK_FOR in_file(FPTABkya) with_key('VF_CURRENCY' #MyCurrencyCodeField)
IF_STATUS *EQUALKEY
ENDIF
ある場所から読み出した通貨コードの説明を表示したい
*インデックス (nma) の使用
*キー: テーブル名、フィールド名、AKey1, Nkey1, AKey2, Nkey 2, Akey3, Nkey3 ...
FETCH fields(#FP_EPTVAL) from_file(FPTABnma) with_key('VF_CURRENCY' 'DESCRIPTN' #MyCurrencyCodeField)
Change #MyDescriptionField #FP_EPTVAL
通貨コードと各通貨の取り引き照会をすべて一覧したい
*インデックス (nma) の使用
*キー: テーブル名、フィールド名、AKey1, Nkey1, AKey2, Nkey 2, Akey3, Nkey3 ...
SELECT *ALL from_file(FPTABnma) with_key('VF_CURRENCY' 'DESCRIPTN')
(assuming that there is always a DESCRIPTN for a CURRENCY)
ENDSELECT
通貨コードと各通貨の取り引き照会をすべて一覧し、その換算レートと説明を知りたい
*インデックス (nma) の使用
*キー: テーブル名、フィールド名、AKey1, Nkey1, AKey2, Nkey 2, Akey3, Nkey3 ...
SELECT *ALL from_file(FPTABnma) with_key('VF_CURRENCY' 'DESCRIPTN')
Change #MyDescriptionField #FP_EPTVAL
* 数値のセル値を取得
* ポインターの混乱を避けるため、2つ目のインデックスを使用
FETCH fields(#FP_EPTNV)from_file(FPTABn2a) with_key('VF_CURRENCY' 'EXCHRATE' #FP_EKEY1)
*インデックス (nma) の使用
*キー: テーブル名、フィールド名、AKey1, Nkey1, AKey2, Nkey 2, Akey3, Nkey3 ...
SELECT *ALL from_file(FPTABnma) with_key('VF_CURRENCY' 'DESCRIPTN')
Change #MyCurrencyCodeField #FP_EKEY1
Change #MyCurrencyDescriptionField #FP_EPTVAL
* 全ての部門を読み込み
* ポインターの混乱を避けるため、別の論理ビュー (n2a) を使用
SELECT *ALL from_file(FPTABn2a) with_key('VF_DEPTAB' 'DESCRIPTN')
Change #MyDepartmentCodeField #FP_EKEY1
Change #MyDepartmentDescriptionField #FP_EPTVAL
ENDSELECT
ENDSELECT
注:キーではないフィールド(例:Description)がすべてのテーブル・タイプの各テーブル・エントリーに必要な場合、コーディングが簡単になります。
数値キーでテーブルからデコードしたい例えば、キー#POSTCODE (数値)を持つテーブルVF_POSTCODEがあるとします。
*インデックス (nma) の使用
*キー: テーブル名、フィールド名、NKey1, Akey1, NKey2, Akey 2, Nkey3, Akey3 ...
FETCH fields(#FP_EPTVAL) from_file(FPTABnmn) with_key('VF_POSTCODE' 'DESCRIPTN' #MyPostCodeField)
Change #MyDescriptionField #FP_EPTVAL
複合キーでテーブルからデコードしたい
例えば、キー#POSTCODE (数値)と#COUNTRY(アルファベット)を持つテーブルVF_POSTCODEがあるとします。
*インデックス (nma) の使用
*キー: テーブル名、フィールド名、NKey1, Akey1, NKey2, Akey 2, Nkey3, Akey3 ...
FETCH fields(#FP_EPTVAL) from_file(FPTABLnmn) with_key('VF_POSTCODE' 'DESCRIPTN' #MyPostCodeField *blanks 0 #MyCountryCodeField)
Change #MyDescriptionField #FP_EPTVAL
記述順で部門を一覧したい
*インデックス (val) の使用 ()
*キー: テーブル名、フィールド名、数値プロパティ値、英字プロパティ値
SELECT *ALL from_file(FPTABval) with_key('VF_DEPTAB' 'DESCRIPTN')
(assuming that there is always a DESCRIPTN for a department)
ENDSELECT