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

ローカルデータエリア

現時点では、プログラムで使用するフィールドは、プログラム内の DEFINE DATA ステートメントで定義されています。 このフィールド定義をプログラム外のローカルデータエリア(LDA)に配置し、プログラムの DEFINE DATA ステートメントを使用して、ローカルデータエリアを名前で参照することもできます。 再利用および明確なアプリケーション構造という観点から見ると、通常、プログラム外のデータエリアにフィールドを定義することが推奨されます。

情報を DEFINE DATA ステートメントからローカルデータエリアに再配置します。 以下の演習を完了すると、サンプルのアプリケーションは次のモジュールで構成されます。

Application structure

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


ローカルデータエリアの作成

必須フィールドを指定するデータエリアエディタを起動します。

Start of instruction setデータエリアエディタを起動するには

Top of page

データフィールドの定義

次のフィールドを定義します。

レベル(L 列) 名前 フォーマット(F 列) 長さ
1 #NAME-START A 20
1 #NAME-END A 20
1 #MARK A 1

これらは、DEFINE DATA ステートメントで前に定義したユーザー定義変数です。

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

  1. プログラムおよびデータエリアエディタを同じ画面に表示するには、次のように入力して画面分割モードを起動します。

    SPLIT P PGM01

    画面が 2 つのセクションに分割されます。 プログラムは画面の下半分に表示されます。 このモードではプログラムを変更できません。 データエリアエディタでユーザー定義変数を挿入する場合の参照として、プログラムを使用できます。 プログラムの次のページまたは前のページに進むには、コマンド SPLIT + および SPLIT - を使用します。

  2. 上の表に示す必須情報をすべて指定します。

    ローカルデータエリアが次のように表示されます。

    Local    LDA01      Library TUTORIAL                       DBID 11177 FNR     8
    Command                                                                     > +
    I T L  Name                             F Length     Miscellaneous             
    All -- -------------------------------- - ---------- ------------------------->
         1 #NAME-START                      A         20                           
         1 #NAME-END                        A         20                           
         1 #MARK                            A          1                          
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
    ----------------------------------------------------------------- S 0    L 1   
    Program     PGM01     Library TUTORIAL                                         
      0010 DEFINE DATA                                                             
      0020 LOCAL                                                                   
      0030   1 #NAME-START        (A20)                                            
      0040   1 #NAME-END          (A20)                                            
      0050   1 #MARK              (A1)                                             
      0060   1 EMPLOYEES-VIEW VIEW OF EMPLOYEES
  3. 次のコマンドを入力して、画面分割モードを終了します。

    SPLIT .

Top of page

DDM からの必須データフィールドのインポート

プログラムの DEFINE DATA ステートメントで前に定義したデータフィールドをインポートします。 フィールドは、Natural データビューからデータエリアエディタに直接読み込まれます。 データビューは、データ定義モジュール(DDM)で定義されたデータベースフィールドを参照します。

