Index-Notation für multiple Felder und Periodengruppen

Dieses Dokument 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:


Index-Notation benutzen

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).

Beispiel für Index-Notation im DISPLAY-Statement

** 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:

Beispiel für Index-Notation im WRITE-Statement

** 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