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