Start of instruction setDDM からデータフィールドをインポートするには

  1. すでに定義した変数の下の行で、T 列から開始して次のように入力します。

    .V(EMPLOYEES)

    例:

    Local    LDA01       Library TUTORIAL                       DBID 11177 FNR     8
     Command                                                                     > +
     I T L  Name                             F Length     Miscellaneous             
     All -- -------------------------------- - ---------- ------------------------->
          1 #NAME-START                      A         20                           
          1 #NAME-END                        A         20                           
          1 #MARK                            A          1                           
       . V( EMPLOYEES)                                                              
     
  2. Enter キーを押します。

    EMPLOYEES ビューが表示されます。

    SYSGDA 4461: Mark fields to incorporate into data area.                        
    Local     LDA01     Library TUTORIAL                       DBID 11177 FNR     8
    View EMPLOYEES                                                                 
    I T L  Name                             F Length     Miscellaneous             
    - - -- -------------------------------- - ---------- ------------------------- 
         2 PERSONNEL-ID                     A          8 /* CNNNNNNN               
      G  2 FULL-NAME                                     /* NAME INFORMATION       
         3 FIRST-NAME                       A         20 /* FIRST/CHRISTIAN NAME   
         3 MIDDLE-I                         A          1 /* MIDDLE INITIAL         
         3 NAME                             A         20 /* SURNAME/FAMILY NAME    
         2 MIDDLE-NAME                      A         20 /* SECOND/MIDDLE NAME     
         2 MAR-STAT                         A          1 /* M=MARRIED              
         2 SEX                              A          1                           
         2 BIRTH                            D            /* BIRTH-DATE (YYYY-MM-   
         2 N§BIRTH                          I          2 /* INDICATOR OF BIRTH     
      G  2 FULL-ADDRESS                                                            
      M  3 ADDRESS-LINE                     A         20 (1:8)/* ALL ADDRESS LINES 
         3 CITY                             A         20 /* MAIN CITY/TOWN         
         3 ZIP                              A         10 /* POSTAL ADDRESS CODE    
         3 POST-CODE                        A         10 /* POSTAL ADDRESS CODE    
         3 COUNTRY                          A          3 /* COUNTRY CODE           
      G  2 TELEPHONE                                                               
    - - -- -------------------------------- - ---------- ------------------------- 
  3. I 列に任意の文字を入力して、次のフィールドをマークします。

    PERSONNEL-ID
    FULL-NAME
    NAME
    DEPT
    LEAVE-DATA
    LEAVE-DUE

    これらのフィールドがすべてビューの最初のページに表示されるわけではありません。 ビューで次のページにスクロールし、Enter キーを押します。

    注意:
    フィールド PERSONNEL-ID は、後でサブプログラムを作成するときに使用します。

  4. 必須フィールドをすべてマークしたら、データエリアエディタが再表示されるまで Enter キーを押して処理を続行します。

    ローカルデータエリアが次のように表示されます。

    SYSGDA 4462: 6 field(s) of view EMPLOYEES included.                            
    Local     LDA01     Library TUTORIAL                       DBID 11177 FNR     8
    Command                                                                     > +
    I T L  Name                             F Length     Miscellaneous             
    All -- -------------------------------- - ---------- ------------------------->
         1 #NAME-START                      A         20                           
         1 #NAME-END                        A         20                           
         1 #MARK                            A          1                           
      V  1 EMPLOYEES-VIEW                                EMPLOYEES                 
         2 PERSONNEL-ID                     A          8 /* CNNNNNNN               
      G  2 FULL-NAME                                     /* NAME INFORMATION       
         3 NAME                             A         20 /* SURNAME/FAMILY NAME    
         2 DEPT                             A          6 /* DDDDSS                 
      G  2 LEAVE-DATA                                    /* LEAVE/VACATION INFO    
         3 LEAVE-DUE                        N        2.0 /* VACATION DAYS/YEAR     
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
                                                                                   
    ----------------------------------------------------------------- S 10   L 1

    ビューの名前に、"-VIEW" が自動的に追加されます。 これは、プログラムですでに使用している名前と同じものです。

    T 列は、変数タイプを示します。 ビューは "V" で示され、各グループは "G" で示されます。

  5. ローカルデータを格納します。

Top of page

プログラムからのローカルデータエリアの参照

ローカルデータエリアを格納すると、Natural プログラムから参照できます。

定義したローカルデータエリアを使用するため、プログラムの DEFINE DATA ステートメントを変更します。

Start of instruction setプログラムでローカルデータエリアを使用するには

  1. データエリアエディタのコマンド行で次のように入力して、プログラムエディタに戻ります。

    E PGM01
  2. DEFINE DATA ステートメントで、LOCALEND-DEFINE 間にある変数をすべて削除します(行コマンド .D を使用)。

  3. LOCAL 行を次のように変更して、ローカルデータエリアへの参照を追加します。

    LOCAL USING LDA01

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

    DEFINE DATA
      LOCAL USING LDA01
    END-DEFINE
    *
    RP1. REPEAT
    *
      INPUT USING MAP 'MAP01'
    *
      IF #NAME-START = '.' THEN
        ESCAPE BOTTOM (RP1.)
      END-IF
    *
      IF #NAME-END = ' ' THEN
        MOVE #NAME-START TO #NAME-END
      END-IF
    *
      RD1. READ EMPLOYEES-VIEW BY NAME
        STARTING FROM #NAME-START
        ENDING AT #NAME-END
    *    
        IF LEAVE-DUE >= 20 THEN
          PERFORM MARK-SPECIAL-EMPLOYEES
        ELSE
          RESET #MARK
        END-IF
    *
        DISPLAY NAME 3X DEPT 3X LEAVE-DUE 3X '>=20' #MARK
    *
      END-READ
    *
      IF *COUNTER (RD1.) = 0 THEN
        REINPUT 'No employees meet your criteria.'
      END-IF
    *
    END-REPEAT
    *
    DEFINE SUBROUTINE MARK-SPECIAL-EMPLOYEES
      MOVE '*' TO #MARK
    END-SUBROUTINE
    *
    END
  4. プログラムを実行します。

  5. 前(DEFINE DATA ステートメントでローカルデータエリアを参照していない場合)と同じ結果になることを確認するため、開始名に「JONES」と入力して、Enter キーを押します。

  6. プログラムエディタに戻るには、MORE プロンプトで「EDIT」と入力します。

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

次の演習「グローバルデータエリア」に進みます。

Top of page