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: