This document describes how you can combine the features of the statements DISPLAY and WRITE to produce vertical displays of field
values.
The following topics are covered:
There are two ways of creating vertical displays:
You can use a combination of the statements DISPLAY and WRITE.
You can use the VERT option of the DISPLAY statement.
As described in Statements DISPLAY and
WRITE, the DISPLAY statement normally presents the data in columns with
default headers, while the WRITE
statement presents data horizontally without headers.
You can combine the features of the two statements to produce vertical displays of field values.
The DISPLAY statement produces the values of different fields for the same
record across the page with a column for each field. The field values for each record are
displayed below the values for the previous record.
By using a WRITE statement after a DISPLAY statement, you can
insert text and/or field values specified in the WRITE statement between
records displayed via the DISPLAY statement.
The following program illustrates the combination of DISPLAY and
WRITE:
** Example 'WRITEX04': WRITE (in combination with DISPLAY) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 JOB-TITLE 2 CITY 2 DEPT END-DEFINE * READ (3) VIEWEMP BY CITY STARTING FROM 'SAN FRANCISCO' DISPLAY NAME JOB-TITLE WRITE 22T 'DEPT:' DEPT SKIP 1 END-READ END
Output of Program WRITEX04:
Page 1 04-11-11 14:15:55
NAME CURRENT
POSITION
-------------------- -------------------------
KOLENCE MANAGER
DEPT: TECH05
GOSDEN ANALYST
DEPT: TECH10
WALLACE SALES PERSON
DEPT: SALE20
In the previous example, the position of the field DEPT is determined by the
tab notation nT (in this case 20T,
which means that the display begins in column 20 on the screen).
Field values specified in a WRITE
statement can be lined up automatically with field values specified in the first DISPLAY statement of the program by
using the tab notation T*field (where
field is the name of the field to which the field is to be
aligned).
In the following program, the output produced by the WRITE statement is
aligned to the field JOB-TITLE by using the notation
T*JOB-TITLE:
** Example 'WRITEX05': WRITE (in combination with DISPLAY) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 JOB-TITLE 2 DEPT 2 CITY END-DEFINE * READ (3) VIEWEMP BY CITY STARTING FROM 'SAN FRANCISCO' DISPLAY NAME JOB-TITLE WRITE T*JOB-TITLE 'DEPT:' DEPT SKIP 1 END-READ END
Output of Program WRITEX05:
Page 1 04-11-11 14:15:55
NAME CURRENT
POSITION
-------------------- -------------------------
KOLENCE MANAGER
DEPT: TECH05
GOSDEN ANALYST
DEPT: TECH10
WALLACE SALES PERSON
DEPT: SALE20
When you use the DISPLAY and
WRITE statements in sequence and
multiple lines are to be produced by the WRITE statement, you can use the
notation x/y
(number-slash-number) to determine in which row/column something is to be displayed. The
positioning notation causes the next element in the DISPLAY or
WRITE statement to be placed x lines below the
last output, beginning in column y of the
output.
The following program illustrates the use of this notation:
** Example 'WRITEX06': WRITE (with n/n)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
2 NAME
2 FIRST-NAME
2 MIDDLE-I
2 ADDRESS-LINE (1:1)
2 CITY
2 ZIP
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK'
DISPLAY 'NAME AND ADDRESS' NAME
WRITE 1/5 FIRST-NAME
1/30 MIDDLE-I
2/5 ADDRESS-LINE (1:1)
3/5 CITY
3/30 ZIP /
END-READ
END
Output of Program WRITEX06:
Page 1 04-11-11 14:15:55
NAME AND ADDRESS
--------------------
RUBIN
SYLVIA L
2003 SARAZEN PLACE
NEW YORK 10036
WALLACE
MARY P
12248 LAUREL GLADE C
NEW YORK 10036
KELLOGG
HENRIETTA S
1001 JEFF RYAN DR.
NEWARK 19711
The standard display mode in Natural is horizontal.
With the VERT clause option of the DISPLAY statement, you can override the standard display and
produce a vertical field display.
The HORIZ clause option, which can be used in the same
DISPLAY statement, re-activates the standard horizontal display mode.
Column headings in vertical mode are controlled with various forms of the AS clause.
The following example programs illustrate the use of the DISPLAY VERT
statement:
The following program has no AS clause,
which means that no column headings are output.
** Example 'DISPLX09': DISPLAY (without column title) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 CITY END-DEFINE * READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK' DISPLAY VERT NAME FIRST-NAME / CITY SKIP 2 END-READ END
Output of Program DISPLX09:
Note that all field values are displayed vertically underneath one another.
Page 1 04-11-11 14:15:54 RUBIN SYLVIA NEW YORK WALLACE MARY NEW YORK KELLOGG HENRIETTA NEWARK
The following program contains a VERT and a
HORIZ clause, which causes some column values to be output
vertically and others horizontally; moreover AS CAPTIONED causes the
default column headers to be displayed.
** Example 'DISPLX10': DISPLAY (with VERT as CAPTIONED and HORIZ clause)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
2 NAME
2 FIRST-NAME
2 CITY
2 JOB-TITLE
2 SALARY (1:1)
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK'
DISPLAY VERT AS CAPTIONED NAME FIRST-NAME
HORIZ JOB-TITLE SALARY (1:1)
SKIP 1
END-READ
END
Output of Program DISPLX10:
Page 1 04-11-11 14:15:54
NAME CURRENT ANNUAL
FIRST-NAME POSITION SALARY
-------------------- ------------------------- ----------
RUBIN SECRETARY 17000
SYLVIA
WALLACE ANALYST 38000
MARY
KELLOGG DIRECTOR 52000
HENRIETTA
The following program contains an AS 'text'
clause, which displays the specified 'text' as
column header.
Note
A slash (/) within the text element in a DISPLAY statement causes a
line advance.
** Example 'DISPLX11': DISPLAY (with VERT AS 'text' clause)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
2 NAME
2 FIRST-NAME
2 CITY
2 JOB-TITLE
2 SALARY (1:1)
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK'
DISPLAY VERT AS 'EMPLOYEES' NAME FIRST-NAME
HORIZ JOB-TITLE SALARY (1:1)
SKIP 1
END-READ
END
Output of Program DISPLX11:
Page 1 04-11-11 14:15:54
EMPLOYEES CURRENT ANNUAL
POSITION SALARY
-------------------- ------------------------- ----------
RUBIN SECRETARY 17000
SYLVIA
WALLACE ANALYST 38000
MARY
KELLOGG DIRECTOR 52000
HENRIETTA
The AS 'text' CAPTIONED clause causes the
specified text to be displayed as column heading, and the default column headings to be
displayed immediately before the field value in each line that is output.
The following program contains an AS 'text'
CAPTIONED clause.
** Example 'DISPLX12': DISPLAY (with VERT AS 'text' CAPTIONED clause)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
2 NAME
2 FIRST-NAME
2 CITY
2 JOB-TITLE
2 SALARY (1:1)
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'NEW YORK'
DISPLAY VERT AS 'EMPLOYEES' CAPTIONED NAME FIRST-NAME
HORIZ JOB-TITLE SALARY (1:1)
SKIP 1
END-READ
END
Output of Program DISPLX12:
This clause causes the default column headers (NAME and
FIRST-NAME) to be placed before the field values:
Page 1 04-11-11 14:15:54
EMPLOYEES CURRENT ANNUAL
POSITION SALARY
------------------------------- ------------------------- ----------
NAME RUBIN SECRETARY 17000
FIRST-NAME SYLVIA
NAME WALLACE ANALYST 38000
FIRST-NAME MARY
NAME KELLOGG DIRECTOR 52000
FIRST-NAME HENRIETTA
If you use a combination of DISPLAY
VERT statement and subsequent WRITE statement, you can use the tab notation P*field-name in the
WRITE statement to align the position of a field to the column
and line position of a particular field specified in the DISPLAY
VERT statement.
In the following program, the fields SALARY and BONUS are
displayed in the same column, SALARY in every first line,
BONUS in every second line. The text ***SALARY PLUS BONUS***
is aligned to SALARY, which means that it is displayed in the same column
as SALARY and in the first line, whereas the text (IN US
DOLLARS) is aligned to BONUS and therefore displayed in the same
column as BONUS and in the second line.
** Example 'WRITEX07': WRITE (with P*field)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
2 CITY
2 NAME
2 JOB-TITLE
2 SALARY (1:1)
2 BONUS (1:1,1:1)
END-DEFINE
*
READ (3) VIEWEMP BY CITY STARTING FROM 'LOS ANGELES'
DISPLAY NAME JOB-TITLE
VERT AS 'INCOME' SALARY (1) BONUS (1,1)
WRITE P*SALARY '***SALARY PLUS BONUS***'
P*BONUS '(IN US DOLLARS)'
SKIP 1
END-READ
END
Output of Program WRITEX07:
Page 1 04-11-11 14:15:55
NAME CURRENT INCOME
POSITION
-------------------- ------------------------- ----------
SMITH 0
0
***SALARY PLUS BONUS***
(IN US DOLLARS)
POORE JR SECRETARY 25000
0
***SALARY PLUS BONUS***
(IN US DOLLARS)
PREPARATA MANAGER 46000
9000
***SALARY PLUS BONUS***
(IN US DOLLARS)
See the following example program: