HE - ヘルプルーチン

このセッションパラメータでは、フィールドにヘルプルーチンまたはヘルプマップを割り当てます。

可能な設定   下記の「HE パラメータの構文」を参照してください。
デフォルト設定 なし  
セッション内の指定  
適用可能なステートメント INPUT  
適用可能なコマンド なし  

ヘルプルーチンは Natural プログラムエディタで作成し、ヘルプマップは Natural マップエディタで作成できます。

その後、ヘルプルーチンまたはヘルプマップは、次のいずれかの方法を使用して、INPUT ステートメントまたはマップの処理中に呼び出すことができます。

  • ヘルプ要求を呼び出すフィールドで、フィールドの左端の位置にヘルプ文字を入力し、ENTER キーを押します。デフォルトのヘルプ文字は疑問符(?)です。

    フィールドの別の位置にヘルプ文字を入力した場合、または複数の文字を入力した場合、その文字列はユーザー入力として使用され、ヘルプは呼び出されません。フィールドに 16 進数のゼロが含まれている場合、Natural が値をヘルプリクエストとして解釈できるかどうかは、端末エミュレーションによって異なります。

  • または:

    ヘルプ要求を呼び出すフィールドにカーソルを置き、SET KEY ステートメントでヘルプファンクションキーとして定義されている PF キーを押します。

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


HE パラメータの構文

このパラメータの構文は次のとおりです。

HE=operand1

,

operand2

...20
=
nX

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

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand1 C S         A                         × ×
operand2 C S A       A U N P I F B D T L C   O × ×

構文要素の説明:

構文要素 説明
operand1 operand1 は、呼び出すヘルプルーチンまたはヘルプマップの名前です。名前には、1~8 文字の英数字定数またはユーザー定義変数を使用できます。変数を使用する場合、事前にこれを定義しておく必要があります。名前にはアンパサンド(&)を含めることができます。この文字は、実行時に Natural システム変数 *LANGUAGE の現在の値に対応する 1 文字コードで置き換えられます。この機能により、複数言語のヘルプルーチンまたはヘルプマップを使用できるようになります。
operand2 ヘルプルーチンまたはヘルプマップに渡される 1 ~ 20 のパラメータ(operand2)を指定できます。これらのパラメータは、定数として指定することも、パラメータ値を含むユーザー定義変数として指定することもできます。
= 等号(=)は、オブジェクト名またはフィールド名をヘルプルーチンまたはヘルプマップに渡すために使用します。
  • ステートメントレベルで HE= 指定に等号を入力した場合、実行対象のオブジェクト(システム変数 *PROGRAM に含まれる)の名前がヘルプルーチンまたはヘルプマップに渡されます。例 3 では、渡されるオブジェクト名は PROGRAM1 です。

  • フィールドレベルで HE= 指定に等号を入力した場合、フィールドの名前がヘルプルーチンまたはヘルプマップに渡されます。例 3 では、渡されるフィールド名は #PARM1 です。

等号をパラメータとして使用する場合、ヘルプルーチンまたはヘルプマップ内の対応するパラメータをフォーマット/長さ A65 で指定する必要があります。

nX 表記 nX は、省略する(つまり、値が渡されない)パラメータを指定するために使用できます。呼び出されたヘルプルーチンの DEFINE DATA PARAMETER ステートメント内の対応する受け取り側パラメータは、OPTIONAL として定義する必要があります。

注意:

  1. オペランドは、入力デリミタ文字(セッションパラメータ ID で指定)またはコンマで区切る必要があります。ただし、セッションパラメータ DC でコンマを小数点文字として定義している場合は、この目的でコンマを使用することはできません。
  2. パラメータ指定がある場合、ヘルプルーチンは DEFINE DATA PARAMETER ステートメントで始める必要があります。このステートメントでは、パラメータと同じフォーマットと長さのフィールドを定義します。
  3. ヘルプルーチンが指定されたフィールドの値をヘルプルーチン内で参照できます。その場合、元のフィールドと同じフォーマットと長さのフィールドを DEFINE DATA PARAMETER ステートメントで指定します。DEFINE DATA PARAMETER ステートメント内で定義されたフィールドのブロックで、このフィールドは必ずパラメータ(存在する場合)の後に定義する必要があります。
  4. ヘルプルーチンが指定されたフィールドが配列要素である場合、そのインデックスをヘルプルーチンで参照できます。そのためには、DEFINE DATA PARAMETER ステートメントの最後にフォーマット I(整数)、N(アンパック型数値)、または P(パック型数値)でインデックスパラメータを指定します。配列の次元に応じて、最大 3 つのインデックスパラメータを指定できます。

ヘルプルーチンの実行

フィールドに疑問符(?)を入力するか、ヘルプキー(SET KEY ステートメントで定義)を押すか、または REINPUT USING HELP ステートメントを使用することでヘルプルーチンまたはヘルプマップを要求した場合、フィールドに入力した他のすべてのデータは、ヘルプ要求がすべて処理されるまでプログラム変数には割り当てられません。

注意:
1 つの INPUT ステートメントでは 1 つのヘルプ要求のみが可能です。つまり、ヘルプが複数のフィールドで要求された場合(例えば、複数のフィールドに疑問符を入力)、最初のヘルプ要求のみが実行されます。

例 1

/* MAIN PROGRAM 
DEFINE DATA
1 #A(A20/1:3) 
END-DEFINE 
... 
SET KEY PF1=HELP 
... 
INPUT #A (2) (HE='HELPA',=) 
... 
END

例 2

/* HELP-ROUTINE 'HELPA' 
DEFINE DATA PARAMETER 
1 #VARNAME  (A65) 
1 #PARM1    (A20) 
1 #VARINDEX (I2) 
END-DEFINE 
...

例 3:

* Program 'PROGRAM1' 
*
DEFINE DATA LOCAL                       
1 #PARM1 (A65) INIT <'valueparm1'>      
END-DEFINE                              
SET KEY PF1 = HELP                      
FORMAT KD=ON                            
*                                       
INPUT (AD=M HE='HELP1',=)               
  'Enter ? for name of executed object:'
  / #PARM1                              
*                                       
INPUT (AD=M)                            
  'Enter ? for field name:'             
  / #PARM1 (HE='HELP1',=)
*               
END

サンプルヘルプルーチン HELP1 内のパラメータデータエリア:

* Helproutine 'HELP1' 
*
DEFINE DATA PARAMETER 
1 #FLD1 (A65) 
END-DEFINE 
...