バージョン 4.2.5
 —  ファーストステップ  —

ユーザー入力

データ、つまり出力の開始名と終了名の入力プロンプトをユーザーに対して表示する方法を習得します。

以下の演習を完了すると、サンプルのアプリケーションは次のモジュールで構成されます。

Application structure

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


ユーザー入力の許可

プログラムを修正して、開始名および終了名の入力フィールドが出力に表示されるようにします。 これには、INPUT ステートメントを使用します。

Start of instruction set入力フィールドを定義するには

  1. END-DEFINE の下に次の行を挿入します。

    INPUT (AD=MT)
      "Start:" #NAME-START /
      "End:  " #NAME-END

    セッションパラメータ AD は "属性定義" を表し、値 "M" は "変更可能出力フィールド"、値 "T" は "小文字から大文字への変換" を表します。

    AD=MT の値 "M" は、INIT で定義されたデフォルト値("ADKINSON" および "BENNETT")が入力フィールドに表示されることを示します。 ユーザーは異なる値を入力できます。 "M" 値を省略すると、デフォルト値が定義されていても入力フィールドには表示されません。

    AD=MT の値 "T" は、小文字の入力がすべて大文字に変換されてから処理されることを示します。 デモデータベースファイル内の名前はすべて大文字で定義されているため、これは重要です。 "T" 値を省略すると、すべての名前を大文字で入力する必要があります。 大文字で入力しないと、指定した名前が検出されなくなります。

    "Start:" および "End:" はテキストフィールド(ラベル)であり、 引用符で囲んで指定します。

    #NAME-START および #NAME-END はデータフィールド(入力フィールド)であり、任意の開始名および終了名をユーザーを入力できます。

    スラッシュ(/)は、後続フィールドを新しい行に表示することを示します。

    プログラムは次のようになります。

    DEFINE DATA
    LOCAL
      1 #NAME-START        (A20) INIT <"ADKINSON">
      1 #NAME-END          (A20) INIT <"BENNETT">
      1 EMPLOYEES-VIEW VIEW OF EMPLOYEES
        2 FULL-NAME
          3 NAME (A20)
        2 DEPT (A6)
        2 LEAVE-DATA
          3 LEAVE-DUE (N2)
    END-DEFINE
    *
    INPUT (AD=MT)
      "Start:" #NAME-START /
      "End:  " #NAME-END
    *
    READ EMPLOYEES-VIEW BY NAME
      STARTING FROM #NAME-START
      ENDING AT #NAME-END
    *
      DISPLAY NAME 3X DEPT 3X LEAVE-DUE
    *
    END-READ
    *
    END
  2. プログラムを実行します。

    定義したフィールドが出力に表示されます。

    Start: ADKINSON                                                                
    End:   BENNETT
  3. デフォルト名を使用し、Enter キーを押します。

    従業員のリストが表示されます。

  4. プログラムエディタに戻るまで繰り返し Enter キーを押すか、Esc MORE プロンプトで「EDIT」と入力します。

  5. プログラムを格納します。

Top of page

ユーザー入力のマップの設計

入力プロンプトをユーザーに表示するさまざまな方法を説明します。 マップエディタを使用して、前にプログラムで定義した同じフィールドを含むマップを作成します。 マップは別のオブジェクトであり、ユーザーインターフェイスのレイアウトをアプリケーションのビジネスロジックから分離するために使用します。

ここで作成するマップは次のようになります。

