イベント ループ方式

イベント ループ方式を使用すると、高度な画面処理が可能です。柔軟性が非常に高く、コーディングの作業も大幅に削減されます。

イベント ループは 3 つの要素で構成されます。

  • ループ制御。ループを終了する条件を指定します。
  • イベントの実行。ループ制御の条件を満たすまで、ループの繰り返しごとに 1 つのイベントが発生します。
  • イベントのテスト。イベントを評価するためのアプリケーション プログラムによる 1 つ以上のチェックで構成されます。アプリケーション プログラムは、各イベントを指示するのではなく、現在のイベントに応答します。

RM/Panels のイベント ループの例

PERFORM UNTIL F3-KEY-PRESSED    (Loop Control) 
     PERFORM RMP--EE-PANELNAME  (Execution) 
     EVALUATE RMP--LAST-FIELD
        WHEN "CUSTOMER-NUMBER"  (Event Test)
           PERFORM VALIDATE-CUSTOMER-NUMBER
        WHEN "CUSTOMER-STATE"   (Event Test)
           PERFORM VALIDATE-CUSTOMER-STATE 
     END-EVALUATE
END-PERFORM.

画面上のフィールド/コントロールにイベントが入力され、プロシージャ RMP--EE-PANELNAME によって実行されます。このプロシージャは、RM/Panels の EXECUTE EVENT 標準ランタイム関数を実行します。EXECUTE EVENT 標準ランタイム関数は次のことを行います。

  • 渡されたパラメーターを調べて、実行するイベントを特定します。
  • イベント (フィールド/コントロールへの入力) を実行します。
  • 実行されたイベントと次に実行するイベントを示すパラメーターを設定します。
  • アプリケーション プログラムに制御を戻します。

EXECUTE EVENT 標準ランタイム関数が実行されるたびに 1 つのイベントのみが実行されるため、アプリケーション プログラムは任意のイベントの後にいつでも制御を遮断できます。その後、特別な処理を実行したり、特定のイベントを強制的に発生させることができます。

イベント ループ方式を使用すると、次のようなさまざまな利点があります。

  1. 面倒な画面処理コードを記述する必要がなくなります。
  2. フィールド/コントロール レベルの特別なロジックの追加が簡単になります。
  3. フィールド/コントロールの入力順や位置を変更しても、フィールド/コントロール レベルのロジックには影響しません。
  4. 画面処理コードのサイズは、画面上のフィールド/コントロールの数ではなく、実行される特別な処理の量に依存します。
  5. 特別な処理が必要なフィールド/コントロールでなければ、新しいフィールド/コントロールを追加してもイベント ループには影響しません。
  6. イベント ループは入れ子にすることができるため、複数のパネルを画面上で使用できます。複数のパネルを使用する方法とイベント ループを入れ子にする場合の特別な考慮事項については、次のセクションで説明します。