This document describes how to use the statements DISPLAY and WRITE to output data and control the format in which information
is output.
The following topics are covered:
The DISPLAY statement produces
output in column format; that is, the values for one field are output in a column
underneath one another. If multiple fields are output, that is, if multiple columns are
produced, these columns are output next to one another horizontally.
The order in which fields are displayed is determined by the sequence in which you
specify the field names in the DISPLAY statement.
The DISPLAY statement in the following program displays for each person
first the personnel number, then the name and then the job title:
** Example 'DISPLX01': DISPLAY ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 BIRTH 2 JOB-TITLE END-DEFINE * READ (3) VIEWEMP BY BIRTH DISPLAY PERSONNEL-ID NAME JOB-TITLE END-READ END
Output of Program DISPLX01:
Page 1 04-11-11 14:15:54 PERSONNEL NAME CURRENT ID POSITION --------- -------------------- ------------------------- 30020013 GARRET TYPIST 30016112 TAILOR WAREHOUSEMAN 20017600 PIETSCH SECRETARY
To change the order of the columns that appear in the output report, simply reorder the
field names in the DISPLAY
statement. For example, if you prefer to list employee names first, then job titles
followed by personnel numbers, the appropriate DISPLAY statement would
be:
** Example 'DISPLX02': DISPLAY ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 BIRTH 2 JOB-TITLE END-DEFINE * READ (3) VIEWEMP BY BIRTH DISPLAY NAME JOB-TITLE PERSONNEL-ID END-READ END
Output of Program DISPLX02:
Page 1 04-11-11 14:15:54
NAME CURRENT PERSONNEL
POSITION ID
-------------------- ------------------------- ---------
GARRET TYPIST 30020013
TAILOR WAREHOUSEMAN 30016112
PIETSCH SECRETARY 20017600
A header is output above each column. Various ways to influence this header are described in the document Column Headers.
The WRITE statement is used to
produce output in free format (that is, not in columns). In contrast to the DISPLAY statement, the following applies
to the WRITE statement:
If necessary, it automatically creates a line advance; that is, a field or text element that does not fit onto the current output line, is automatically output in the next line.
It does not produce any headers.
The values of a multiple-value field are output next to one another horizontally, and not underneath one another.
The two example programs shown below illustrate the basic differences between the
DISPLAY statement and the
WRITE statement.
You can also use the two statements in combination with one another, as described later in the document Vertical Displays, Combining DISPLAY and WRITE .
** Example 'DISPLX03': DISPLAY ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 SALARY (1:3) END-DEFINE * READ (2) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY NAME FIRST-NAME SALARY (1:3) END-READ END
Output of Program DISPLX03:
Page 1 04-11-11 14:15:54
NAME FIRST-NAME ANNUAL
SALARY
-------------------- -------------------- ----------
JONES VIRGINIA 46000
42300
39300
JONES MARSHA 50000
46000
42700
** Example 'WRITEX01': WRITE ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 SALARY (1:3) END-DEFINE * READ (2) VIEWEMP BY NAME STARTING FROM 'JONES' WRITE NAME FIRST-NAME SALARY (1:3) END-READ END
Output of Program WRITEX01:
Page 1 04-11-11 14:15:55 JONES VIRGINIA 46000 42300 39300 JONES MARSHA 50000 46000 42700
By default, the columns output with a DISPLAY statement are separated from one another by
one space.
With the session parameter SF, you can specify the default number of spaces to
be inserted between columns output with a DISPLAY statement. You can set the
number of spaces to any value from 1 to 30.
The parameter can be specified with a FORMAT statement to apply to the whole report, or with a
DISPLAY statement at statement
level, but not at element level.
With the nX notation in the
DISPLAY statement, you can specify the number of spaces
(n) to be inserted between two columns. An
nX notation overrides the specification made
with the SF
parameter.
** Example 'DISPLX04': DISPLAY (with nX) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 BIRTH 2 JOB-TITLE END-DEFINE * FORMAT SF=3 READ (3) VIEWEMP BY BIRTH DISPLAY PERSONNEL-ID NAME 5X JOB-TITLE END-READ END
Output of Program DISPLX04:
The above example program produces the following output, where the first two columns are
separated by 3 spaces due to the SF parameter in the FORMAT statement,
while the second and third columns are separated by 5 spaces due to the notation
5X in the DISPLAY statement:
Page 1 04-11-11 14:15:54 PERSONNEL NAME CURRENT ID POSITION --------- -------------------- ------------------------- 30020013 GARRET TYPIST 30016112 TAILOR WAREHOUSEMAN 20017600 PIETSCH SECRETARY
The nX notation is also available with the
WRITE statement to insert spaces
between individual output elements:
WRITE PERSONNEL-ID 5X NAME 3X JOB-TITLE
With the above statement, 5 spaces will be inserted between the fields
PERSONNEL-ID and NAME, and 3 spaces between NAME
and JOB-TITLE.
With the nT notation, which is available
with the DISPLAY and the
WRITE statement, you can specify
the position where an output element is to be output.
** Example 'DISPLX05': DISPLAY (with nT) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME END-DEFINE * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY 5T NAME 30T FIRST-NAME END-READ END
Output of Program DISPLX05:
The above program produces the following output, where the field NAME is
output starting in the 5th position (counted from the left margin of the page), and the
field FIRST-NAME starting in the 30th position:
Page 1 04-11-11 14:15:54
NAME FIRST-NAME
-------------------- --------------------
JONES VIRGINIA
JONES MARSHA
JONES ROBERT
With a slash (/) in a DISPLAY
or WRITE statement, you cause a
line advance.
In a DISPLAY statement, a slash causes a line advance between
fields and within text.
In a WRITE statement, a slash causes a line advance only when placed
between fields; within text, it is treated like an ordinary text
character.
When placed between fields, the slash must have a blank on either side.
For multiple line advances, you specify multiple slashes.
** Example 'DISPLX06': DISPLAY (with slash '/') ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 DEPARTMENT END-DEFINE * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY NAME / FIRST-NAME 'DEPART-/MENT' DEPARTMENT END-READ END
Output of Program DISPLX06:
The above DISPLAY statement produces a line advance after each value of the
field NAME and within the text DEPART-MENT:
Page 1 04-11-11 14:15:54
NAME DEPART-
FIRST-NAME MENT
-------------------- -------
JONES SALE
VIRGINIA
JONES MGMT
MARSHA
JONES TECH
ROBERT
** Example 'WRITEX02': WRITE (with line advance) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 DEPARTMENT END-DEFINE * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' WRITE NAME / FIRST-NAME 'DEPART-/MENT' DEPARTMENT // END-READ END
Output of Program WRITEX02:
The above WRITE statement produces a line advance after each value of the
field NAME, and a double line advance after each value of the field
DEPARTMENT, but none within the text DEPART-/MENT:
Page 1 04-11-11 14:15:55 JONES VIRGINIA DEPART-/MENT SALE JONES MARSHA DEPART-/MENT MGMT JONES ROBERT DEPART-/MENT TECH
** Example 'DISPLX21': DISPLAY (usage of slash '/' in DISPLAY and WRITE)
************************************************************************
DEFINE DATA LOCAL
1 EMPLOY-VIEW VIEW OF EMPLOYEES
2 CITY
2 NAME
2 FIRST-NAME
2 ADDRESS-LINE (1)
END-DEFINE
*
WRITE TITLE LEFT JUSTIFIED UNDERLINED
*TIME
5X 'PEOPLE LIVING IN SALT LAKE CITY'
21X 'PAGE:' *PAGE-NUMBER /
15X 'AS OF' *DAT4E //
*
WRITE TRAILER UNDERLINED 'REGISTER OF' / 'SALT LAKE CITY'
*
READ (2) EMPLOY-VIEW WITH CITY = 'SALT LAKE CITY'
DISPLAY NAME /
FIRST-NAME
'HOME/CITY' CITY
'STREET/OR BOX NO.' ADDRESS-LINE (1)
SKIP 1
END-READ
END
Output of Program DISPLX21:
14:15:54.6 PEOPLE LIVING IN SALT LAKE CITY PAGE: 1
AS OF 11/11/2004
-------------------------------------------------------------------------------
NAME HOME STREET
FIRST-NAME CITY OR BOX NO.
-------------------- -------------------- --------------------
ANDERSON SALT LAKE CITY 3701 S. GEORGE MASON
JENNY
SAMUELSON SALT LAKE CITY 7610 W. 86TH STREET
MARTIN
REGISTER OF
SALT LAKE CITY
-------------------------------------------------------------------------------
See the following example programs: