SET KEY

このドキュメントでは、次のトピックについて説明します。


関数

SET KEY ステートメントは、次のタイプのキーに機能を割り当てるために使用します。

  • ビデオ端末 PA(プログラムアテンション)キー

  • PF(プログラムファンクション)キー

  • CLEAR キー。

SET KEY ステートメントを実行すると、Natural はプログラム実行中にキーの制御を受け取り、各キーに割り当てられた値を使用します。

Natural システム変数 *PF-KEY は、最後に押されたキーを示します。

注意:
機能が割り当てられていないキーを押すと、有効なキーを押すように促す警告メッセージが発行されるか、または Natural システム変数 *PF-KEY に値 ENTR が設定されます。つまり、Natural は ENTER キーが押されたときと同様に処理します。これは、Natural 管理者が Natural プロファイルパラメータ IKEY をどのように設定したかによります。

構文説明

このステートメントには、いくつかの構造を使用できます。

構文図で使用されている記号については、「構文記号」を参照してください。

構文 1 - すべてのキーに有効:

SET KEY

ALL
ON
OFF

COMMAND

ON
OFF

NAMED OFF

構文 2 - 個々のキーに有効:

SET KEY

PAn
PFn
CLR
DYNAMIC operand1

=

 

ON
OFF
DISABLED

COMMAND

ON
OFF

構文 3 - 個々のキーに有効:

SET KEY

PAn
PFn
CLR
DYNAMIC operand1

 

PGM

           

 
PROGRAM
=

operand2
HELP
DATA operand3

NAMED

operand4
OFF

 
 
               
                                 
                                 
ENTR

NAMED

operand4
OFF

         

オペランド定義テーブル:

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand1   S       A                         ×
operand2 C S       A U                       ×
operand3 C S       A U                       ×
operand4 C S       A U                       ×

キーのプログラム察知の有効化/キーの解除

キーをプログラム察知可能にするとは、現在アクティブなプログラムによるキーの問い合わせを可能にするということです。キーをプログラム察知可能にすると、キーの押下は ENTER キーを押したときと同様の効果を持ちます。画面に入力されたすべてのデータがプログラムに転送されます。

注意:
PA キーや CLEAR キーをプログラム察知可能にしたときは、画面のデータは転送されません。

プログラム察知は、現在のプログラムの実行に対してのみ有効です。「異なるプログラムレベルでの SET KEY ステートメント」も参照してください。

例:

SET KEY ALL このステートメントでは、すべてのキーをプログラム察知可能にします。各キーに割り当てられたすべての機能が上書きされます。

SET KEY PF2
SET KEY PF2=PGM

これらの各ステートメントでは、PF2 をプログラム察知可能にします。
SET KEY OFF このステートメントでは、すべてのキー設定を解除します。Natural システム変数 *PF-KEY には、SET KEY OFF の実行後に ENTR が含まれます。
SET KEY ON このステートメントでは、設定が解除される前にすべてのキーに割り当てられていた機能を再び有効にし、プログラム察知可能だったすべてのキーを察知可能にします。
SET KEY PF2=OFF このステートメントでは、PF2 の設定を解除します。SET KEY PF2=OFF の実行後、Natural システム変数 *PF-KEY に以前 PF2 が含まれていた場合、ENTR が含まれます。
SET KEY PF2=ON このステートメントでは、設定が解除される前に PF2 に割り当てられていた機能を再び有効にし、プログラム察知可能にします。PF2 に機能が割り当てられていなかった場合は、再びプログラム察知可能にします。

キーのプログラム察知と *PF-KEY の内容

次の例は、キーのプログラム察知とシステム変数 *PF-KEY の内容の関係を示しています。

PF2SET 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' コマンド SAVEPF4 に割り当てられます。
SET KEY PF4=#XYX 変数 #XYZ の値が PF4 に割り当てられます。
SET KEY PF6='LIST MAP *' コマンド LISTLIST パラメータ 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/ON

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 の割り当て

HELP をキーに割り当てることができます。キーが押されると、カーソルが現在置かれているフィールドに割り当てられているヘルプルーチンが呼び出されます。

これはヘルプを呼び出すフィールドにヘルプ文字を入力した場合と同様です。ヘルプ文字(デフォルトでは疑問符(?))は、Natural プロファイルパラメータ HI(Natural 管理が設定)によって決定されます。

例:

SET KEY PF1=HELP

HELP 割り当ての整合性については、プログラム察知と同様のことが適用されます。つまり、現在のプログラムの実行にのみ有効です。「異なるプログラムレベルでの SET KEY ステートメント」も参照してください。

DYNAMIC オプション

SET KEY ステートメントで特定のキーを指定する代わりに、DYNAMIC オプションを変数( operand1 )とともに使用し、プログラム内でこの変数に値(PFnPAnCLR)を割り当てることができます。これにより、どのキーに機能を割り当てるかをプログラムロジックによって指定できます。

例:

...
IF ...
   MOVE 'PF4' TO #KEY
ELSE
   MOVE 'PF7' TO #KEY
END-IF
...
SET KEY DYNAMIC #KEY = 'SAVE'  
...

DISABLED オプション

プッシュボタン、メニュー、ビットマップなどのグラフィカルユーザーインターフェイス(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 ステートメントが指定されるまで、下位レベルの(呼び出される)全プログラムにもこのプログラム察知が適用されます。制御が上位レベルのプログラムに返されると、上位レベルでの SET KEY 割り当てが再び有効になります。

  • HELP キーとして定義されたキーについては、プログラム察知可能なキーと同様のことが適用されます。

  • キーに機能(プログラム、コマンド、端末コマンド、データ文字列)が割り当てられると、この割り当ては(割り当てが行われたレベルに関係なく)すべての上位レベルおよび下位レベルで有効です。これは、そのキーに別の機能が割り当てられるか、キーがプログラム察知可能になるまで、別のアプリケーションにログオンするまで、または Natural セッションが終了するまで有効です。

異なるプログラムレベルでの SET KEY ステートメントの例

Example

名前の割り当て

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 では、プログラム察知可能なキーに割り当てた名前を削除できます。

例:

SET KEY ENTR NAMED 'EXEC' ENTER キーに EXEC という名前を割り当てます。
SET KEY PF3 NAMED 'EXIT' PF3 をプログラム察知可能にし、PF3EXIT という名前を割り当てます。
SET KEY PF3 NAMED OFF PF3 をプログラム察知可能にし、PF3 に割り当てられている名前を削除します。
SET KEY NAMED OFF プログラム察知可能な各キーに割り当てられているすべての名前を削除します。
SET KEY PF4='AP1' NAMED 'APPL1' PF4 にプログラム AP1 および名前 APPL1 を割り当てます。

標準タブ 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

プログラム SKYEX1 の出力:

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