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