このドキュメントでは、次のトピックについて説明します。
SET KEY ステートメントは、次のタイプのキーに機能を割り当てるために使用します。
SET KEY ステートメントを実行すると、Natural はプログラム実行中にキーの制御を受け取り、各キーに割り当てられた値を使用します。
Natural システム変数 *PF-KEY は、最後に押されたキーを示します。
注意:
機能が割り当てられていないキーを押すと、有効なキーを押すように促す警告メッセージが発行されるか、または Natural システム変数 *PF-KEY に値 ENTR が設定されます。つまり、Natural は ENTER キーが押されたときと同様に処理します。これは、Natural 管理者が Natural プロファイルパラメータ IKEY をどのように設定したかによります。
このステートメントには、いくつかの構造を使用できます。
構文図で使用されている記号については、「構文記号」を参照してください。
SET KEY |
|
|
||||
COMMAND |
|
|
||||
NAMED OFF |
||||||
SET KEY |
|
|
|
|
= |
|
|
|
||||||
COMMAND |
|
|
||||||||||||
SET KEY |
|
|
|
|
|
|
PGM |
|
|
|
|
||||||||||
PROGRAM |
|||||||||||||||||||||
= |
|
NAMED |
|
|
|
||||||||||||||||
ENTR |
|
NAMED |
|
operand4 |
|
|
|
||||||||||||||
オペランド定義テーブル:
| オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 |
S | A | ○ | × | ||||||||||||||||
operand2 |
C | S | A | U | ○ | × | ||||||||||||||
operand3 |
C | S | A | U | ○ | × | ||||||||||||||
operand4 |
C | S | A | U | ○ | × | ||||||||||||||
キーをプログラム察知可能にするとは、現在アクティブなプログラムによるキーの問い合わせを可能にするということです。キーをプログラム察知可能にすると、キーの押下は ENTER キーを押したときと同様の効果を持ちます。画面に入力されたすべてのデータがプログラムに転送されます。
注意:
PA キーや CLEAR キーをプログラム察知可能にしたときは、画面のデータは転送されません。
プログラム察知は、現在のプログラムの実行に対してのみ有効です。「異なるプログラムレベルでの SET KEY ステートメント」も参照してください。
例:
次の例は、キーのプログラム察知とシステム変数 *PF-KEY の内容の関係を示しています。
PF2 が SET KEY PF2=PGM によりプログラム察知可能になっていて、後で INPUT ステートメントが実行されることを前提としています。次の表は、ユーザーアクションと実行される Natural ステートメントが *PF-KEY の内容にどのように影響するかを示しています。
| シーケンス | 実行される Natural ステートメント/ユーザーアクション | *PF-KEY の内容 |
|---|---|---|
| 1 | ユーザーによる PF2 の押下 | PF2 |
| 2 | SET KEY OFF |
ENTR |
| 3 | SET KEY ON |
PF2 |
| 4 | SET KEY PF2=OFF |
ENTR |
| 5 | SET KEY PF2=ON |
PF2 |
| 6 | SET KEY PF3=OFF |
PF2 |
コマンドまたはプログラム名をキーに割り当てたり、割り当てを削除したりできます。キーが押されると、現在のプログラムは終了し、そのキーに割り当てられているコマンド/プログラムが Natural スタックを介して呼び出されます。コマンド/プログラムを割り当てる場合、コマンド/プログラムにパラメータを渡すこともできます(下記の 3 番目の例を参照)。
端末コマンドをキーに割り当てることもできます。キーが押されると、キーに割り当てられている端末コマンドが実行されます。
operand2 を定数として指定する場合は、一重引用符で囲む必要があります。
例:
SET KEY PF4='SAVE' |
コマンド SAVE が PF4 に割り当てられます。
|
SET KEY PF4=#XYX |
変数 #XYZ の値が PF4 に割り当てられます。
|
SET KEY PF6='LIST MAP *' |
コマンド LIST(LIST パラメータ MAP および * を含む)が PF6 に割り当てられます。
|
SET KEY PF2='%%' |
端末コマンド %% が PF2 に割り当てられます。
|
SET KEY PF9=' ' |
以前に PF9 に割り当てられたコマンドと名前が削除されます。 |
この割り当ては、別の SET KEY ステートメントで上書きされるまで、別のアプリケーションにログオンするまで、または Natural セッションが終了するまで有効です。「異なるプログラムレベルでの SET KEY ステートメント」も参照してください。
注意:
キーを通して呼び出されたプログラムを実行する前に、Natural は BACKOUT TRANSACTION ステートメントを内部的に発行します。
データ文字列(operand3)をキーに割り当てることができます。キーが押されると、カーソルが現在置かれている入力フィールドにデータ文字列が挿入され、データは実行中のプログラムに転送されます(ENTER キーが押された場合と同様)。
operand3 を定数として指定する場合は、一重引用符で囲む必要があります。
例:
SET KEY PF12=DATA 'YES'
DATA 割り当ての整合性については、コマンド割り当てと同様のことが適用されます。つまり、別の SET KEY ステートメントで上書きされるまで、別のアプリケーションにログオンするまで、または Natural セッションが終了するまで有効です。「異なるプログラムレベルでの SET KEY ステートメント」も参照してください。
COMMAND OFF では、キーに割り当てられている各機能(コマンド、プログラム、データ)を一時的に解除できます。機能が割り当てられる前にキーがプログラム察知可能であった場合、COMMAND OFF によってそのキーが再び察知可能になります。
その後に COMMAND ON を使用して、割り当てられていた機能を再び有効にすることができます。
例:
SET KEY PF4=COMMAND OFF |
PF4 に割り当てられている機能が一時的に解除されます。機能が割り当てられる前に PF4 がプログラム察知可能であった場合、再び察知可能になります。 |
SET KEY PF4=COMMAND ON |
PF4 に割り当てられていた機能が再び有効になります。 |
SET KEY COMMAND OFF |
すべてのキーに割り当てられている全機能が一時的に解除されます。機能が割り当てられる前にこれらのキーがプログラム察知可能であった場合、再び察知可能になります。 |
SET KEY COMMAND ON |
すべてのキーに割り当てられていた全機能が再び有効になります。 |
SET KEY PFnn='' では、キーに割り当てられている機能を削除し、それと同時にキーのプログラム察知を解除できます。
HELP をキーに割り当てることができます。キーが押されると、カーソルが現在置かれているフィールドに割り当てられているヘルプルーチンが呼び出されます。
これはヘルプを呼び出すフィールドにヘルプ文字を入力した場合と同様です。ヘルプ文字(デフォルトでは疑問符(?))は、Natural プロファイルパラメータ HI(Natural 管理が設定)によって決定されます。
例:
SET KEY PF1=HELP
HELP 割り当ての整合性については、プログラム察知と同様のことが適用されます。つまり、現在のプログラムの実行にのみ有効です。「異なるプログラムレベルでの SET KEY ステートメント」も参照してください。
SET KEY ステートメントで特定のキーを指定する代わりに、DYNAMIC オプションを変数( operand1 )とともに使用し、プログラム内でこの変数に値(PFn、PAn、CLR)を割り当てることができます。これにより、どのキーに機能を割り当てるかをプログラムロジックによって指定できます。
例:
... IF ... MOVE 'PF4' TO #KEY ELSE MOVE 'PF7' TO #KEY END-IF ... SET KEY DYNAMIC #KEY = 'SAVE' ...
プッシュボタン、メニュー、ビットマップなどのグラフィカルユーザーインターフェイス(GUI)エレメントは PF キーとして実装されています。DISABLED オプションでは、PF キーに割り当てられた GUI エレメントを使用できないようにします。これにより、プッシュボタンとメニュー項目が灰色表示されます。
SET KEY
PFnn=DISABLED の設定を解除するには、SET KEY
PFnn=ON を使用します。
例:
SET KEY PF10=DISABLED |
PF10 に割り当てられた GUI エレメントを使用できないようにします。 |
DISABLED オプションは処理ルール内でのみ使用できます。
アプリケーション内の異なるレベルで SET KEY ステートメントが指定されている場合、次のことが適用されます。
キーがプログラム察知可能な場合、各プログラムで別の SET KEY ステートメントが指定されるまで、下位レベルの(呼び出される)全プログラムにもこのプログラム察知が適用されます。制御が上位レベルのプログラムに返されると、上位レベルでの SET KEY 割り当てが再び有効になります。
HELP キーとして定義されたキーについては、プログラム察知可能なキーと同様のことが適用されます。
キーに機能(プログラム、コマンド、端末コマンド、データ文字列)が割り当てられると、この割り当ては(割り当てが行われたレベルに関係なく)すべての上位レベルおよび下位レベルで有効です。これは、そのキーに別の機能が割り当てられるか、キーがプログラム察知可能になるまで、別のアプリケーションにログオンするまで、または Natural セッションが終了するまで有効です。

