This document covers the following topics:
For an explanation of the symbols used in the syntax diagram, see Syntax Symbols.
Related Statements: INPUT | REINPUT |
                      SET WINDOW
Belongs to Function Group: Screen Generation for Interactive Processing
The DEFINE WINDOW statement is used to specify the size,
                       position and attributes of a window.
               
A window is that segment of a logical page, built by a program, which is displayed on the terminal screen. There is always a window present, although you may not be aware of its existence: unless specified differently, the size of the window is identical to the physical size of your terminal screen.
A DEFINE WINDOW statement does not activate a window; this
                       is done with a SET WINDOW
                       statement or with the WINDOW clause of an
                       INPUT statement.
               
Note:
 There is always only one Natural window, that is, the most
                          recent window. Any previous windows may still be visible on the screen, but are
                          no longer active and are ignored by Natural. You may enter input only in the
                          most recent window. If there is not enough space to enter input, the window
                          size must be adjusted first.
                  
Operand Definition Table:
| Operand | Possible Structure | Possible Formats | Referencing Permitted | Dynamic Definition | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
 operand1 
                         |  
                                
                        C | S | N | P | I | yes | no | |||||||||||||
 operand2 
                         |  
                                
                        C | S | N | P | I | yes | no | |||||||||||||
 operand3 
                         |  
                                
                        C | S | N | P | I | yes | no | |||||||||||||
 operand4 
                         |  
                                
                        C | S | N | P | I | yes | no | |||||||||||||
 operand5 
                         |  
                                
                        C | S | A | U | yes | no | ||||||||||||||
