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:

The Application structure containing the Program (plus       an Inline Subroutine pertaining to it), a Map, a Helproutine, and now a separate module of the       Local Data Area.

This document contains the following exercises:


Creating a Local Data Area

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

Start of instruction setTo 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.

Start of instruction setTo 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).

Start of instruction setTo 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.

Start of instruction setTo 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.