バージョン 4.2.5
 —  プログラミングガイド  —

ヘルプルーチン

ヘルプルーチンには、ヘルプ要求の処理を容易にするための特徴があります。 複雑な対話形式のヘルプシステムを実装するために使用できます。 ヘルプルーチンはプログラムエディタで作成します。

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


ヘルプの呼び出し

Natural ユーザーは、ヘルプ文字をフィールドに入力するか、または、ヘルプキー(通常は PF1)を押して Natural ヘルプルーチンを呼び出すことができます。 デフォルトのヘルプ文字は疑問符(?)です。

ヘルプルーチンが数値フィールドに対して指定されている場合、Natural ではそのフィールドのヘルプルーチンを呼び出す目的で疑問符を入力できます。 その場合も、Natural ではフィールド入力として有効な数値データが提供されることをチェックします。

まだ指定されていない場合は、SET KEY ステートメントでヘルプキーを指定できます。

SET KEY PF1=HELP

ヘルプルーチンは、それが呼び出されるプログラムまたはマップに指定されている場合にのみ、ユーザーが呼び出すことができます。

Top of page

ヘルプルーチンの指定

ヘルプルーチンは次のように指定できます。

ヘルプが指定されていないフィールドに対してヘルプが要求された場合や、参照するフィールドのないヘルプが要求された場合は、ステートメントレベルまたはマップレベルで指定されたヘルプルーチンが呼び出されます。

ヘルプルーチンは、プログラム自体または処理ルール内の REINPUT USING HELP ステートメントを使用して呼び出すこともできます。 REINPUT USING HELP ステートメントに MARK オプションが含まれている場合は、MARK されたフィールドに割り当てられているヘルプルーチンが呼び出されます。 フィールド固有のヘルプルーチンが割り当てられていない場合は、マップのヘルプルーチンが呼び出されます。

ヘルプルーチン内の REINPUT ステートメントは、同じヘルプルーチン内の INPUT ステートメントにのみ適用できます。

ヘルプルーチンの名前は、次に示すような INPUT ステートメントのセッションパラメータ HE で指定できます。

INPUT (HE='HELP2112')

または、マップエディタの拡張フィールド編集機能を使用して指定することもできます。「マップの作成」および『エディタ』ドキュメントを参照してください。

ヘルプルーチンの名前は、英数字定数または名前が含まれる英数字変数で指定できます。 定数の場合は、ヘルプルーチン名をアポストロフィで囲む必要があります。

Top of page

ヘルプルーチンのプログラミングについて

ヘルプルーチンの処理は、ESCAPE ROUTINE ステートメントで終了できます。

ヘルプルーチンで END OF TRANSACTION または BACKOUT TRANSACTION ステートメントを使用すると、メインプログラムのトランザクションロジックに影響を与えるため注意してください。

Top of page

ヘルプルーチンとのパラメータの受け渡し

ヘルプルーチンは、現在アクティブなグローバルデータエリアにアクセスできますが、独自のグローバルデータエリアを持つことはできません。 また、独自のローカルデータエリアを持つことができます。

パラメータを使用した、ヘルプルーチンとのデータの受け渡しも可能です。 1 つのヘルプルーチンに、20 個までの明示的なパラメータと 1 個の暗黙的なパラメータを指定できます。 明示的なパラメータは、ヘルプルーチン名の後に HE オペランドを付けて指定します。

HE='MYHELP','001'

暗黙的なパラメータとは、ヘルプルーチンが呼び出されたフィールドです。

INPUT #A (A5) (HE='YOURHELP','001')

上記の 001 は明示的なパラメータであり、#A は暗黙的なパラメータ/フィールドです。

これは、ヘルプルーチンの DEFINE DATA PARAMETER ステートメント内で次のように指定します。

DEFINE DATA PARAMETER 
1 #PARM1 (A3)          /* explicit parameter 
1 #PARM2 (A5)          /* implicit parameter 
END-DEFINE

