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
を使用する場合、ユーザーは事前に定義された値のセットから選択するように強制されます。これらの値は選択ボックスに表示されます。
選択ボックスを含むプログラムを実行するとき、選択ボックスは、ヘルプウィンドウに使用される同じ位置決めアルゴリズムに従って画面に配置されます。つまり、選択ボックスのサイズと位置は、フィールドの "近く" に自動的に決定されます。
フィールドに割り当てられたカラーおよび高輝度属性は、対応する選択ボックスに表示される値にも適用されます。
編集マスクがフィールドに定義されている場合、その編集マスクはすべての選択ボックスの値に適用されます。
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
属性に指定された順序で表示されます。
選択ボックスが連結されているフィールドには、インジケータ "V" がフィールドの横に表示されます。
選択ボックスを開くには 2 つの方法があります。
V フィールドに疑問符(?)を入力し、Enter キーを押します。
V フィールドにカーソルを合わせ、ヘルプキー(例:PF1)を押します(そのように定義している場合)。 詳細については、次のセクションを参照してください。
選択ボックスを簡単に呼び出せるようにヘルプキー(例:PF1)を定義できます。
そのためには、次のコード行をプログラムに追加します。
SET KEY PF1=HELP
選択ボックスをスクロールするには 2 つの方法があります。
MORE
行にカーソルを合わせ、Enter キーを押します。
PF キー(例:PF7/PF8)に割り当てられた端末コマンド %W-
および %W+
を使用します。
値にカーソルを合わせ、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 オカレンスは連続していないため、すべて表示されます。
空行については、最初に出現するもののみが表示されます。後続のすべての空行は省略されます。
SB
節のオペランドの数は 20 個に制限されます。
選択ボックスの値の最大数は 248 個です。 その制限に達すると、以降の値は表示されません。 制限を超過したときにエラーメッセージは発行されません。