This document covers the following topics:
The syntax is described separately. See:
Related Statements: DEFINE
WINDOW
| REINPUT
|
SET WINDOW
Belongs to Function Group: Screen Generation for Interactive Processing
The INPUT
statement is used in interactive mode to
create a formatted screen or map for data entry.
It may also be used in conjunction with the Natural stack (see the
STACK
statement) and to
provide user data for programs being executed in batch mode.
For Natural RPC: See Notes on Natural Statements on the Server in the Natural RPC (Remote Procedure Call) documentation.
The INPUT
statement may be used in screen, forms, or
keyword/delimiter mode. Screen mode is generally used with video
terminals/screens. Forms mode may be used with TTY terminals. Delimiter mode is
used with TTY terminals, and also in batch mode. The default mode is screen
mode.
You can change the input mode with the session parameter
IM
.
In screen mode, execution of the INPUT
statement
results in the display of a screen according to the fields and positioning
notation specified. The message line of the screen is used by Natural for error
messages. The position of the message line (top or bottom of screen) may be
controlled by the terminal command %M
. The terminal user may
position to specific fields using the various tabulation keys.
As Natural allows for screen window processing, the layout of the logical screen map may be larger (theoretically 250 characters per line and 250 lines, but limited by the internal screen buffer) than the physical screen size.
The windowing terminal command %W
may be used to modify logical
and physical window position and size (see the terminal command %W
for details of window handling).
For input fields (AD=A
or
AD=M
)
that are not fully displayed on the physical screen, the following rules
apply:
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
or session parameter
AD
) do not
count as part of the value.
Before an input field thus protected can be accessed and
processed, the window size must be adjusted so as to fully display the field or
value respectively (see the terminal command %W
).
The INPUT
statement may be used for an operation on
line-oriented devices or for the processing of batch input from sequential
files.
The same map layouts as defined for screen mode operation can also be processed in non-screen mode.
Forms mode and keyword/delimiter mode are also available to process the input either by simulating the screen layout in line mode or by just processing the data without any map layout.
See also:
Data for an alphanumeric field must be entered left-justified. Any character, including a blank, is meaningful. The data are assigned one character per byte to the internal field. Data entered for an alphanumeric field are not validated.
Lower and upper case translation are controlled by the terminal
commands %L
and
%U
as well as the
attributes AD=T
and
AD=W
.
Data for a numeric field may be placed anywhere in the input field.
Leading and/or trailing blanks, leading zeros, a leading sign and one decimal
point are permitted. Natural adjusts the value according to the internal
definition of the field. If SG=OFF
is specified,
Natural does not assume or allocate a position for a sign position. Data for a
field defined with format P must be entered in decimal form. Natural will
convert decimal to packed wherever necessary. A field containing all blanks is
interpreted as a zero value. Data for a numeric field are validated by Natural
to ensure that the value consists only of leading and/or trailing blanks, an
optional leading sign, an optional decimal point, and numeric characters. If no
decimal point is entered, it is assumed to be to the right of the value
entered.
Data for a binary field must be entered for all positions (two characters per byte). Only valid hexadecimal characters (0 - 9, A - F) may be used. A blank (H'20' in ASCII or H'40' in EBCDIC respectively) is valid and is converted to binary zeros. Data for a binary field are validated by Natural for hexadecimal characters.
Data for format L fields may be entered as blank (false) or non-blank (true).
Data for format F, D, and T are entered according to the rules stated for F, D, and T constants.
Within a field element, you may format the representation of the field content with an edit mask. The edit mask is used for two purposes:
to build the layout for displaying the field on the screen;
when a string has been modified and ENTER has been pressed, to extract the field data from the string entered.
The advantage of improving the format of the field data displayed with additional insert characters may actually be a disadvantage, because a new data value entered has to perfectly match the format of the edit mask.
SET GLOBALS ID=; DC=, RESET N (N7,3) INPUT N (AD=M EM=Z'.'ZZZ'.'ZZZ,999EUR) END
Output value | is displayed as: | Input value | must be entered as: | leads to an input error if entered as: |
---|---|---|---|---|
0 | ,000EUR | 1 | 1,000EUR |
1 |
1234 | 1.234,000EUR | 1234567 | 1.234.567,000EUR |
1234567 |
0,123 | ,123EUR | 1,234 | 1,234EUR | 1,234 |
Another option for entering numeric fields with the edit mask is
to use an alternative INPUT
mode, which is called the edit mask
free mode. When activated (either at session startup with the profile parameter
EMFM
or in
a running Natural session via the terminal command
%FM+
), all or some of
the edit mask insert characters may be left out from input.
However, when a contiguous string of insertion characters appears
in the edit mask (like EUR
in the example below), you may only
supply or leave out the string completely. The number of optional or mandatory
digits (edit-mask character Z
and 9
) to be supplied
is not affected.
SET GLOBALS ID=; DC=, SET CONTROL 'FM+' /* activate numeric Edit Mask Free Mode RESET N (N7,3) INPUT N (AD=M EM=Z'.'ZZZ'.'ZZZ,999EUR) END
Input value | can be entered as: | leads to an error if entered as: |
---|---|---|
1 |
1 |
1EUR |
1234567 |
1234567 |
1.234.567EUR
|
1,234 |
1,234 |
1,234EU |
Note:
The edit mask free mode applies only for INPUT
,
but is ignored in a MOVE
EDITED
statement.
Selection boxes in an INPUT
statement are available on
mainframe computers only. On Windows, selection boxes may be defined in the map
editor only. On Linux, selection boxes cannot be defined and are ignored, if
they are imported from a Windows or mainframe environment.
Selection boxes can be attached to input fields. They are a comfortable alternative to help routines attached to fields, since you can code a selection box direct in your program. You do not need an extra program as with help routines.
For more information, see the session parameter
SB
in the
Parameter Reference.
If the value entered in an input field does not correspond to the format or edit mask of the field, Natural displays an error message (without terminating the program execution) and positions the cursor in the field in error. The user may then enter a valid value, whereupon processing continues.
In general, each INPUT
statement generates a new page
(or terminal screen) of output. Any INPUT
statement which is
specified within an AT END OF
PAGE
statement will not produce a new screen. This feature
allows for the creation of a split screen where the upper portion of the screen
may be used to display multiple lines and the lower portion can be used to
create an input map for communication. The profile parameter
PS
(page
size) should be used, either in a SET
GLOBALS
or FORMAT
statement, to set the logical
page size to ensure that the input map is built on the same physical
screen.
The first INPUT
line will be placed after the last
displayed line. If the NO
ERASE
option is used, the first INPUT
line will
be placed at the top of the page.
For information on relevant system variables, see the section Input/Output Related System Variables in the System Variables documentation.