バージョン 4.2.5
 —  パラメータリファレンス  —

SB - 選択ボックス

INPUT ステートメントの選択ボックスは、メインフレームコンピュータでのみ利用可能です。 他のプラットフォームでは、選択ボックスはマップエディタでのみ定義できます。

選択ボックスは入力フィールドに付加することができます。 選択ボックスはコーディングをプログラム内で直接行うことができるため、フィールドにヘルプルーチンを添付する方法に代わる最適な選択肢です。 ヘルプルーチンと同様に、特別なプログラムは必要ありません。

英字タイプのすべての INPUT 変数に対して、このフィールドが入力か出力かに関係なく、選択ボックス節を定義できます。

構文は次のとおりです。

SB=operand1 [,operand1]...

operand1 は、選択ボックスを項目で満たすために使用される値オペランドを表します。

オペランド 構文要素 フォーマット ステートメント参照 ダイナミック定義
operand1 C S A       A                         不可

SB では、選択ボックス内に表示する値を指定します。

選択ボックスをフィールドに割り当てるには

次の構文例を使用して、Natural プログラムの英字 INPUT フィールドに属性 SB を指定します。

INPUT #FLD (SB='value1', #ITEM1, #ITEM2(1:3), #ITEM3(*))

以下では次のトピックについて説明します。


構文上の考慮事項

選択ボックスとヘルプルーチンの両方を 1 フィールドに割り当てることができます。

選択ボックスは、INPUT ステートメントのすべての変数フィールドに定義できます。 例外は次のとおりです。

システム変数 例:*PROGRAM*COM
名前付き定数(メインフレームのみ) DEFINE DATA ステートメントの CONST 節で定義されます。

SB 属性に加えて、他の属性(例:AD または CD)も同様に定義できます。

選択ボックスは、AD=A または AD=M の場合と同様に、修正可能である必要はありません。 つまり、AD=O のように書き込み保護されている出力フィールドにでも、選択ボックス(および選択値)を提供することが可能です。 AD=O を使用する場合、ユーザーは事前に定義された値のセットから選択するように強制されます。これらの値は選択ボックスに表示されます。

Top of page

ランタイムの考慮事項

選択ボックスの位置

選択ボックスを含むプログラムを実行するとき、選択ボックスは、ヘルプウィンドウに使用される同じ位置決めアルゴリズムに従って画面に配置されます。つまり、選択ボックスのサイズと位置は、フィールドの "近く" に自動的に決定されます。

選択ボックスの属性

フィールドに割り当てられたカラーおよび高輝度属性は、対応する選択ボックスに表示される値にも適用されます。

選択ボックスの編集マスク

編集マスクがフィールドに定義されている場合、その編集マスクはすべての選択ボックスの値に適用されます。

フィールドに編集マスクを定義するには

INPUT ステートメントを使用して、フィールドに編集マスクを定義できます。 次のコード例を参照してください。

DEFINE DATA
LOCAL
1 A(A4)
END-DEFINE
MOVE 'ABCD' TO A
*
SET KEY PF1 = HELP
FORMAT KD=ON
*
INPUT A (AD=M EM=X.X.X.X SB='1234','WXYZ')
WRITE A
END

選択ボックスの行サイズ

選択ボックスの行サイズは、ボックスが対応するフィールドの長さに一致します。

選択ボックスに入力された値が選択ボックスの行サイズを超過した場合、値は切り捨てられます。

選択ボックスの値の順序

選択ボックスの値は、SB 属性に指定された順序で表示されます。

Top of page

機能

選択ボックスを表示する方法

選択ボックスが連結されているフィールドには、インジケータ "V" がフィールドの横に表示されます。

選択ボックスの呼び出し

選択ボックスを開くには

選択ボックスを開くには 2 つの方法があります。

選択ボックスを呼び出すヘルプキーを定義するには

選択ボックスを簡単に呼び出せるようにヘルプキー(例:PF1)を定義できます。

そのためには、次のコード行をプログラムに追加します。

SET KEY PF1=HELP

選択ボックスのスクロール

選択ボックスをスクロールするには 2 つの方法があります。

選択ボックスの値の選択

値にカーソルを合わせ、Enter キーを押すと、値が選択ボックスから選択され、フィールドにコピーされます。

選択ボックスの重複行

同じ内容の連続する行は省略されます。

例えば、次のコードにより

INPUT #FLD (SB='123', '456', 'XYZ', 'XYZ', 'XYZ', 'ABC', 'DEF')

選択ボックスに次の出力が生成されます。

123
456
XYZ
ABC
DEF

上記の例では、XYZ は 1 回だけ表示されます。 他のオカレンスは連続しているため、余分であるとみなされます。

ただし、コード行が次のような場合

INPUT #FLD (SB='123', 'XYZ', '456', 'XYZ', 'ABC', 'XYZ', 'DEF')

選択ボックスに次の出力が生成されます。

123
XYZ
456
XYZ
ABC
XYZ
DEF

この場合、XYZ の 3 オカレンスは連続していないため、すべて表示されます。

選択ボックスの空行

空行については、最初に出現するもののみが表示されます。後続のすべての空行は省略されます。

Top of page

制限事項

SB 節のオペランドの数は 20 個に制限されます。

選択ボックスの値の最大数は 248 個です。 その制限に達すると、以降の値は表示されません。 制限を超過したときにエラーメッセージは発行されません。

Top of page