Local Data Areas

Zurzeit werden die Felder, die in Ihrem Programm benutzt werden, mit DEFINE DATA im Programm selbst definiert. Es ist jedoch auch möglich, die Felddefinitionen in einer Local Data Area (LDA) außerhalb des Programms zu definieren und diese Local Data Area im DEFINE DATA-Statement des Programms lediglich namentlich zu referenzieren. Für die Wiederverwendbarkeit und zu Gunsten einer klaren Anwendungsstruktur ist es in der Regel besser, die Felder außerhalb eines Programms in einer Data Area zu definieren.

Sie werden jetzt die Informationen aus dem DEFINE DATA-Statement in eine Local Data Area verlagern. Wenn Sie mit den Übungen in diesem Dokument fertig sind, wird Ihre Beispielanwendung aus den folgenden Modulen bestehen:

Anwendungsstruktur

Dieses Dokument enthält die folgenden Übungen:


Local Data Area erstellen

Sie werden jetzt den Data-Area-Editor aufrufen, in dem Sie die erforderlichen Felder definieren.

Beginn der AnweisungslisteData-Area-Editor aufrufen

  • Geben Sie die folgenden Informationen unten im Menü Development Functions ein und drücken Sie EINGABE:

         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" steht für die Funktion Create Object (Objekt erstellen), "L" steht für den Objekttyp Local Data Area, und "LDA01" ist der Name für Ihre neue Local Data Area.

    Der Data-Area-Editor erscheint. Der Objekttyp wurde auf "Local" gesetzt. Dies wird oben links im Bildschirm angezeigt.

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

Datenfelder definieren

Sie werden jetzt die folgenden Felder definieren:

Level (Spalte L) Name Format (Spalte F) Länge
1 #NAME-START A 20
1 #NAME-END A 20
1 #MARK A 1

Dies sind die Benutzervariablen, die Sie zuvor im DEFINE DATA-Statement definiert haben.

Beginn der AnweisungslisteDatenfelder definieren

  1. Geben Sie das folgende Kommando ein, um Ihr Programm und den Data-Area-Editor im selben Bildschirm im Split-Screen-Modus anzuzeigen:

    SPLIT P PGM01

    Der Bildschirm ist jetzt in zwei Hälften geteilt. Ihr Programm wird in der unteren Hälfte des Bildschirms angezeigt. In diesem Modus kann es nicht geändert werden. Sie können das Programm aber als Referenz verwenden, um die Definitionen der Benutzervariablen im Data-Area-Editor einzufügen. Mit den Kommandos SPLIT + und SPLIT - können Sie im Programm vor- und zurückblättern.

  2. Geben Sie alle erforderlichen Informationen so ein, wie sie in der Tabelle oben angegeben sind.

    Die Local Data Area sollte nun folgendermaßen aussehen:

    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. Geben Sie das folgende Kommando ein, um den Split-Screen-Modus zu beenden:

    SPLIT .

Datenfelder aus einem DDM importieren

Sie werden jetzt dieselben Datenfelder importieren, die Sie zuvor im DEFINE DATA-Statement des Programms definiert hatten. Die Felder werden direkt aus einem Natural-Daten-View in den Data-Area-Editor eingelesen. Ein Daten-View referenziert die Datenbankfelder, die in einem DDM (Data Definition Module) definiert sind.

Beginn der AnweisungslisteDatenfelder aus einem DDM importieren

  1. Geben Sie Folgendes in der Zeile unter den Variablen ein, die Sie bisher definiert haben - beginnend in der Spalte T:

    .V(EMPLOYEES)

    Beispiel:

     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. Drücken Sie EINGABE.

    Der EMPLOYEES-View erscheint.

    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. Markieren Sie die folgenden Felder indem Sie ein beliebiges Zeichen in der Spalte I eingeben:

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

    Nicht alle diese Felder werden auf der ersten Seite des Views angezeigt. Drücken Sie EINGABE, um vorwärts zu blättern.

    Anmerkung:
    Das Feld PERSONNEL-ID wird später benutzt, wenn Sie das Subprogramm erstellen.

  4. Nachdem Sie alle erforderlichen Felder markiert haben, drücken Sie solange EINGABE bis der Data-Area-Editor wieder angezeigt wird.

    Die Local Data Area sollte nun folgendermaßen aussehen:

    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" wurde automatisch an den Namen des Views angehängt. Das ist derselbe Name, den Sie bereits in Ihrem Programm benutzt haben.

    Die Spalte T gibt den Variablentyp an. Der View ist mit "V" gekennzeichnet und jede Gruppe ist mit "G" gekennzeichnet.

  5. Speichern Sie die Local Data Area mit STOW.

Local Data Area aus dem Programm aufrufen

Sobald eine Local Data Area mit STOW gespeichert wurde, kann sie aus einem Natural-Programm heraus aufgerufen werden.

Sie werden jetzt das DEFINE DATA-Statement in Ihrem Programm so ändern, dass die eben von Ihnen definierte Local Data Area benutzt wird.

Beginn der AnweisungslisteLocal Data Area in Ihrem Programm benutzen

  1. Kehren Sie zum Programmeditor zurück, indem Sie Folgendes in der Kommandozeile des Data-Area-Editors eingeben.

    E PGM01
  2. Löschen Sie im DEFINE DATA-Statement alle Variablen zwischen LOCAL und END-DEFINE (benutzen Sie hierzu das Zeilenkommando .D).

  3. Referenzieren Sie die Local Data Area, indem Sie die LOCAL-Zeile folgendermaßen ändern:

    LOCAL USING LDA01

    Ihr Programm sollte nun folgendermaßen aussehen:

    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. Führen Sie das Programm mit RUN aus.

  5. Um zu überprüfen, ob das Ergebnis immer noch dasselbe ist wie vorher (als noch keine Local Data Area mit DEFINE DATA referenziert wurde), geben Sie "JONES" als Startname ein und drücken Sie EINGABE.

  6. Geben Sie EDIT in der MORE-Zeile ein, um zum Programmeditor zurückzukehren.

  7. Speichern Sie das Programm mit STOW.

Sie können nun mit den nächsten Übungen fortfahren: Global Data Areas.