Ob _                                    Ob D CLS ATT  DEL    CLS ATT  DEL      
.                                       .     T  D    Blnk    T  I    ?        
.                                       .     A  D    _       A  I    )        
.                                       .     A  N    ^       M  D    &        
.                                       .     M  I    :       O  D    +        
.                                       .     O  I    (                        
.                                       .                                      
001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
(XXXXXXXXXX                                                         (XXXXXXXX  
                                                                               
                                                                               
                          Start :XXXXXXXXXXXXXXXXXXXX                          
                                                                               
                            End :XXXXXXXXXXXXXXXXXXXX                          
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
      Help  Mset  Exit  Test  Edit  --    -     +     Full  <     >     Let

マップの最初の行には、現在の日時を示すシステム変数が含まれます。 開始名および終了名をユーザーが指定できる 2 つのデータフィールド(入力フィールド)があります。 データフィールドの前にはテキストフィールド(ラベル)があります。

フィールドの長さは "X" 文字の数で示されます。 デリミタは異なるタイプのフィールドを区別するために使用されます。 サンプルマップでは、次のデフォルトデリミタを使用します。

デリミタ フィールドタイプ
( システム変数。
: データフィールド

上記のマップには、次の手順が必要です。

マップの作成

マップエディタを起動し、マップを設計します。 マップエディタには、[Edit Map]メニューを使用してアクセスします。

Start of instruction set[Edit Map]メニューにアクセスするには

  1. プログラムエディタのコマンド行で「.」(ピリオド)を入力して、[Development Functions]メニューに戻ります。

  2. [Development Functions]メニューの下部で、次の情報を入力して Enter キーを押します。

                       Code .. E    Type .. M                                      
                                    Name .. ________________________________       
                                                                                   
                                                                                   
                                                                                   
    Command ===>                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Menu  Exit                                                  Canc

    "E" は[Edit Object]機能、"M" はオブジェクトタイプマップを示します。

    注意:
    [Create Object]用のコード「C」を入力することもできます。 ただし、この場合は、オブジェクト名の入力プロンプトが表示されます。

    [Edit Map]メニューが表示されます。

    16:43:41                ***** NATURAL MAP EDITOR *****               2007-03-20
    User SAG                         - Edit Map -                  Library TUTORIAL 
                                                                                   
                       Code    Function                                            
                       ----    ---------------------------------                   
                         D     Field and Variable Definitions                      
                         E     Edit Map                                            
                         I     Initialize new Map                                  
                         H     Initialize a new Help Map                           
                         M     Maintenance of Profiles & Devices                   
                         S     Save Map                                            
                         T     Test Map                                            
                         W     Stow Map                                            
                         ?     Help                                                
                         .     Exit                                                
                                                                                   
                                                                                   
                                                                                   
                 Code .. I     Name .. ________       Profile .. SYSPROF_          
                                                                                   
    Command ===>                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help        Exit  Test  Edit  

Start of instruction set新しいマップを初期化するには

  1. [Edit Map]メニューの下部で、次の情報を入力して Enter キーを押します。

                                                                                   
                 Code .. I     Name .. MAP01___       Profile .. SYSPROF_          
                                                                                   
    Command ===>                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help        Exit  Test  Edit  

    [Define Map Settings]画面が表示されます。

    16:43:42               Define Map Settings for MAP                   2007-03-20
                                                                                   
     Delimiters           Format                         Context                   
     -----------------    ---------------------------    --------------------------
     Cls Att CD  Del      Page Size ...... 23            Device Check .... ________
      T   D      BLANK    Line Size ...... 79            WRITE Statement   _       
      T   I      ?        Column Shift ... 0 (0/1)       INPUT Statement   X       
      A   D      _        Layout ......... ________      Help  ____________________
      A   I      )         dynamic ....... N (Y/N)        as field default N (Y/N) 
      A   N      ^        Zero Print ..... N (Y/N)                                 
      M   D      &        Case Default ... UC (UC/LC)                              
      M   I      :        Manual Skip .... N (Y/N)       Automatic Rule Rank  1    
      O   D      +        Decimal Char ... .             Profile Name .... SYSPROF 
      O   I      (        Standard Keys .. N (Y/N)                                 
                          Justification .. L (L/R)       Filler Characters         
                          Print Mode ..... __            ------------------------  
                                                         Optional, Partial ....    
                          Control Var .... ________      Required, Partial ....    
                                                         Optional, Complete ...    
                                                         Required, Complete ...    
                                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help        Exit                                                  Let

    この画面で、マップのデフォルト設定(マップのサイズなど)を定義します。 この画面ではデリミタ文字を変更できます。 ただし、このチュートリアルではデフォルトのデリミタ文字を使用します。 充填文字のみを定義します(次の手順を参照)。

    デリミタ文字は、フィールドに割り当てられたクラスと属性の組み合わせを示します。 このチュートリアルでは、太字で示すデリミタを使用します。

    Delimiters        
     ----------------- 
     Cls Att CD  Del   
      T   D      BLANK 
      T   I      ?     
      A   D      _     
      A   I      )     
      A   N      ^     
      M   D      &     
      M   I      :     
      O   D      +     
      O   I      (
  2. 次に示すように、充填文字オプションごとに下線(_)を入力します。

    Filler Characters        
     ------------------------ 
     Optional, Partial .... _ 
     Required, Partial .... _ 
     Optional, Complete ... _ 
     Required, Complete ... _

    充填文字は、マップ内の入力フィールドの空の位置を埋めるために使用されます。これにより、ユーザーは入力時にフィールドの正確な位置と長さを確認することができます。

  3. Enter キーを押して、変更内容を保存します。

  4. Enter キーをもう一度押して、マップ編集エリアを呼び出します。

    マップ編集エリアは、画面分割モードで表示されます。

    Ob _                                    Ob D CLS ATT  DEL    CLS ATT  DEL      
    .                                       .     T  D    Blnk    T  I    ?        
    .                                       .     A  D    _       A  I    )        
    .                                       .     A  N    ^       M  D    &        
    .                                       .     M  I    :       O  D    +        
    .                                       .     O  I    (                        
    .                                       .                                      
    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Mset  Exit  Test  Edit  --    -     +     Full  <     >     Let

    注意:
    [Define Map Settings]画面は、新しいマップを初期化する場合にのみ表示されます。 マップを編集しているときにマップ編集エリアで PF2(Mset)キーを押すと、[Define Map Settings]画面が呼び出されます。

    画面分割モードでは、画面の上半分に有効なデリミタ文字が表示されます。 画面の下半分は、マップを作成するための編集エリアです。

    プログラムエディタおよびデータエリアエディタ(このチュートリアルで後述)と異なり、マップエディタには Natural システムコマンドを入力できるコマンド行またはコマンドプロンプトはありません。 マップエディタの多くの機能は、行コマンドまたはフィールドコマンドを使用して(以下を参照)、または PF キーを使用して実行されます。

    PF9 キーを押すと、画面分割モードとフルスクリーンモード(編集エリアをフルサイズで表示)を切り替えることができます。

テキストフィールドの定義

2 つのテキストフィールド(定数またはラベルとも呼ばれる)をマップに追加します。

Start of instruction setテキストフィールドを定義するには

  1. マップ編集エリアで、4 行目の最初の位置にカーソルを移動し、次のように入力します。

    Start
  2. 次の行の最初の位置にカーソルを移動し、次のように入力します。

    End

    マップは次のようになります。

    Ob _                                    Ob D CLS ATT  DEL    CLS ATT  DEL      
    .                                       .     T  D    Blnk    T  I    ?        
    .                                       .     A  D    _       A  I    )        
    .                                       .     A  N    ^       M  D    &        
    .                                       .     M  I    :       O  D    +        
    .                                       .     O  I    (                        
    .                                       .                                      
    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
                                                                                   
                                                                                   
                                                                                   
    Start                                                                         
    End                                                                           
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Mset  Exit  Test  Edit  --    -     +     Full  <     >     Let

    注意:
    最後の変更を取り消すには、Enter キーを押す前に PF12 キーを押します。

データフィールドの定義

2 つのデータフィールドをマップに追加します。 これらは、開始名および終了名をユーザーが指定できる入力フィールドです。

データフィールドは 2 つの方法で定義できます。従来の方法であるデータフィールドに正しい長さを定義する必要があります。または、ユーザーフレンドリなデータフィールドをリストから選択するだけで、正しい長さが自動的に使用されます。 これらの 2 つの方法について、以下で説明します。

Start of instruction set長さを指定する必要のあるデータフィールドを定義するには

  1. Start テキストフィールドの後に次のように入力します(テキストフィールドとデータフィールドの間にスペースを残します)。

    :X(20)

    コロン(:)はデリミタ文字であり、データフィールドが変更可能で、強化されていることを示します。 データフィールドの長さは 20 文字で定義されています。 フィールドの長さは "X" 文字で示されています。

  2. Enter キーを押します。

    マップは次のようになります。

    Ob _                                    Ob D CLS ATT  DEL    CLS ATT  DEL      
    .                                       .     T  D    Blnk    T  I    ?        
    .                                       .     A  D    _       A  I    )        
    .                                       .     A  N    ^       M  D    &        
    .                                       .     M  I    :       O  D    +        
    .                                       .     O  I    (                        
    .                                       .                                      
    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
                                                                                   
                                                                                   
                                                                                   
    Start :XXXXXXXXXXXXXXXXXXXX                                                    
    End                                                      
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Mset  Exit  Test  Edit  --    -     +     Full  <     >     Let

Start of instruction setデータフィールドをリストから選択するには

  1. 画面の左上にある[Ob]フィールドで次のように入力し、Enter キーを押します。

    P PGM01

    プログラム PGM01 で現在使用しているデータフィールドが画面に表示されます。 マップで使用できるフィールドの前には、番号が付きます。

    Ob P PGM01                              Ob D CLS ATT  DEL    CLS ATT  DEL      
    1 #NAME-START               A20         .     T  D    Blnk    T  I    ?        
    2 #NAME-END                 A20         .     A  D    _       A  I    )        
    . EMPLOYEES-VIEW            *V1         .     A  N    ^       M  D    &        
    . FULL-NAME                 *2          .     M  I    :       O  D    +        
    3 NAME                      A20         .     O  I    (                        
    4 DEPT                      A6          .                                      
    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
                                                                                   
                                                                                   
                                                                                   
    Start :XXXXXXXXXXXXXXXXXXXX                                                    
    End                                                                            
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Mset  Exit  Test  Edit  --    -     +     Full  <     >     Let

    PGM01 で定義されているすべてのデータフィールドが画面に表示されるわけではありません。 データフィールドリストのページをスクロールするには、[Ob]フィールド(文字 "P" が現在含まれているフィールド)で次のいずれかの配置コマンドを入力します。

    コマンド 説明
    + リストの次のページに進みます。
    - リストの前のページに進みます。
    ++ リストの最後にジャンプします。
    -- リストの先頭にジャンプします。
  2. End テキストフィールドの後に次のように入力し(テキストフィールドとデータフィールドの間にスペースを残します)、Enter キーを押します。

    :2

    コロン(:)はデリミタ文字であり、データフィールドが変更可能で、強化されていることを示します。 2 は #NAME-END に割り当てられた番号です。

    正しい長さ(この場合は 20 文字)でデータフィールドが自動的に定義されます。 フィールドの長さは "X" 文字で示されています。

データフィールドの名前の指定

次の説明は、手動で定義した開始名のデータフィールドに対してのみ適用されます。 リストから選択した終了名のデータフィールドには適用されません。ユーザー定義変数用に新しいデータフィールドを作成すると、Natural によってフィールド名が割り当てられます。 このフィールド名には数値が含まれます。 新しく作成したフィールドの名前を、プログラムで定義された変数名に調整する必要があります。

同じ名前 #NAME-START および #NAME-END がプログラムで使用されていることを確認します。 これらのフィールドの出力(ユーザー入力)は、プログラム内の対応するユーザー定義変数に渡されます。

Start of instruction setデータフィールドの名前を定義するには

  1. 開始名のデータフィールドの最初の位置から開始して、次のように入力し、Enter キーを押します。

    .E

    または:
    データフィールド内の任意の場所にカーソルを置き、PF5 を押します。

    指定したフィールドに対する拡張フィールド編集セクションが表示されます。

    Fld #001                                                        Fmt A20        
    -------------------------------------------------------------------------------
    AD= MIT'_'____     ZP=         SG=        HE= _____________________   Rls 0    
    AL= _____          CD= __      CV= ________________________________   Mod Undef
    PM= __  DF=                    DY= ______________________________              
    EM= __________________________ SB= ________________________________            
                                                                                   
    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
                                                                                   
                                                                                   
                                                                                   
    Start .EXXXXXXXXXXXXXXXXXXX                                                    
    End :XXXXXXXXXXXXXXXXXXXX                                                      
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          HELP  Mset  Exit  <---  --->  --    -     +           <     >     Let

    画面の左上隅にある[Fld]フィールドに、Natural によって割り当てられたフィールド名 "#001" が表示されます。

  2. [Fld]フィールドに「#NAME-START」と入力します。

  3. 拡張フィールド編集セクションを終了するには、PF3 を押します。

    終了値のデータフィールドは前の演習でリストから選択されているため、終了名について上記の手順を繰り返す必要はありません。 この場合、#NAME-END は定義済みです。 必要に応じて、上記で説明したように、行コマンド .E を使用してこれをチェックできます。

    注意:
    #NAME-END には、#NAME-START で定義されなかった追加の値 "L" がセッションパラメータ AD に存在します。 "L" は、フィールドの値が左揃えで表示されることを示します。 これは英数字フィールドのデフォルト値であるため、#NAME-START に対して定義する必要はありません。

システム変数の追加

Natural システム変数には、現在のライブラリ、ユーザー、日時など、現在の Natural セッションに関する情報が含まれます。 これらは、Natural プログラム内のどこからでも参照できます。 システム変数はすべてアスタリスク(*)で始まります。

日時のシステム変数をマップに追加します。 プログラムが実行されると、現在の日時がマップに表示されます。

Start of instruction setシステム変数を追加するには

  1. 先頭行の最初の位置にカーソルを移動し、次のように入力します。

    (*DAT4I

    左カッコは、出力専用および強調表示としてシステム変数を識別するデリミタ文字です。

  2. 2 番目の行の最初の位置にカーソルを移動し、次のように入力します。

    (*TIMX

    マップは次のようになります。

    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
    (*DAT4I                                                                        
    (*TIMX                                                                         
                                                                                   
    Start :XXXXXXXXXXXXXXXXXXXX                                                    
    End :XXXXXXXXXXXXXXXXXXXX                                                      
    
  3. Enter キーを押します。

    システム変数名の代わりに "X" 文字が表示されます。

フィールドの再位置決め

行コマンドおよびフィールドコマンドを使用して、追加したフィールドの再位置決めを行います。

Start of instruction set1 つのフィールドを移動するには

  1. 2 行目のシステム変数の最初の位置から開始して、次のフィールドコマンドを入力します。

    .M

    例:

    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
    (XXXXXXXXXX                                                                    
    .MXXXXXXX                                                                      
                                                                                   
    Start :XXXXXXXXXXXXXXXXXXXX                                                    
    End :XXXXXXXXXXXXXXXXXXXX                                                      
    

    フィールドの先頭からフィールドコマンドが入力されています。 これは、入力するフィールドに対してのみ適用されます。

  2. システム変数の移動先となる位置(先頭行の列 70)にカーソルを移動します。

  3. Enter キーを押します。

    システム変数がカーソル位置に移動されます。

Start of instruction set空行を挿入するには

  1. 4 行目(開始名)の最初の位置から開始して、次の行コマンドを入力します。

    ..I(1)

    例:

    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
    (XXXXXXXXXX                                                         (XXXXXXXX  
                                                                                   
                                                                                   
    ..I(1):XXXXXXXXXXXXXXXXXXXX                                                    
    End :XXXXXXXXXXXXXXXXXXXX                                                      
    

    行の先頭から行コマンドが入力されています。 これは、入力する行全体に対して適用されます。

  2. Enter キーを押します。

    行コマンドを入力した行の下に空行が挿入されます。

Start of instruction set行を中央揃えにするには

  1. 4 行目(開始名)の最初の位置から開始して、次の行コマンドを入力します。

    ..C

    例:

    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
    (XXXXXXXXXX                                                         (XXXXXXXX  
                                                                                   
                                                                                   
    ..Crt :XXXXXXXXXXXXXXXXXXXX                                                    
                                                                                   
    End :XXXXXXXXXXXXXXXXXXXX                                                      
    
  2. Enter キーを押します。

    行が中央揃えになります。

Start of instruction set複数のフィールドを移動するには

  1. 6 行目(End)のテキストフィールドの最初の位置およびこの行のデータフィールドの最初の位置から開始して、次のフィールドコマンドを入力します。

    .M

    例:

    001   --010---+----+----+---030---+----+----+---050---+----+----+---070---+----
    (XXXXXXXXXX                                                         (XXXXXXXX  
                                                                                   
                                                                                   
                              Start :XXXXXXXXXXXXXXXXXXXX                          
                                                                                   
    .Md .MXXXXXXXXXXXXXXXXXXX
    
  2. テキストフィールドの開始位置(6 行目の列 30)にカーソルを移動します。

  3. Enter キーを押します。

    両方のフィールドが移動します。

    このセクションの最初に示したようなマップが表示されます。

マップのテスト

マップが意図したとおりに動作するかどうかをテストします。

Start of instruction setマップをテストするには

  1. PF4 キーを押します。

    次の出力が表示されます。

    2007-03-20                                                          13:39:55
                                                                                
                                                                                
                               Start  ____________________                      
                                                                                
                                 End  ____________________                      
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

    開始名の入力フィールドはマップの最初の入力フィールドであるため、自動的に選択されます。 どちらの入力フィールドにも、充填文字が含まれています。

    注意:
    挿入モードで操作する場合、テキストを入力する前に充填文字を削除する必要があります。 デフォルトである上書きモードでは、この操作は不要です。

  2. Enter キーを押して、マップエディタに戻ります。

マップの格納

マップのテストが正常に行われたら、プログラムで検出できるようにするため、マップを格納する必要があります。

Start of instruction setマップを Stow するには

  1. PF3 を押して[Edit Map]メニューに戻ります。

  2. [Code]フィールドに次のように入力し、Enter キーを押します。

    W

Top of page

プログラムからのマップの起動

マップの格納が完了したら、WRITE または INPUT ステートメントを使用して Natural プログラムから起動できます。

Start of instruction setプログラムからマップを起動するには

  1. [Edit Map]メニューのコマンド行で次のいずれかを入力して、プログラムエディタに戻ります。

    EDIT PGM01
    E PGM01
  2. 前に定義した INPUT 行を次の行で置き換えます。

    INPUT USING MAP 'MAP01'

    これにより、設計したマップが起動されます。

    マップをユーザー定義変数と区別するため、マップ名を一重引用符で囲む必要があります。

    プログラムは次のようになります。

    DEFINE DATA
    LOCAL
      1 #NAME-START        (A20) INIT <"ADKINSON">
      1 #NAME-END          (A20) INIT <"BENNETT">
      1 EMPLOYEES-VIEW VIEW OF EMPLOYEES
        2 FULL-NAME
          3 NAME (A20)
        2 DEPT (A6)
        2 LEAVE-DATA
          3 LEAVE-DUE (N2)
    END-DEFINE
    *
    INPUT USING MAP 'MAP01'
    *
    READ EMPLOYEES-VIEW BY NAME
      STARTING FROM #NAME-START
      ENDING AT #NAME-END
    *
      DISPLAY NAME 3X DEPT 3X LEAVE-DUE
    *
    END-READ
    *
    END
  3. プログラムを実行します。

    マップが表示されます。

  4. プログラムエディタに戻るまで繰り返し Enter キーを押すか、Esc MORE プロンプトで「EDIT」と入力します。

  5. プログラムを格納します。

Top of page

終了名を常に使用するための操作

プログラムをコーディングしても、終了名が指定されていなければデータは検出されません。

開始名および終了名の初期値を削除すると、これらの名前をユーザーが常に指定する必要があります。 ユーザーが終了名を指定しなくても、終了名が常に使用されるようにするため、対応するステートメントを追加します。

Start of instruction set終了名を使用するには

  1. DEFINE DATA ブロックで、フィールド #NAME-START および #NAME-END のデフォルト値(INIT)を削除します。対応する行は次のようになります。

    1 #NAME-START        (A20)
    1 #NAME-END          (A20)
  2. INPUT USING MAP 'MAP01' の下に、次の行を挿入します。

    IF #NAME-END = ' ' THEN
        MOVE #NAME-START TO #NAME-END
    END-IF

    #NAME-END フィールドが空白になっている(ユーザーが終了名を入力しなかった)場合は、開始名が自動的に終了名として使用されます。

    注意:
    ステートメント MOVE #NAME-START TO #NAME-END を使用する代わりに、ASSIGN または COMPUTE ステートメントの次の変形 #NAME-END := #NAME-START を使用することもできます。

    プログラムは次のようになります。

    DEFINE DATA
    LOCAL
      1 #NAME-START        (A20)
      1 #NAME-END          (A20)
      1 EMPLOYEES-VIEW VIEW OF EMPLOYEES
        2 FULL-NAME
          3 NAME (A20)
        2 DEPT (A6)
        2 LEAVE-DATA
          3 LEAVE-DUE (N2)
    END-DEFINE
    *
    INPUT USING MAP 'MAP01'
    *
    IF #NAME-END = ' ' THEN
      MOVE #NAME-START TO #NAME-END
    END-IF
    *
    READ EMPLOYEES-VIEW BY NAME
      STARTING FROM #NAME-START
      ENDING AT #NAME-END
    *
      DISPLAY NAME 3X DEPT 3X LEAVE-DUE
    *
    END-READ
    *
    END
  3. プログラムを実行します。

  4. 結果のマップで、開始名の入力を求めるフィールドに「JONES」と入力し、Enter キーを押します。

    結果のリストには、"Jones" という名前の従業員のみが表示されます。

  5. Enter キーを押して、プログラムエディタに戻ります。

  6. プログラムを格納します。

次の演習「ループおよびラベル」に進みます。

Top of page