!--a11y-->

プログラムが論理データベースにリンクされており、この論理データベースのテーブルに割り当てられる選択基準をプログラム内で定義する場合は、この 2 つの関係を区別する必要があります。つまり、このデータベーステーブルに対して動的選択が可能かどうかを定義します。
動的選択をサポートしないデータベーステーブルの列に対して選択基準を定義する場合は、この選択基準は、論理データベースによって読み込まれるデータの量に影響を与えません。データレコードが読み込まれた後、これに対するチェックを GET イベント内で実行することができます。
動的選択 をサポートするデータベーステーブルの列に対して選択基準を定義する場合は、選択画面に入力された値が論理データベースに転送されます。論理データベースでは、これらの値が動的選択として処理されます。論理データベースは、この選択基準に該当しないレコードはデータベーステーブルから読み込みません。これは、動的選択に対応するように設計されていないデータベーステーブルを使用する選択より、はるかに効率の良い選択方法です。
さらに、対応する動的選択の入力項目が、最初から選択画面に表示されます。したがって、ユーザは 動的画面を選択して対応する画面を表示する必要がありません。
しかし、たとえばデータベースアクセスの制限によって選択基準が使用できない場合など、選択基準に該当しない行も論理データベースに読み込まれることになる場合は、次の特別の追加オプションを使用する必要があります。
SELECT-OPTIONS <seltab> FOR <f> .....NO DATABASE SELECTION .....

以下のプログラムは、論理データベース F1S にリンクされています。
REPORT DEMO.
NODES SPFLI.
SELECT-OPTIONS CONN FOR SPFLI-CONNID NO DATABASE SELECTION.
GET
SPFLI.
IF SPFLI-CONNID IN CONN.
WRITE: SPFLI-CARRID, SPFLI-CONNID, 'meets
criterion'.
ELSE.
WRITE: SPFLI-CARRID, SPFLI-CONNID,
'does not meet criterion'.
ENDIF.
以下の選択画面が表示されます。最初の部分は論理データベースで定義され、最後の行 (接続) はプログラム内で定義されます。
ユーザが入力項目に上図のように入力した場合は、出力結果は次のようになります。
LH 2402 does not meet criterion
LH 2436 meets criterion
LH 2462 does not meet criterion
次のプログラムは、NO DATABASE SELECTION オプションを使用しません。
REPORT DEMO.
NODES SPFLI.
SELECT-OPTIONS CONN FOR SPFLI-CONNID.
GET
SPFLI.
IF SPFLI-CONNID IN CONN.
WRITE: SPFLI-CARRID, SPFLI-CONNID, 'meets
criterion'.
ELSE.
WRITE: SPFLI-CARRID,
SPFLI-CONNID,
'does
not meet criterion'.
ENDIF.
先と同じ入力値を使用すると、出力結果は次のようになります。
LH 2436 meets criterion
この出力結果は、SELECT-OPTIONS 文を使用せず、ユーザが選択画面のアプリケーションツールバーで動的選択を選択してから、2436 と入力した場合と同じです。