X"B0" function 0

ファンクション キー テーブルを作成します。

注: このルーチンはネイティブ COBOL でのみサポートされます。

構文:

call X"B0" using function-code
                 key-table

パラメーター:

function-code
呼び出しプロトタイプ:cblt-x1-compx
PIC:pic x comp-x
key-table
次を含むグループ:
01 key-table 03 key-pressed cblt-x1-compx *> pic x comp-x.03 key-entry-list *> Group item defined as one iteration *> of the following for each key to be *> detected: 05 key-entry-len cblt-x1-compx *> pic x comp-x.05 key-entry pic x(n) *> pic x(n) 03 key-list-end cblt-x1-compx *> pic x comp-x.

入力パラメーター:

function-code 0 を含みます。
key-entry-len key-entry のバイト長 (1 または 2)。
key-entry 必要なキーで生成されるコード シーケンス。
key-list-end 0 を含みます。

出力パラメーター:

key-pressed 使用されたキーと一致するテーブル エントリ。一致するエントリがない場合はゼロになります。

説明:

ACCEPT 文は、通常、データ入力で使用されるキーのみを制御キーとして認識し、Enter キーが押されると終了します。その他の制御キーについては、ビープ音が鳴り、拒否されます。このライブラリ ルーチンを呼び出すと、その他の制御キーおよびファンクション キーが使用可能になります。

このルーチンでは、追加で認識されるようにする各キーに対応するキーコード シーケンスのテーブルを宣言します。各キーによって送信されるコード シーケンスの詳細については、IBM の『パーソナル コンピューター テクニカル リファレンス マニュアル』を参照してください。

このルーチンが呼び出された後、ACCEPT 文は、Enter キーまたはテーブル内のエントリに一致するコード シーケンスを持ついずれかのキーが押されると終了します。その際、テーブルの先頭バイトに、テーブル内のどのエントリと一致したかを示す番号が格納されます。ゼロは、Enter キーが使用されたことを示します。Enter キーに対応するエントリがテーブル内にある場合は、ゼロではなく、そのキーのエントリ番号が返されます。

このルーチンでは、使用するテーブルを必要なだけ変えることができます。現在のテーブルが変更された場合に (キーが変更された場合や長さが増えた場合など)、ルーチンを再度呼び出す必要はありません。

特定のプログラムで使用されるテーブルは、このルーチンの別の呼び出しによって置き換えられるまで、そのプログラムに対して有効なままであり、同パッケージ内の他のプログラムによってこのルーチンが何度呼び出されても影響はありません。

この機能を使用するプログラム パッケージ内のプログラムごとにテーブルを明示的に設定する必要があります。連絡節でテーブルを渡すだけでは不十分です。

送信されるキーコードを把握している限り、任意のキーをテーブルで定義できます。たとえば、長さが 1 でキーコードが pic X VALUE "C" のテーブル エントリを指定すると、文字 C によって ACCEPT が終了することになります。したがって、このようなキーを使用して ACCEPT を「中断」し、独自の処理を実行してから、ACCEPT 文に戻ることもできます。これにより、特定のキーの効果を再定義したことになります。

結果のバイトは、定義されたテーブル内のキーが押されて、ACCEPT が終了した際に、およびこのルーチンが呼び出されるたびに設定されます。この場合、文字コード x"0D" が CBL_READ_KBD_CHAR ルーチンに返され、テーブル内のどのキーが押されたかが結果のバイトで示されます。つまり、CBL_READ_KBD_CHAR を使用すれば、ファンクション キーを含むすべてのキーストロークを読み取ることができます。

キーによって送信されるコード シーケンスの完全なリストについては、ご使用のパーソナル コンピューターのテクニカル リファレンス マニュアルを参照してください。

この呼び出しで定義されたキーは、Adiscf で定義されたキーよりも優先されます。

Adiscf で設定され、x"AF" 呼び出しで使用されるファンクション キー テーブルは、x"B0" 呼び出しで使用されるファンクション キー テーブルとは別のものです。x"B0" テーブル内のすべてのキー シーケンスで、キャリッジ リターン文字 (x"0D") を Adis に返すことで、両方のテーブルを同時に有効にすることができます。