Global Data Areas

#### Search Results

Search

# Global Data Areas

Die Daten in einer Global Data Area (GDA) können von mehreren Programmen, externen Subroutinen und Helproutinen benutzt werden.

Jede Änderung eines Datenelements in einer Global Data Area hat Auswirkungen auf alle Natural-Objekte, die diese Global Data Area referenzieren. Aus diesem Grund müssen Sie nach der Änderung einer Global Data Area alle zuvor erstellten Natural-Objekte, die diese Global Data Area referenzieren, noch einmal mit `STOW` speichern. Die Reihenfolge, in der die Objekte mit `STOW` gespeichert werden, ist wichtig. Sie müssen zuerst die Global Data Area mit `STOW` speichern und danach das Programm. Wenn Sie das Programm zuerst mit `STOW` speichern wollen und dann erst die Global Data Area, dann kann das Programm nicht gespeichert werden, weil die neuen Elemente in der Global Data Area nicht gefunden werden.

Sie werden jetzt eine Global Data Area erstellen, die von Ihrem Programm benutzt wird und auch von einer externen Subroutine, die Sie später erstellen werden. Als Basis für Ihre Global Data Area übernehmen Sie einige Informationen aus der Local Data Area, die Sie soeben erstellt haben.

Wenn Sie mit den Übungen in diesem Abschnitt fertig sind, wird Ihre Beispielanwendung aus den folgenden Modulen bestehen:

- Global Data Area mit Hilfe einer bestehenden Local Data Area erstellen

- Local Data Area anpassen

- Global Data Area aus dem Programm aufrufen

## Global Data Area mit Hilfe einer bestehenden Local Data Area erstellen

Sie können eine neue Data Area erstellen, indem Sie eine bestehende Data Area editieren und sie dann unter einem anderen Namen und einem anderen Typ abspeichern. Die ursprüngliche Data Area bleibt hierbei unverändert und die neue Data Area kann sofort editiert werden. Da die Felder `#NAME-START` und `#NAME-END` nicht in der Global Data Area benötigt werden, werden Sie sie entfernen.

Global Data Area erstellen

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

       E LDA01

2. Geben Sie Folgendes in der Kommandozeile des Data-Area-Editors ein, um die Data Area unter einem neuen Namen zu speichern:

       SA GDA01

   Die aktuelle Data Area wird unter dem neuen Namen `GDA01` gespeichert. Die Local Data Area mit dem Namen `LDA01` wird noch immer im Data-Area-Editor angezeigt.

3. Laden Sie `GDA01` mit dem folgenden Kommando in dem Data-Area-Editor:

       E GDA01

4. Geben Sie das folgende Kommando ein, um die Local Data Area in eine Global Data Area abzuändern:

       SET TYPE G

   wobei "G" für Global Data Area steht.

   Der Objekttyp ändert sich in "Global". Dies wird oben links im Bildschirm angezeigt.

5. Benutzen Sie das Zeilenkommando `.D`, um die folgenden Felder zu löschen:

   `#NAME-START`
   `#NAME-END`

   Sie geben das Zeilenkommando beginnend in der Spalte T der Zeile ein, die das zu löschende Feld enthält. Da die oben genannten Felder in zwei aufeinander folgenden Zeilen stehen, können Sie auch das Zeilenkommando `.D(2)` eingeben, um beide Felder gleichzeitig zu löschen.

6. Drücken Sie EINGABE.

   Die Global Data Area sollte nun folgendermaßen aussehen:

       Global    GDA01     Library TUTORIAL                       DBID 11177 FNR     8
       Command                                                                     > +
       I T L  Name                             F Length     Miscellaneous
       All -- -------------------------------- - ---------- ------------------------->
            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 8    L 1

7. Speichern Sie die Global Data Area mit `STOW`.

## Local Data Area anpassen

Die Felder, die jetzt in der Global Data Area enthalten sind, werden nicht mehr in der Local Data Area benötigt. Deshalb werden Sie jetzt alle Felder außer `#NAME-START` und `#NAME-END` aus der Local Data Area entfernen.

Felder entfernen

1. Kehren Sie zu Ihrer Local Data Area zurück, indem Sie Folgendes in der Kommandozeile des Data-Area-Editors eingeben:

       E LDA01

2. Benutzen Sie das Zeilenkommando `.D`, um alle Felder außer `#NAME-START` und `#NAME-END` zu löschen.

   Wenn Sie den obersten Eintrag für einen View löschen (gekennzeichnet durch ein "V" vor dem View-Namen), werden alle Felder, die zu diesem View gehören, automatisch gelöscht.

3. Speichern Sie die geänderte Local Data Area mit `STOW`.

   Die Local Data Area sollte nun folgendermaßen aussehen:

       SYSGDA 4454: Data area stowed successfully.
       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

       ----------------------------------------------------------------- S 2    L 1

## Global Data Area aus dem Programm aufrufen

Sobald eine Global 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 Global Data Area benutzt wird.

Global Data Area in Ihrem Programm benutzen

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

       E PGM01

2. Geben Sie Folgendes in der Zeile über `LOCAL USING LDA01` ein:

       GLOBAL USING GDA01

   Eine Global Data Area muss immer vor einer Local Data Area angegeben werden. Andernfalls tritt ein Fehler auf.

   Ihr Programm sollte nun folgendermaßen aussehen:

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

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

5. Geben Sie `EDIT` in der `MORE`-Zeile ein, um zum Programm-Editor zurückzukehren.

6. Speichern Sie das Programm mit `STOW`.

Sie können nun mit den nächsten Übungen fortfahren: Externe Subroutinen.

### On this page

- Global Data Area mit Hilfe einer bestehenden Local Data Area erstellen
- Local Data Area anpassen
- Global Data Area aus dem Programm aufrufen