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

グローバルデータエリア

グローバルデータエリア(GDA)で定義されたデータは、複数のプログラム、外部サブルーチン、およびヘルプルーチンで共有することができます。

グローバルデータエリアにあるデータ要素の値に加えた変更は、そのグローバルデータエリアを参照するすべての Natural オブジェクトに影響を与えます。 したがって、グローバルデータエリアのソースを変更した場合は、そのグローバルデータエリアを参照する、作成済みのすべての Natural オブジェクトをもう一度格納する必要があります。 オブジェクトを格納する順序は重要です。 まず、グローバルデータエリアを格納してから、プログラムを格納する必要があります。 この順序を逆にすると、グローバルデータエリアにある新しい要素を検出できなくなるため、プログラムを格納できなくなります。

プログラムおよび後で作成する外部サブルーチンで共有するグローバルデータエリアを作成します。 グローバルデータエリアのベースとして、作成済みのローカルデータエリアの一部の情報を使用します。

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

Application structure

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


既存のローカルデータエリアからのグローバルデータエリアの作成

既存のデータエリアを編集し、それを異なる名前および異なるタイプで保存することにより、既存のデータエリアから新しいデータエリアを作成できます。 元のデータエリアは変更されないまま残り、新しいデータエリアを編集できます。 フィールド #NAME-START および #NAME-END はグローバルデータエリアには必要ないため、削除します。

注意:
また、[オブジェクト]メニューの[新規作成]>[グローバルデータエリア]を選択して、グローバルデータエリアを作成することもできます。

Start of instruction setグローバルデータエリアを作成するには

  1. ローカルデータエリアに戻ります。

  2. [オブジェクト]メニューの[名前を付けて保存]を選択します。

    [名前をつけて保存]ダイアログボックスが表示されます。

  3. グローバルデータエリアの名前として「GDA01」と指定します。

  4. プログラムも含むライブラリ(TUTORIAL ノード)が選択されていることを確認します。

  5. [タイプ]ドロップダウンリストボックスの[グローバル]を選択します。

  6. [OK]ボタンを選択します。

    新しい名前とタイプがエディタウィンドウのタイトルバーに表示されます。 ライブラリワークスペースで、新しいグローバルデータエリアが Global Data Areas ノードに表示されます。

  7. Ctrl キーを押して、次のフィールドを選択します。

    #NAME-START
    #NAME-END

  8. コンテキストメニューから、[削除]を選択します。

    または:
    Delete キーを押します。

    グローバルデータエリアは次のようになります。

    Global data area

  9. グローバルデータエリアを格納します。

    プログラムおよび後で定義する外部サブルーチンで、グローバルデータエリアを検出できるようになりました。

  10. グローバルデータエリアのエディタウィンドウを閉じます。

Top of page

ローカルデータエリアへの適合

グローバルデータエリアに含まれるフィールドは、ローカルデータエリアに必要ありません。 したがって、#NAME-START および #NAME-END を除くすべてのフィールドをローカルデータエリアから削除します。

Start of instruction setフィールドを削除するには

  1. ライブラリワークスペースでローカルデータエリア LDA01 を選択し、コンテキストメニューから[開く]を選択します。

    または:
    ライブラリワークスペースで、ローカルデータエリア LDA01 をダブルクリックします。

  2. #NAME-START および #NAME-END を除くすべてのフィールドを、結果のデータエリアエディタで選択します。

  3. コンテキストメニューから、[削除]を選択します。

    または:
    Delete キーを押します。

  4. 変更したローカルデータエリアを格納します。

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

    graphics/fs_lda_window_modified.png

Top of page

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

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

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

データエリアエディタをバックグラウンドで開いたままにします。

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

  1. プログラムエディタに戻ります。

  2. LOCAL USING LDA01 の上の行に、次のように挿入します。

    GLOBAL USING GDA01

    グローバルデータエリアは、常にローカルデータエリアより先に定義する必要があります。 そのようにしないと、エラーが発生します。

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

    DEFINE DATA
      GLOBAL USING GDA01  
      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
    
  3. プログラムを実行します。

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

  5. Esc キーを押して、出力ウィンドウを閉じます。

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

次の演習「外部サブルーチン」に進みます。

Top of page