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 Abschnitt fertig sind, wird Ihre
Beispielanwendung aus den folgenden Modulen bestehen:

Sie werden jetzt den Data-Area-Editor aufrufen, in dem Sie die erforderlichen Felder definieren.
Data-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 |
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.
Datenfelder definieren
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.
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 |
Geben Sie das folgende Kommando ein, um den Split-Screen-Modus zu beenden:
SPLIT .
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.
Datenfelder aus einem DDM importieren
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)
|
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
- - -- -------------------------------- - ---------- ------------------------- |
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.
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.
Speichern Sie die Local Data Area mit STOW.
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.
Local Data Area in Ihrem Programm benutzen
Kehren Sie zum Programm-Editor zurück, indem Sie Folgendes in der Kommandozeile des Data-Area-Editors eingeben.
E PGM01
Löschen Sie im DEFINE DATA-Statement alle Variablen zwischen
LOCAL und END-DEFINE (benutzen Sie hierzu das
Zeilenkommando .D).
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
Führen Sie das Programm mit RUN aus.
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.
Geben Sie EDIT in der MORE-Zeile ein, um
zum Programm-Editor zurückzukehren.
Speichern Sie das Programm mit STOW.
Sie können nun mit den nächsten Übungen fortfahren: Global Data Areas.