暗黙的なパラメータ(上記例の #PARM2)は省略できることに注意してください。 暗黙的なパラメータは、ヘルプが要求されたフィールドにアクセスして、このフィールドにヘルプルーチンからデータを返すために使用します。 例えば、計算機能プログラムをヘルプルーチンとして実装し、計算結果をフィールドに返すことができます。

ヘルプが呼び出されると、データが画面からプログラムデータエリアに渡される前に、ヘルプルーチンが呼び出されます。 これは、ヘルプルーチンは同じ画面トランザクション内で入力されたデータにアクセスできないことを意味しています。

ヘルプ処理が完了すると、画面データはリフレッシュされます。ヘルプルーチンによって変更されたフィールドは更新されます。ヘルプルーチンが呼び出される前にユーザーによって変更されていたフィールドは更新から除外されますが、ヘルプが要求されたフィールドは更新に含まれます。 例外:ヘルプが要求されたフィールドが、ダイナミック属性(DY セッションパラメータ)によって複数の部分に分割され、疑問符が入力された部分が、ユーザーによって変更された部分のにある場合、フィールドの内容はヘルプルーチンでは変更されません。

属性制御変数は、ヘルプルーチン処理の後では、たとえヘルプルーチン内で変更されている場合でも再評価されることはありません。

Top of page

等号オプション

等号(=)は明示的なパラメータとして指定できます。

INPUT PERSONNEL-NUMBER (HE='HELPROUT',=)

このパラメータは、フィールド名(マップレベルで指定された場合はマップ名)を含む内部フィールド(フォーマット/長さ A65)として処理されます。 対応するヘルプルーチンは、次のように始まります。

DEFINE DATA PARAMETER 
1 FNAME (A65)             /* contains 'PERSONNEL-NUMBER' 
1 FVALUE (N8)             /* value of field (optional) 
END-DEFINE

このオプションは、フィールド名を読み取り、アプリケーションのオンラインドキュメントまたは Predict データディクショナリにアクセスしてフィールド固有のヘルプを提供する 1 つの共通ヘルプルーチンにアクセスするために使用します。

Top of page

配列インデックス

ヘルプ文字またはヘルプキーで選択されたフィールドが配列要素である場合、そのインデックスは暗黙的なパラメータ(明示的なパラメータに関係なく、ランクに依存して 1~3)として指定されます。

これらのパラメータのフォーマット/長さは I2 です。

INPUT A(*,*)  (HE='HELPROUT',=)

対応するヘルプルーチンは、次のように始まります。

DEFINE DATA PARAMETER 
1 FNAME   (A65)            /* contains 'A' 
1 FVALUE  (N8)             /* value of selected element 
1 FINDEX1 (I2)             /* 1st dimension index 
1 FINDEX2 (I2)             /* 2nd dimension index 
END-DEFINE 
...

Top of page

ウィンドウとしてのヘルプ

表示するヘルプのサイズを画面サイズよりも小さくすることができます。 この場合、ヘルプは次に示すような、フレームで囲まれたウィンドウとして画面に表示されます。

*******************************************************************************
                           PERSONNEL INFORMATION
PLEASE ENTER NAME: ?_________________
PLEASE ENTER CITY: __________________
                   +---------------------------+
                   !                           !
                   ! Type in the name of an    !
                   ! employee in the first     !
                   ! field and press ENTER.    !
                   ! You will then receive     !
                   ! a list of all employees   !
                   ! of that name.             !
                   !                           !
                   ! For a list of employees   !
                   ! of a certain name who     ! 
                   ! live in a certain city,   !
                   ! type in a name in the     !
                   ! first field and a city    !
                   ! in the second field       !
                   ! and press ENTER.          !
*******************!                           !*******************************
                   +---------------------------+

ヘルプルーチン内では、ウィンドウのサイズを次の方法で指定できます。

ヘルプウィンドウの位置は、ヘルプが要求されたフィールドの位置から自動的に計算されます。 Natural では、対応するフィールドに重ならずにできるだけ近くなる位置にウィンドウを配置します。 DEFINE WINDOW ステートメントを使用すると、自動位置決めを回避して、ユーザー自身がウィンドウ位置を決定できます。

ウィンドウ処理の詳細については、『ステートメント』ドキュメントの「DEFINE WINDOW」ステートメントおよび『端末コマンド』ドキュメントの端末コマンド「%W」を参照してください。

Top of page