# Directives

INPUT | Get Input from Terminal

## Format

INPUT [EDIT] ([chan][,fileopt])varlist
Where:

chan | Channel or logical file number of the file from which to get terminal input.
fileopt | Supported file options (see File Options):
BSY=stmtref | Traps Error #0: Input timeout
ERR=stmtref | Error transfer
HLP=string$ | Help message identifier
IND=num | Position cursor to specified column number
LEN=num | Limit on input size
SIZ=num | Number of characters to read (number of screen columns)
TBL=stmtref | Data translation table
TIM=num | Maximum time-out value in integer seconds
stmtref | Program line number or statement label to which to transfer control
| When screen positions are tight, you can combine the LEN= and SIZ= options to have the system supply a scrolling input field. Example: To allow a user to enter 60 characters in a field where you only have room for 30 on the screen: input (0,len=60,siz=30)"Name....:",N$
varlist | Comma-separated list of variables, literals, mnemonics, IOL= options, and/or location functions '@(...)'. Include Format Masks to filter data being received.

## Description

Use the INPUT directive to issue prompts and to receive input from a terminal device. You would normally use the logical file number to refer to a terminal. Input from the user is stored in a variable specified. PxPlus treats any literals or expressions included in the statement as prompts. When a numeric variable is specified, numeric data must be received. Non-numeric input in response to a numeric variable (other than commas and decimals) will cause an Error #26: Variable type invalid.

If you use the EDIT clause, the current values for the variables are loaded into the input buffer so that the user can edit them.

Use a format mask with the INPUT directive to control the input. To do this, append a : (colon) and the mask to the given variable in varlist. If you omit a format mask for a numeric in an INPUT statement, the 'DP' (Decimal Point Symbol) and 'TH' (Thousands Separator) system parameters are ignored for European decimal settings.

If an INPUT EDIT statement has both a format mask and a validation list, make sure that the validation list contains only entries that are possible. For example, if the format mask indicates that the input value must be a single character, do not use a null ("") value in the validation list. Instead, valid input for "no value" could be a blank/space in this instance:

> 0030 input edit (0,err=0030)@(10,10),VAR$:"A":("Y"=0040,"N"=0050,""=0060)

A validation list may contain literals, simple variables, or sub-stringed variables.

Use the IND= option to set the position of the cursor in the INPUT field. Use IND(chan) to obtain the position where the cursor was left after the INPUT.

(The ability to use a sub-stringed variable was added in PxPlus v6.30.)

## See Also

ACCEPT Read Single Keystroke
OBTAIN Get Hidden Terminal Input
'ME' Begin Edit Mode
'BI' Begin Input Transparency
Data Format Masks

## Example

input 'CS',@(5,5),"Enter customer number:",C
input edit "Enter value:",INV_AMT:"$##,##0.00"

Use IND=x as a parameter for the INPUT statement to set the starting point in an input field.

Example:

To start the input at the tenth character of A$:

> A$="Now is the time"
> input edit (0,ind=10) A$

Use IND(0) to find out the character position where the user terminated input. For example, if the user enters "Now is the time" and presses Home and Tab, the cursor moves to the 10th position, just after the "e" in "the". Then, if the user presses Enter or any other function key to terminate the input, the value returned in IND(0) is 10.