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:
Dieses Dokument enthält die folgenden Übungen:
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___________________________ |
"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 Programmeditor 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 Programmeditor zurückzukehren.
Speichern Sie das Programm mit STOW
.
Sie können nun mit den nächsten Übungen fortfahren: Global Data Areas.