This document describes how you can use the index notation
                      (n:n) to
                      specify how many values of a multiple-value field or how many occurrences of a
                      periodic group are to be output.
               
The following topics are covered:
With the index notation
                       (n:n) you
                       can specify how many values of a multiple-value field or how many occurrences
                       of a periodic group are to be output.
               
For example, the field INCOME in the
                       DDM
                       EMPLOYEES is a periodic group which keeps a record of the annual
                       incomes of an employee for each year he/she has been with the company.
               
These annual incomes are maintained in chronological order. The income
                       of the most recent year is in occurrence 1.
               
If you wanted to have the annual incomes of an employee for the last
                       three years displayed - that is, occurrences 1 to 3 -
                       you would specify the notation (1:3) after the field name in a
                       DISPLAY or
                       WRITE statement (as
                       shown in the following example program).
               
** 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 
                   Output of Program DISPLX07:
               
Note that a DISPLAY statement outputs
                       multiple values of a multiple-value field underneath one another:
               
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 
                   As a WRITE
                       statement displays multiple values horizontally instead of vertically, this may
                       cause a line overflow and a - possibly undesired - line advance.
               
If you use only a single field within a periodic group (for example,
                       SALARY) instead of the entire periodic group, and if you also
                       insert a slash (/) to cause a line advance (as shown in the following example
                       between NAME and JOB-TITLE), the report format
                       becomes manageable.
               
** 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
Output of Program 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