Dieser Abschnitt beschreibt, wie Sie die Index-Notation
(n:n) benutzen
können, um anzugeben, wieviele Werte eines multiplen Feldes oder wieviele Ausprägungen einer
Periodengruppe ausgegeben werden sollen.
Folgende Themen werden behandelt:
Mit einer Index-Notation
(n:n) können Sie
angeben, wieviele Werte eines multiplen Feldes bzw. wieviele Ausprägungen einer
Periodengruppe ausgegeben werden sollen.
Beispiel: Das Feld INCOME im DDM
EMPLOYEES ist eine Periodengruppe und enthält das jährliche Einkommen eines
Mitarbeiters für jedes Jahr der Betriebszugehörigkeit.
Die Daten werden in chronologischer Reihenfolge gespeichert, wobei das Einkommen des
jeweils letzten Jahres in der Ausprägung 1 zu finden ist.
Wollen Sie das Jahreseinkommen eines Mitarbeiters in den letzten drei Jahren angezeigt
bekommen, d.h. Ausprägungen 1 bis 3, fügen Sie im WRITE- bzw. DISPLAY-Statement hinter dem
betreffenden Feldnamen die Notation (1:3) ein (wie im folgenden
Beispielprogramm gezeigt).
** Example 'DISPLX07': DISPLAY (with index notation)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
2 PERSONNEL-ID
2 NAME
2 BIRTH
2 INCOME (1:3)
3 CURR-CODE
3 SALARY
3 BONUS (1:1)
END-DEFINE
*
READ (3) VIEWEMP BY BIRTH
DISPLAY PERSONNEL-ID NAME INCOME (1:3)
SKIP 1
END-READ
END
Ausgabe des Programms DISPLX07:
Wenn mehrere Werte eines multiplen Feldes über ein DISPLAY-Statement ausgegeben werden, werden diese, wie Sie
sehen, untereinander ausgegeben:
Page 1 04-11-11 14:15:54
PERSONNEL NAME INCOME
ID
CURRENCY ANNUAL BONUS
CODE SALARY
--------- -------------------- -------- ---------- ----------
30020013 GARRET UKL 4200 0
UKL 4150 0
0 0
30016112 TAILOR UKL 7450 0
UKL 7350 0
UKL 6700 0
20017600 PIETSCH USD 22000 0
USD 20200 0
USD 18700 0
Da bei Verwendung eines WRITE-Statements die Werte nebeneinander (statt untereinander)
ausgegeben werden, kann dies eventuell einen (möglicherweise unerwünschten) automatischen
Zeilenvorschub auslösen.
Wenn Sie statt einer ganzen Periodengruppe nur ein Feld (z.B. SALARY) aus
einer Periodengruppe benutzen und, wie im folgenden Beispiel zwischen NAME
und JOB-TITLE, zusätzlich einen Zeilenvorschub, d.h. einen Schrägstrich (/),
einfügen, wird der Report übersichtlicher:
** Example 'WRITEX03': WRITE (with index notation) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 BIRTH 2 JOB-TITLE 2 SALARY (1:3) END-DEFINE * READ (3) VIEWEMP BY BIRTH WRITE PERSONNEL-ID NAME / JOB-TITLE SALARY (1:3) SKIP 1 END-READ END
Ausgabe des Programms WRITEX03:
Page 1 04-11-11 14:15:55 30020013 GARRET TYPIST 4200 4150 0 30016112 TAILOR WAREHOUSEMAN 7450 7350 6700 20017600 PIETSCH SECRETARY 22000 20200 18700