Local Data Areas

#### Search Results

Search

# Local Data Areas

Currently, the fields used by your program are defined within the `DEFINE DATA` statement in the program itself. It is also possible, however, to place the field definitions in a local data area (LDA) outside the program, with the program's `DEFINE DATA` statement referencing this local data area by name. For reusability and for a clear application structure, it is usually better to define fields in data areas outside the programs.

You will now relocate the information from the `DEFINE DATA` statement to a local data area. When you have completed the exercises below, your sample application will consist of the following modules:

This document contains the following exercises:

- Creating a Local Data Area

- Defining Data Fields

- Importing the Required Data Fields from a DDM

- Referencing the Local Data Area from Your Program

## Creating a Local Data Area

You will now invoke the data area editor in which you will specify the required fields.

To invoke the data area editor

- At the bottom of the Development Functions menu, enter the following information and press ENTER:

           Code .. C    Type .. L   Name .. LDA01___________________________

      Command ===>
      Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
            Help  Menu  Exit                                                  Canc

  "C" stands for the function Create Object, "L" stands for the object type local data area, and "LDA01" is the name of your new local data area.

  The data area editor appears. The object type has been set to "Local". This is indicated at the top left of the screen.

      Local    LDA01      Library TUTORIAL                       DBID 11177 FNR     8
      Command                                                                     > +
      I T L  Name                             F Length     Miscellaneous
      All -- -------------------------------- - ---------- ------------------------->

      ----------------------------------------------------------------- S 0    L 1

## Defining Data Fields

You will now define the following fields:

Level (L column) | Name | Format (F column) | Length
--- | --- | --- | ---
1 | `#NAME-START` | A | 20
1 | `#NAME-END` | A | 20
1 | `#MARK` | A | 1

These are the user-defined variables which you have previously defined in the `DEFINE DATA` statement.

To define the data fields

1. To display your program and the data area editor on the same screen, enter the following to invoke split-screen mode.

       SPLIT P PGM01

   The screen is divided into two sections. Your program is shown in the lower half of the screen. It cannot be modified in this mode. You can use the program as a reference to insert the definitions of the user-defined variables in the data area editor. To page forward and backward in the program, use the commands `SPLIT +` and `SPLIT -`.

2. Specify all required information as listed in the above table.

   The local data area should now look as follows:

       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. Enter the following command to terminate split-screen mode:

       SPLIT .

## Importing the Required Data Fields from a DDM

You will now import the same data fields which you have previously defined in the program's `DEFINE DATA` statement. The fields are read directly from a Natural data view into the data area editor. A data view references database fields defined in a data definition module (DDM).

To import data fields from a DDM

1. In the line below the variables you have already defined, enter the following, starting in the T column:

       .V(EMPLOYEES)

   Example:

       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. Press ENTER.

   The `EMPLOYEES` view appears.

       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. Mark the following fields by entering any character in the I column :

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

   Not all of these fields are shown on the first page of the view. To scroll forward in the view, press ENTER

   Note
   The field `PERSONNEL-ID` will be used later when you create the subprogram.

4. After you have marked all required fields, continue to press ENTER until the data area editor is shown again.

   The local data area should now look as follows:

       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" has automatically been added to the name of the view. This is the same name that you have already used in your program.

   The T column indicates the type of the variable. The view is indicated by a "V" and each group is indicated by a "G".

5. Stow the local data area.

## Referencing the Local Data Area from Your Program

Once a local data area has been stowed, it can be referenced by a Natural program.

You will now change the `DEFINE DATA` statement your program so that it uses the local data area that you have just defined.

To use the local data area in your program

1. Return to the program editor by entering the following in the command line of the data area editor.

       E PGM01

2. In the `DEFINE DATA` statement, delete all variables between `LOCAL` and `END-DEFINE` (use the line command .D).

3. Add a reference to your local data area by modifying the `LOCAL` line as follows:

       LOCAL USING LDA01

   Your program should now look as follows:

       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. Run the program.

5. To confirm that the results are the same as before (when the `DEFINE DATA` statement did not reference a local data area), enter "JONES" as the starting name and press ENTER.

6. To return to the program editor, enter `EDIT` at the `MORE` prompt.

7. Stow the program.

You can now proceed with the next exercises: Global Data Areas.

### On this page

- Creating a Local Data Area
- Defining Data Fields
- Importing the Required Data Fields from a DDM
- Referencing the Local Data Area from Your Program