処理ルールとヘルプルーチン

処理ルールとヘルプルーチンは、マップ内のフィールドに対して定義されます。

以下の演習を完了すると、サンプルのアプリケーションは次のモジュールで構成されます(処理ルールは別のモジュールとして定義できず、常にマップの一部になります)。

Application structure

このドキュメントには次の演習が含まれています。


処理ルールの定義

ユーザーが開始名を指定せずに ENTER キーを押した場合に表示するメッセージを定義します。

Start of instruction set処理ルールを定義するには

  1. Development Functions]メニューでマップエディタに戻ります。

    EDIT MAP01
  2. 方向キーを使用して、開始名の入力フィールドを選択します。ESC キーを押してメニューを再表示し、[Modify]を選択します。

    Extended Field Editing]ウィンドウが表示されます。

    +-Extended Field Editing-------------------------------------------------------+
    ¦Field : #NAME-START                                                           ¦
    ¦Format: A Len: 20         AL: 20          PM:                  ZP: N  SG: N   ¦
    ¦Rules : 0 Rule Editing: N Array: None     Array Editing: N     Mode:  User    ¦
    ¦AD: ILMFHT'_'  CD:        CV:                                  DY: N  HE: N   ¦
    ¦EM:                                                                           ¦
    +------------------------------------------------------------------------------+
  3. TAB キーを使用して、[Rule Editing]フィールドに移動します。このフィールドで「"Y"」と入力するか、PF2 キーを押します。

    次の画面が表示されます。

    +-Current Field: #NAME-START---------------------------------------------------+
    ¦                      R U L E   E D I T I N G (Esc = Quit)                    ¦
    ¦Rules                                   Fields                                ¦
    +------------------------------------------------------------------------------+
                                                                                    
                               End XXXXXXXXXXXXXXXXXXXX                             
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
     Create or modify a rule for this field
  4. Rules]を選択してから[<CREATE>]を選択します。

    空のエディタウィンドウが表示されます。

  5. 次の処理ルールを入力します(空行を挿入するには、行コマンド I を使用します)。

    IF & = ' ' THEN
      REINPUT 'Please enter a starting name.'
      MARK *&
    END-IF

    処理ルール内のアンパサンド(&)は、フィールド名にダイナミックに置き換えられます。この場合は、#NAME-START に置き換えられます。#NAME-START が空白の場合は、REINPUT ステートメントで定義されたメッセージが表示されます。

    MARK は、REINPUT ステートメントのオプションです。構文は MARK *fieldname です。MARK は、REINPUT ステートメントの実行時にカーソルが置かれるフィールドを指定します。この場合は、カーソルが[#NAME-START]フィールドに置かれます。

  6. コマンド行で次のように入力します。

    P=1

    ランクにより、異なるフィールドに対するルールの処理順序が定義されます。ランク 1 のルールはすべて最初に処理され、その後にランク 2 などが続きます。

    EDIT:                                     S 02- ---------------Columns 001 074  
    Rank:  NEW RULE      Rule:                                      Typ: R  Mode: S 
    Cmnd=> p=1                                                   Scroll==> CSR
    ****** ******************************* top of data *****************************
    000001 IF & = ' ' THEN                                                          
    000002   REINPUT 'PLEASE ENTER A STARTING NAME.'                                
    000003   MARK *&                                                                
    000004 END-IF                                                                   
    ****** ***************************** bottom of data ****************************
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
    PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--
    P     U     End   P*    Rfind Rchng Up    Down        Right Left  Home
  7. ENTER キーを押して、入力内容を保存します。

    次の画面が再表示されます。ランク 1 の新しいルールが[<CREATE>]の下に表示されます。このルールを選択すると、コードの最初の行が画面下部に表示されます。

    +-Current Field: #NAME-START---------------------------------------------------+
    ¦                      R U L E   E D I T I N G (Esc = Quit)                    ¦
    ¦Rules                                   Fields                                ¦
    +--------+---------------------------------------------------------------------+
    ¦<CREATE>¦                                                                      
    ¦       1¦             End XXXXXXXXXXXXXXXXXXXX                                 
    +--------+                                                                      
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
    0010 IF & = ' ' THEN                                                            
    0020   REINPUT 'PLEASE ENTER A STARTING NAME.'                                  
    0030   MARK *&                                                                  
                                                                                    
     Create or modify a rule for this field
  8. [Natural Map Editor]メニューが再表示されるまで、ESC キーを繰り返し押します。

  9. マップをテストします。

  10. 結果の出力で、任意の開始名を入力して ENTER キーを押します。

    出力画面が閉じます。

  11. マップをもう一度テストします。名前を入力せずに、ENTER キーを押します。

    処理ルールで定義したメッセージが、マップに表示されます。

  12. 出力画面を終了するには、開始名の入力を求めるフィールドに「.」(ピリオド)を入力し、ENTER キーを押します。

  13. マップを Stow します。

ヘルプルーチンの定義

ヘルプルーチンは、開始名の入力フィールドにカーソルが置かれているときにユーザーがヘルプキーを押すと表示されます。

まず、ヘルプルーチンを定義してから、それを特定のフィールドに関連付けます。

Start of instruction setヘルプルーチンを作成するには

  1. [Natural Map Editor]メニューから、[Quit]を選択します。

    Natural のメインメニューが再表示され、[Direct Command]ウィンドウで入力を求められます。

  2. 以下のいずれかを入力します。

    EDIT PROGRAM
    E P

    空のエディタが表示されます。

  3. 次のように入力します。

    WRITE 'Type the name of an employee'
    END
  4. プログラムエディタのコマンド行で次のように入力して、プログラムをヘルプルーチンに変更します。

    SET TYPE H

    "H" はヘルプルーチンを示します。

  5. ヘルプルーチンを格納し「HLP01」という名前にします。

    STOW HLP01

Start of instruction setヘルプルーチンをマップ上のフィールドに関連付けるには

  1. ヘルプルーチンを入力した画面のコマンド行で次のように入力して、マップエディタに戻ります。

    E MAP01
  2. 開始名のデータフィールドを選択し、ESC キーを押して[Natural Map Editor]メニューを表示し、[Modify]を選択します。

    フィールドに対する[Extended Field Editing]ウィンドウが表示されます。

  3. TAB キーを使用して、[HE]フィールドに移動します。このフィールドで「"Y"」と入力するか、PF2 キーを押します。

    ヘルプルーチン名の入力を求めるウィンドウが表示されます。

  4. HE]フィールドで「"'HLP01'"」(一重引用符も含めます)と入力します。

    これは、ヘルプルーチンの保存に使用した名前です。

    XXXXXXXXXX                                                           TT:TT:TT   
                                                                                    
                                                                                    
                             Start XXXXXXXXXXXXXXXXXXXX                             
                                                                                    
                               End XXXXXXXXXXXXXXXXXXXX                             
                                                                                    
                                                                                    
                                                                                    
                                                                                    
         +-HE-----------------------------------------------------------------+     
         ¦HE: 'HLP01'                                                         ¦     
         ¦                                                                    ¦     
         +--------------------------------------------------------------------+     
                                                                                    
    +-Extended Field Editing-------------------------------------------------------+
    ¦Field : #NAME-START                                                           ¦
    ¦Format: A Len: 20         AL: 20          PM:                  ZP: N  SG: N   ¦
    ¦Rules : 1 Rule Editing: Y Array: None     Array Editing: N     Mode:  User    ¦
    ¦AD: MILFHT'_'  CD:        CV:                                  DY: N  HE: Y   ¦
    ¦EM:                                                                           ¦
    +------------------------------------------------------------------------------+
     Helproutine and Parameters
  5. ENTER キーを 2 回押して、変更内容を保存し、すべてのウィンドウを閉じます。

  6. マップをテストします。

  7. 結果の出力で、開始名の入力フィールドに疑問符(?)を入力します。

    定義したヘルプテキストが表示されます。

  8. ENTER キーを押して、マップに戻ります。

  9. マップを終了するには、開始名の入力を求めるフィールドに「.」(ピリオド)を入力し、ENTER キーを押します。

  10. マップを Stow します。

  11. [Natural Map Editor]メニューから、[Quit]を選択します。

    Natural のメインメニューが再表示され、[Direct Command]ウィンドウで入力を求められます。

次の演習に進みます。ローカルデータエリア.