Syntax Element Description:
| Syntax Element | Description | 
|---|---|
 
                                    window-name 
                         |  
                                
                        The
                                    window-name identifies the window. The
                                    name may be up to 32 characters long. For a window name, the same naming
                                    conventions apply as for user-defined variables, see
                                    Naming Conventions for User-Defined
                                       Variables in the Using Natural documentation.
                         |  
                               
                     
 SIZE 
                         |  
                                
                         
                                    
                            With the  Note:  Example: Assume a window whose size is defined as  
  |  
                               
                     
 SIZE
                                       AUTO 
                         |  
                                
                         
                                    
                            The size of the window is determined automatically by Natural at runtime. The size is determined by the data generated into the window as follows: 
 If you omit the  Note:  |  
                               
                     
 SIZE QUARTER 
                         |  
                                
                        The size of the window will be one quarter of the physical screen. | 
 SIZE
                                        operand1 * operand2 
                         |  
                                
                         
                                    
                            The size of the window will be
                                         If the window is  The minimum possible window size is: 
 The maximum possible window size is the size of the physical screen.  |  
                               
                     
  BASE
                                        
                         |  
                                
                         With the BASE clause, you determine
                                    the position of the window on the physical screen. If you omit the
                                    BASE clause, BASE CURSOR applies by default. 
                         | 
                                
                               
                     
 BASE CURSOR 
                         |  
                                
                        Places the top left corner of the window at the current cursor position. The cursor position is the physical position of the cursor on the screen. If the size of the window makes it impossible to place the window at the cursor position, Natural automatically places the window as close as possible to the desired position. | 
 BASE
                                       TOP/BOTTOM LEFT/RIGHT 
                         |  
                                
                        Places the window at the top-left, bottom-left, top-right, or bottom-right corner respectively of the physical screen. | 
                                    BASE
                                       operand3/operand4 
                         |  
                                
                         
                                    
                            This places the top left corner of the window at the specified
                                        line/column of the physical screen. The line number is determined by
                                         If the size of the window makes it impossible to place the window at the specified position, you will get an error message.  |  
                               
                     
 REVERSED 
                         |  
                                
                         REVERSED will cause the window to
                                    be displayed in reverse video (if the screen used supports this feature; if it
                                    does not, REVERSED will be ignored). 
                         |  
                               
                     
 REVERSED CD=
                                       background-color 
                         |  
                                
                         
                                    
                            This will cause the window to be displayed in reverse video and the background of the window in the specified color (if the screen used supports these features; if it does not, the respective specification will be ignored). For information on valid color codes, see session parameter
                                          |  
                               
                     
 TITLE
                                       operand5 
                         |  
                                
                         
                                    
                            With the  Note:  |  
                               
                     
 CONTROL 
                         |  
                                
                         With the CONTROL clause, you
                                    determine whether the PF-key lines, the message line and the statistics line
                                    are displayed in the window or on the full physical screen. 
                         |  
                               
                     
 CONTROL WINDOW 
                         |  
                                
                        CONTROL WINDOW causes the lines to
                                    be displayed inside the window. 
                                    
                           If you omit the   |  
                               
                     
 CONTROL SCREEN 
                         |  
                                
                         CONTROL SCREEN causes the lines to
                                    be displayed on the full physical screen outside the window. 
                         |  
                               
                     
 FRAMED 
                         |  
                                
                         
                                    
                            By default, that is, if you omit the  The top and bottom frame lines are cursor-sensitive: where
                                        applicable, you can page forward, backward, left or right within the window by
                                        simply placing the cursor over the appropriate symbol ( Note:  |  
                               
                     
 FRAMED OFF 
                         |  
                                
                         If you specify FRAMED OFF, the
                                    framing and everything attached to the frame (window title and position
                                    information) will be switched off. 
                         |  
                               
                     
 FRAMED
                                       (CD=frame-color) 
                         |  
                                
                         
                                    
                            This causes the frame of the window to be displayed in the specified color (if the screen used is a color screen; if it is not, the color specification will be ignored). For information on valid color codes, see session parameter
                                         Note:  |  
                               
                     
 
                                    position-clause 
                         |  
                                
                        The POSITION clause is only
                                    evaluated on mainframe computers; on all other platforms it is ignored. For
                                    details, refer to Position
                                       Clause below.
                         |  
                               
                     
The POSITION clause is only evaluated on mainframe
                        computers; on all other platforms it is ignored.
               
 POSITION 
                         |  
                                 
                        
                                     
                            
  |  
                                 
                         
                                         SYMBOL  
                                     
                         |  
                                 
                        
                                     
                            
  |  
                                 
                         
                                         TOP   
                         |  
                                 
                        
                                     
                            
  |  
                                 
                        
                                     [AUTO]
                                     [SHORT]
                                     
                         |  
                                 
                        
                                     
                            
  |  
                                 
                         
                                        LEFT  
                         |  
                                 
                        
                                     
                            
  |  
                                 
                        
                                     
                            
  |  
                                
                     |||
 
                                        BOTTOM  
                         |  
                                 
                         
                                         RIGHT   
                         | 
                                 
                                
                     ||||||||||||
 
                                        TEXT  
                         |  
                                 
                        [MORE] 
                         |  
                                 
                        
                                     
                            
  |  
                                 
                         
                                        LEFT  
                         |  
                                 
                        
                                     
                            
  |  
                                 
                        |||||||||
 
                                         RIGHT   
                         | 
                                 
                                 
                        |||||||||||||
                                      OFF 
                                     
                         |  
                                
                     |||||||||||||
The POSITION clause causes information on the position of
                        the window on the logical page to be displayed in the frame of the window. This
                        applies only if the logical page is larger than the window; if it is not, the
                        POSITION clause will be ignored. The position information
                        indicates in which directions the logical page extends above, below, to the
                        left and to the right of the current window.
               
If the POSITION clause is omitted, POSITION SYMBOL
                           TOP RIGHT applies by default.
               
Syntax Element Description:
The following rules apply to input fields (with
                       AD=A or
                       AD=M)
                       which are not entirely within the window:
               
Input fields whose beginning is not inside the window are always made protected.
Input fields which begin inside and end outside the window are only
                               made protected if the values they contain cannot be displayed completely in the
                               window. Please note that in this case it is decisive whether the value
                                  length, not the field length, exceeds the window size. Filler
                               characters (as specified with the profile parameter
                               FC) do not
                               count as part of the value.
                     
If you wish to access input fields thus protected, you have to adjust the window size accordingly so that the beginning of the field/end of the value is within the window.
A DEFINE WINDOW statement must not be placed within a
                       logical condition statement block. To invoke different windows depending on a
                       condition, use different SET
                             WINDOW statements (or INPUT statements with a
                       WINDOW clause respectively) in a condition.
               
** Example 'DWDEX1': DEFINE WINDOW                                      
************************************************************************
DEFINE DATA LOCAL                                                       
01 #I (P3)                                                              
END-DEFINE                                                              
*                                                                       
SET KEY PF1='%W<<' PF2='%W>>' PF4='%W--' PF5='%W++'                     
*                                                                       
DEFINE WINDOW WIND1                                                     
       SIZE QUARTER                                                     
       BASE TOP RIGHT                                                   
       FRAMED ON POSITION SYMBOL AUTO                             
*                                                                       
SET WINDOW 'WIND1'                                                      
FOR #I = 1 TO 10                                                        
  WRITE 25X #I 'THIS IS SOME LONG TEXT' #I                              
END-FOR                                                                 
*                                                                       
END 
                                                           +------------------------More:     + >+
> r                                     ! Page      1                         !
All    ....+....1....+....2....+....3.. !                                     !
  0010 ** Example 'DWDEX1': DEFINE WIND !                             1 THIS  !
  0020 ******************************** !                             2 THIS  !
  0030 DEFINE DATA LOCAL                !                             3 THIS  !
  0040 01 #I (P3)                       !                             4 THIS  !
  0050 END-DEFINE                       !                             5 THIS  !
  0060 *                                !                             6 THIS  !
  0070 SET KEY PF1='%W<<' PF2='%W>>' PF !                             7 THIS  !
  0080 *                                ! MORE                                !
  0090 DEFINE WINDOW WIND1              +-------------------------------------+
  0100        SIZE QUARTER                                                     
  0110        BASE TOP RIGHT                                                   
  0120        FRAMED ON POSITION SYMBOL AUTO                                   
  0130 *                                                                       
  0140 SET WINDOW 'WIND1'                                                      
  0150 FOR #I = 1 TO 10                                                        
  0160   WRITE 25X #I 'THIS IS SOME LONG TEXT' #I                              
  0170 END-FOR                                                                 
  0180 *                                                                       
  0190 END                                                                     
  0200                                                                         
       ....+....1....+....2....+....3....+....4....+....5....+... S 19   L 1