前の例では、簡単にコードを比較できるように簡潔にしていました。2つのプログラミングの手法でできることを実際に見るために、ここでは「・・・の処理」タイプのLANSAファンクションとVisual LANSAフォームでのアプリケーションの実装の例を取り上げます。
どちらのアプリケーションも、サンプル・ファイルPSLMSTの情報を管理します。社員の名字でキーになったファイルの論理ビューを使用します。これらを使用して社員の詳細の表示、編集、削除を行います。
LANSAファンクションは、FRMWRK1テンプレートを使用して作成されました。名字の一部を入力し、表示される社員を限定できる画面があります。
OKをクリックすると、社員の処理画面が表示されます。この画面には、名前の一部が一致する社員のリストが表示されます。OPTフィールドに番号を入力し、社員情報を表示、変更、削除できます。
変更オプションを選択すると、入力フィールドの画面が表示されます。
同様に、詳細オプションと削除オプションを選択すると、同じ情報を表示する画面が表示されますが、入力はできないようになっています。
以下に注意してください。
このアプリケーションは、複数の画面で構成されます。1つの画面は、特定の目的でのみ使用されます(大体の場合は、変更、削除、表示のモードに対応)。
画面が表示される順序は定義済みです。例えば、社員の詳細を変更する場合は、社員入力の処理画面が表示されます。詳細を表示すると、社員の処理画面が表示されます。
作業内容により、自分の望む順序で画面が表示される場合とそうでない場合がありますが、変更できません。画面がたくさんあるので、多くの操作が必要です。例えば、個々の社員の詳細を表示するには、別々のウィンドウを起動する必要があるので、社員情報の比較は困難です。
Visual LANSAアプリケーションは、1つのフォームで構成されます。上のLANSAファンクションと同じアクションを実行します。以下のものがあります。
社員のリスト
複数のフィールド
社員の詳細の変更を保存するボタン、新しい社員を追加するボタン、社員のレコードを削除するボタン
以下に注意してください。
- このアプリケーションは、1つのウィンドウで構成されているので、すべての情報を即座に見ることができます。
- 移動は必要ありません。1つの同じウィンドウを使用し、社員を名字で限定したり、社員を選択したり、詳細を表示したり、変更したり、削除することができます。
- 好きな順序でアクションを実行できます。例えば、いつ(そしてどのような場合に)名字の一部を変更するかを自分で決定できます。
- 情報をすばやく簡単にチェックおよび比較できます。
このようなアプリケーションを作成できるのは、個々のコントロールが自分のイベント・ルーチンを持つからにすぎません。イベント・ルーチンは、個々に実行されるので、以下のようにユーザーのアクションによってウィンドウを動的に変更できます。
- 取得ボタンを押すと、SELECTステートメントが実行され、リストに情報が入力されます。
EVTROUTINE HANDLING(#Get.Click)
change #surname #partname
clr_list #list_1
SELECT FIELDS(#list_1) FROM_FILE(PSLMST2)
WITH_KEY(#SURNAME) GENERIC(*YES)
add_entry #list_1
ENDSELECT
ENDROUTINE
- リストで社員を選択すると、社員の詳細が取得されます。
EVTROUTINE HANDLING(#List_1.ItemGotSelection)
FETCH FIELDS(#ALLFLDS) FROM_FILE(PSLMST) WITH_KEY(#EMPNO)
ENDROUTINE
- 保存ボタンをクリックすると、詳細が更新されます。
EVTROUTINE HANDLING(#SAVE.CLICK)
UPDATE FIELDS(#ALLFLDS) IN_FILE(PSLMST) WITH_KEY(#EMPNO)
ENDROUTINE
- 削除ボタンをクリックすると、詳細が削除されます。
EVTROUTINE HANDLING(#DELETE.CLICK)
DELETE FROM_FILE(PSLMST) WITH_KEY(#EMPNO)
ENDROUTINE
このようなアプリケーションは、LANSA ファンクションでは画面が全体的に処理されるので、実装できません。