NAMED 節を使用して、キーに名前( operand4 )を割り当てることができます。名前は画面上の PF キー行に表示されます。これにより、キーに割り当てられている機能を識別できます。
? Help
. Exit
---- ----------------------------------------------------
Code ..: ? Library ..: *_______
Object ...: *_______________________________________
DBID .....: 0__ FILENR ...: 0__
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
Help Exit Last Flip Canc
|
PF キー行の表示はセッションパラメータ KD(『パラメータリファレンス』ドキュメントを参照)で有効になります。PF キー行の表示方法は端末コマンド %Y(『端末コマンド』ドキュメントを参照)で制御できます。
キーに割り当てる名前の最大長は 10 文字です。標準タブ PF キー行形式(%YN)では、最初の 5 文字だけが表示されます。
operand4 を定数として指定する場合は、一重引用符で囲む必要があります(下記の例を参照)。
機能を割り当てていないキーやプログラム察知可能でないキーに名前を割り当てることはできません。ただし、ENTER キーだけには機能を割り当てなくても名前を割り当てることができます。
NAMED OFF では、プログラム察知可能なキーに割り当てた名前を削除できます。
例:
標準タブ PF キー行形式(%YN)を使用する場合、次のことが適用されます。
キーにコマンド/プログラムを割り当てる際に NAMED 節を省略すると、コマンド/プログラム名が PF キー行に表示されます。コマンド/プログラム名が 5 文字を超過すると、CMND が表示されます。
キーに入力データを割り当てる際に NAMED 節を省略すると、DATA が PF キー行に表示されます。
(NAMED 節を使用して)名前を Unicode フォーマットで PF キーに割り当てる場合、名前が対応するヘッダーに正しく配置されないことがあります。ただし、この問題は、Natural Web I/O インターフェイスを使用している場合、およびワイド文字に対してのみ発生します。この場合、順次 PF キー行形式(%YS または %YP)を使用することをお勧めします。
順次 PF キー行形式(%YS または %YP)を使用すると、名前を割り当てたキーのみが PF キー行に表示されます。つまり、キーにコマンド/プログラム/データを割り当てる際に NAMED 節を省略すると、キーは PF キー行に表示されません。
** Example 'SKYEX1': SET KEY
************************************************************************
DEFINE DATA LOCAL
1 #PF4 (A56)
END-DEFINE
*
MOVE 'LIST VIEW' TO #PF4
*
SET KEY PF1 PF2
SET KEY PF3 = 'MENU'
PF4 = #PF4
PF5 = 'LIST VIEW EMPLOYEES' NAMED 'Empl'
*
FORMAT KD=ON
INPUT ////
10X 'The following function keys are assigned:' //
10X 'PF1: Function for PF1 ' /
10X 'PF2: Function for PF2 ' /
10X 'PF3: Return to MENU program' /
10X 'PF4: LIST VIEW ' /
10X 'PF5: LIST VIEW EMPLOYEES ' ///
*
IF *PF-KEY = 'PF1'
WRITE 'Function for PF1 executed.'
END-IF
IF *PF-KEY = 'PF2'
WRITE 'Function for PF2 executed.'
END-IF
*
END
The following function keys are assigned:
PF1: Function for PF1
PF2: Function for PF2
PF3: Return to MENU program
PF4: LIST VIEW
PF5: LIST VIEW EMPLOYEES