よくある質問(コード・テーブル)
Q:コード・テーブルは実データベース・ファイルですか。
Aいいえ、コード・テーブルは抽象あるいは概念的な定義にすぎません。フレームワークにコード・テーブル内のカラムを定義し、どの定義がコード・テーブルの行の固有のキーになるかを指定します。テーブル・データは連続して実データベース・ファイルに保存され、データベース・ファイルを他のテーブルと共有します。
Q:コード・テーブル内のデータはどこから取得するのですか。
Aデータはいろいろなところから取得できます。デフォルトでフレームワークに組み込まれているRDMLファンクションが、内部の単体データベース・テーブルにコード・テーブルのデータを保存します。しかし、コード・テーブル・データを好きなところから取得するデータ保存ファンクションを用意することができます。このタイプのファンクションはテーブル・データ・ハンドラーファンクションとして参照されます。
Q:どうすればデータ保存ファンクションを作成できますか。
Aテーブル・データ・ハンドラーファンクションは定義済みのプロトコルでフレームワークと通信する標準LANSA RDMLファンクションです。テーブル・データ・ハンドラーファンクションを作成したい場合は、プロセスUF_SYSBR、ファンクションUFU0010〜UFU0015を例として参照してください。
Q:データ保存ファンクションはエンド・ユーザーと対話処理ができますか。
Aいいえ。データ保存ファンクションは、異なるさまざまなコンテキストで稼動するデータ取得/更新ルーチンとして作動するよう設計されています。例えば、Windosベースのフレームワーク・アプリケーションからリモート・プロシージャとして呼び出すことができます。またリモート・サーバーでは、ブラウザー・ベースのアプリケーションの一部として呼び出すことができます。これは、コンテキストがユーザー・インターフェースが使用できない状態で実行する必要があることを意味しています。
Q:コード・テーブルを使用する利点とはなんですか。
Aフレームワーク・コード・テーブル・システム機能を使用する最大の利点は、生産性と一貫性の向上です。標準の組み込みアーキテクチャでコード・テーブルを保守することで、アプリケーションの開発と保守がより迅速になり、コストとコード・テーブル・システム開発の複雑さが軽減されます。
Q:どうすればフレームワーク汎用テーブル・データ・ファイル(FPTAB)で外部LANSAファンクション(またはLANSA for the Webファンクション)をインターフェースできますか。
AFPTABのデータは特殊で、テーブルのキー以外の各セルごとにレコードを1つ含んでいます。
例えば、オーストラリアの州のテーブルには、以下のようなフィールドがあります。
CODE (a key)
DESCRIPTN
MYSEQ
FPTABの各州は2つのレコードで表します。1つはDESCRIPTNでもう1つはMYSEQです。どちらのレコードもすべてのキー・データ(この場合はCODE)を含みます。
Akey1 (FP_EKEY1) |
NKey1 (FP_EKEYN1) |
その他のキー 2 - 5 |
プロパティ名 (FP_EPTNAM) |
アルファベット・プロパティ値(FP_EPTVAL) |
数値プロパティ値(FP_EPTNV) |
NSW |
DESCRIPTN |
New South Wales |
|||
NSW |
MYSEQ |
10 | |||
QLD |
DESCRPTN |
Queensland |
|||
QLD |
MYSEQ |
20 | |||
... |
|||||
使用例
ユーザーが入力した通貨コードが有効か調べたい
*Use the logical view (kya) keyed by:
*Table name, AKey1, Nkey1, AKey2, Nkey 2, Akey3, Nkey3 ..., field name
CHECK_FOR in_file(FPTABkya) with_key('VF_CURRENCY' #MyCurrencyCodeField)
IF_STATUS *EQUALKEY
ENDIF
ある場所から読み出した通貨コードの説明を表示したい
*Use the logical view (nma) keyed by:
*Table name, field name, AKey1, Nkey1, AKey2, Nkey 2, Akey3, Nkey3 ...
FETCH fields(#FP_EPTVAL) from_file(FPTABnma) with_key('VF_CURRENCY' 'DESCRIPTN' #MyCurrencyCodeField)
Change #MyDescriptionField #FP_EPTVAL
通貨コードと各通貨の取り引き照会をすべて一覧したい
*Use the logical view (nma) keyed by:
*Table name, field name, 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
通貨コードと各通貨の取り引き照会をすべて一覧し、その換算レートと説明を知りたい
*Use the logical view (nma) keyed by:
*Table name, field name, AKey1, Nkey1, AKey2, Nkey 2, Akey3, Nkey3 ...
SELECT *ALL from_file(FPTABnma) with_key('VF_CURRENCY' 'DESCRIPTN')
Change #MyDescriptionField #FP_EPTVAL
* Get a numeric cell value
* Use a second logical view to avoid confusing the pointer
FETCH fields(#FP_EPTNV) from_file(FPTABn2a) with_key('VF_CURRENCY' 'EXCHRATE' #FP_EKEY1)
Change #MyExchangeRateField #FP_EPTNV
ENDSELECT
通貨と部門の組み合わせについて報告したい
*Use the logical view (nma) keyed by:
*Table name, field name, 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
* Now read through all the departments
* Use another logical view (n2a) to avoid confusing the pointer
SELECT *ALL from_file(FPTABn2a) with_key('VF_DEPTAB' 'DESCRIPTN')
Change #MyDepartmentCodeField #FP_EKEY1
Change #MyDepartmentDescriptionField #FP_EPTVAL
ENDSELECT
ENDSELECT
注:キーではないフィールド(例:Description)がすべてのテーブル・タイプの各テーブル・エントリーに必要な場合、コーディングが簡単になります。
数値キーでテーブルからデコードしたい
例えば、キー#POSTCODE (数値)を持つテーブルVF_POSTCODEがあるとします。
*Use the logical view (nmn) keyed by:
*Table name, field name, 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があるとします。
*Use the logical view (nmn) keyed by:
*Table name, field name, 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
記述順で部門を一覧したい
*Use the logical view (val) keyed by:
*Table name, field name, Numeric Property Value, Alpha Property Value.
SELECT *ALL from_file(FPTABval) with_key('VF_DEPTAB' 'DESCRIPTN')
(assuming that there is always a DESCRIPTN for a department)
ENDSELECT