INTOUCH® 4GL
A Guide to the INTOUCH Language


Previous page... Table of Contents

5.4 Inputting Strings

If the INPUT is to a string variable, the user can enter an unquoted or a quoted string. If the user enters an unquoted string, INTOUCH ignores any leading spaces, trailing spaces, or tabs. An unquoted string cannot contain commas.

If the user enters a quoted string, INTOUCH removes the quotes, and includes any leading or trailing spaces and tabs.

        10  INPUT 'Enter your name': name1$ 
            INPUT 'Enter your name in quotes': name2$ 
            INPUT 'Enter your name in quotes with spaces': name3$ 
            INPUT 'Enter last name, comma, space, first name in quotes': name4$ 
        20  PRINT 
            PRINT name1$ 
            PRINT name2$ 
            PRINT name3$ 
            PRINT name4$ 
        30  END 
 
        RNH 
        Enter your name? Tony 
        Enter your name in quotes? 'Tony' 
        Enter your name in quotes with spaces? '  Tony  ' 
        Enter last name, comma, space, first name in quotes? 'Smith, Tony' 
 
        Tony 
        Tony 
          Tony 
        Smith, Tony 

5.5 Inputting Multiple Variables

5.5.1 Simple Input Statement

A single INPUT statement can be used to input several variables. The input items and variables must be separated with commas.

        10  INPUT 'Enter 3 names separated by commas': name1$, name2$, name3$ 
        20  PRINT 
            PRINT name1$, name2$, name3$ 
        30  END 
 
        RNH 
        Enter 3 names separated by commas? Tom,Sue,George 
 
        Tom                 Sue                 George 

If an INPUT statement contains a list of variables, INTOUCH asks for input until all of the variables have a value. If the user enters less data or more data than there are variables, INTOUCH generates an exception. If an exception occurs, INTOUCH restarts from the beginning.

Users can enter the data for a variable list in one of two ways.

  1. The user can enter each piece of data on a separate line by typing a comma as the last character on each continuing line. The comma tells INTOUCH that there is more data to come.

            RNH 
            Enter 3 names separated by commas? Tom, 
            ? Sue, 
            ? George 
     
            Tom                 Sue                 George 
    
  2. Users can enter the data on one line by separating the data with commas as shown in the first example above.

Whichever method is used, INTOUCH will continue accepting input data until all the variables have values.

5.5.2 LINE INPUT Statement

A number of variables can be input with one LINE INPUT statement. Simply list the variables separated by line terminators.

        10  LINE INPUT 'Enter a comment, press Return, enter a comment': & 
                 comment_1$, comment_2$ 
            PRINT 
            PRINT comment_1$ 
            PRINT comment_2$ 
        20  END 
 
        RNH 
        Enter a comment, press Return, enter a comment? This is first comment 
        ? This is second comment 
 
        This is first comment 
        This is second comment 

INTOUCH asks for input until all of the variables listed have received a value.

Unlike the INPUT statement, you cannot separate answers with commas. Each variable is prompted for separately. If you include a comma in your response, the comma is just taken as part of the text.

5.6 INPUT Default Prompt and Text

By default, INTOUCH prints a question mark and a space and then waits for the user's response. However, you can display prompt text before the question mark. To display prompt text, enclose the prompt text in quotes and follow it with a colon. The colon separates the prompt text from the variable(s). The prompt text must follow the keyword INPUT and must be separated from the variable list by a colon.

When INTOUCH executes the INPUT statement, it prints the prompt text ("Your name" in the example below) followed by a question mark and a space.

        10  INPUT 'Your name': name$ 
        20  PRINT name$ 
        30  END 
 
        RNH 
        Your name? Fred 
        Fred 

5.7 PROMPT Option

The PROMPT option displays the specified prompt text without the question mark and space.

FORMAT:

        PROMPT str_expr 

str_expr is a string expression which contains the prompt text. str_expr can be any string expression. The prompt text is separated from the variable list with a colon (:).

EXAMPLE:

        10  INPUT PROMPT 'Please enter your name: ': name$ 
        20  PRINT 'Hello '; name$ 
        30  END 
 
        RNH 
        Please enter your name: Jackie 
        Hello Jackie 

5.8 AT Option

The AT option positions the cursor on the specified row and column. This is the position where the INPUT statement starts the prompt, not where the user enters data.

FORMAT:

        AT row, col 

row is the row to print at. col is the column to print at. row and col can be any integer numeric constants.

EXAMPLE:

        10  CLEAR 
            PRINT AT 1, 1: 
        20  INPUT AT 3, 10, PROMPT 'Please enter your name: ': name$ 
        30  PRINT 'Hello '; name$ 
        40  END 
 
        RNH 
           (row 3, col 10) 
                 | 
                 V 
                 Please enter your name: Jack 
        Hello Jack 

5.9 ATTRIBUTES Option

The ATTRIBUTES option allows input with attributes. The available attributes are:

Multiple attributes used in one INPUT statement are separated by commas.

FORMAT:

        ATTRIBUTES attr_list 

attr_list contains a list of input attributes.

EXAMPLE:

        10  name_attr$ = 'BOLD, UNDERLINE' 
        20  LINE INPUT 'Enter your name', ATTRIBUTES name_attr$: name$ 
        30  PRINT 'Hello '; name$ 
        40  END 
 
        RNH 
        Enter your name? Susan
        Hello Susan 

5.10 LENGTH Option

The LENGTH option limits the number of characters that a user can enter. It causes INTOUCH to display underscore characters following the prompt. The number of underscore characters is the length.

FORMAT:

        LENGTH num_expr 

num_expr is the number of characters the user can enter.

EXAMPLE:

        10  INPUT 'Enter your name', LENGTH 15: name$ 
        20  INPUT 'Enter a city', LENGTH 20: city$ 
        30  PRINT name$, city$ 
        40  END 
 
        RNH 
        Enter your name? Betty__________ 
        Enter a city? 'San Diego'_________ 
        Betty               San Diego 

5.11 DEFAULT Option

DEFAULT lets you provide defaults for INPUT statements. INTOUCH automatically formats the default appropriately. The user can press Return to accept the default you provide.

FORMAT:

        DEFAULT str_expr 

str_expr is a string expression that will be used as the default. When INTOUCH executes an INPUT statement with a default, it prints the default after the prompt.

EXAMPLE:

        10  INPUT 'Enter the state code', DEFAULT 'CA': state$ 
        20  PRINT 'The state was: '; state$ 
        30  END 
 
        RNH                    
        Enter the state code? CA 
        The state was: CA 

If the user does not want the default, they can simply type over the default text.

5.11.1 Pre-positioning to a DEFAULT Menu Item

When performing an INPUT MENU, the DEFAULT option can be used to specify a default menu path. The default takes the format of:

        #item1;#item2;... 

#item1 is the number of the item on the first menu, #item2 is the number of the item on the second menu, and so on.

Upon the completion of a INPUT MENU statement, the concept _STRING contains the menu path taken by the user when selecting the menu item. i.e. #2;#3 means the 3rd item of the 2nd submenu. (For information on menus, see Section 5.17, MENU Option.)

EXAMPLE:

10  CLEAR 
20  line1$ = '%WIDTH 12, %MENUBAR, %AUTOVBAR ON,' 
    line2$ = 'file = {new, get_file, save, save_as},' 
    line3$ = 'edit = {cut, copy, paste},' 
    line4$ = 'paragraph = {font, alignment, spacing, tabs, headers, footers},' 
    line5$ = 'options = {ruler = {on, off}, side_bar = {on, off},' 
    line6$ = 'view = {enlarged, normal, small}},exit' 
30  test_menu$ = line1$ + line2$ + line3$ + line4$ + line5$ + line6$ 
    the_default$ = '' 
40  DO 
      INPUT MENU test_menu$, DEFAULT the_default$: ans$ 
      IF  _EXIT  THEN  EXIT DO 
      MESSAGE 'Menu path was', _STRING 
      the_default$ = _STRING 
    LOOP 
50  END 

+------------------------------------------------------------------------------+ 
|  FILE      |   EDIT      |   PARAGRAPH   |   OPTIONS   |   EXIT              | 
+--------------------------------------------+---OPTIONS---+-------------------+ 
                                             |  RULER    [>| 
                                             |  SIDE_BAR +----VIEW-----+ 
                                             |  VIEW     |  ENLARGED   | 
                                             +-----------|  NORMAL     | 
                                                         |  SMALL      | 
                                                         +-------------+ 
 
                             Menu path was #4;#3;#2

5.12 ERASE Option

The ERASE option clears the input line prior to accepting input. After input has been completed, the input line is cleared again.

        10  CLEAR 
            PRINT AT 1,1: 
        20  INPUT 'Please enter a name', AT 3,1: name_1$ 
            INPUT 'Enter a 2nd name', AT 4,1, ERASE: name_2$ 
            PRINT '1st name: '; name_1$ 
            PRINT '2nd name: '; name_2$ 
        30  END 
 
        RNH 
        Please enter a name? James 
 
        1st name: James 
        2nd name: Tony 

5.13 VALID Option

The VALID option validates user responses according to specified validation rules.

FORMAT:

        VALID str_expr 

str_expr is the list of validation rules.

You can refer to the VALID() function in Appendix A, Built-in Functions for information on all the validation rules.

EXAMPLE:

        10  INPUT 'Enter name', LENGTH 20: name$ 
        20  INPUT 'Enter age', LENGTH 5, VALID 'INTEGER': age$ 
        30  PRINT name$, age$ 
        40  END 
 
        RNH 
        Enter name? Aaron_______________ 
        Enter age? 32___ 
        Aaron               32 

5.14 TIMEOUT Option

The TIMEOUT option limits the time the user has to respond to the INPUT prompt. A time limit must be specified with the TIMEOUT option. If the user does not complete the INPUT statement within the specified time, an exception ("timeout on input at xx") is generated.

FORMAT:

        TIMEOUT num_expr 

num_expr is a numeric expression that represents the number of seconds allowed for the response.

EXAMPLE:

        10  INPUT 'Name', TIMEOUT 4.5: name$ 
        20  END 
 
        RNH 
        Name? Timeout on input at 10 
 
        INTOUCH 

TIMEOUT 30 gives the user approximately 30 seconds to enter a name. Fractions of a second can be indicated by including decimal digits. TIMEOUT 4.5 gives the user approximately 4.5 seconds to enter a name.

5.15 AREA Option

The AREA option does input from an area on the screen.

FORMAT:

        LINE INPUT AREA top, left, bottom, right: str_expr 
Top Top row of the area on the screen
Left Left column of the area
Bottom Bottom row of the area
Right Right column of the area

EXAMPLE:

        10  CLEAR 
        20  MESSAGE 'Press GOLD/F when done' 
        30  LINE INPUT AREA 5, 10, 8, 60: text$ 
        40  PRINT AT 10, 1: 'Rewrapped text' 
        50  wt$ = WRAP$(text$, 1, 30) 
        60  PRINT wt$ 
        70  END 
 
        RNH 
 
                This is an example of wrapped text.  The text is 
                wrapping.__________________________________________ 
                ___________________________________________________ 
                ___________________________________________________ 
 
        Rewrapped text 
        This is an example of wrapped 
        text.  The text is wrapping. 

During a LINE INPUT AREA, the following features are available:

While you are entering text in an area, you can use the following commands:
Text To enter text, just type it.
Arrow keys To move around, press UP, DOWN, LEFT, RIGHT
CTRL/H Moves cursor to beginning of line
CTRL/E Moves cursor to end of line
GOLD/B Moves cursor to the top of the area
GOLD/F Complete (finish) and save the input
F10 Exit (abort) the input
CTRL/Z Exit (abort) the input
Help Exits from the input and sets the variable _HELP to true

When you finish a LINE INPUT AREA, INTOUCH removes any trailing line feeds and spaces.

5.16 SCREEN Option

The SCREEN option is used to create formatted data entry screens. The SCREEN option lets the user enter data into a fill-in area.

FORMAT:

        SCREEN str_expr 

str_expr specifies the screen format.

EXAMPLE:

        10  INPUT 'Your name, please': name$ 
        20  INPUT SCREEN 'Soc. sec.: <DIGITS:###-##-####>': SSN 
        30  PRINT name$, 'Social security number:'; SSN 
        40  END 
 
        RNH 
        Your name, please? John 
        Soc. sec.: ___-__-____ 

When the program executes, INTOUCH displays the prompt "Soc. sec.:" and a fill-in area with underscore characters where the user must fill in a number. The fill-in area is highlighted. As the user enters the social security number, it appears in the fill-in area and the underscores disappear. When the Return key is pressed, the number is assigned to the the variable SSN.

        RNH 
        Your name, please? John 
        Soc. sec.: 555-48-6662 
        John                Social security number: 555486662  

You can use the SCREEN option with any data type. A string expression follows the keyword SCREEN. The expression contains any text to print and the format for the fill-in areas.

A number of commands can be used within the format to control how the fill-in area works. These fall into two categories:

Format options come first. They are followed by a colon and then by format characters.

5.16.1 Screen Format Characters

#

The # is used to specify digits. Wherever a # sign appears, only these types of characters are allowed as input. For example, the # might be used for a phone number:

        10  INPUT SCREEN '<:(###) ###-####>': phone 
        20  PRINT phone 
        30  END 

When INTOUCH executes this program, it displays the following fill-in area:

        (___) ___-____ 
 
        RNH 
        (555) 554-7879 
        5555547879 

@

The @ is used to specify any printable character, including letters and numbers.

        10  INPUT SCREEN 'License #: <@@@ @@@@>': license$ 
        20  PRINT 'License: '; license$ 
        30  END 
 
        RNH 
        License #: INF 5783 
        License: INF5783 

.

A decimal point is used to align the fractional portion of a floating point number. If the screen format is in the form <###.####>, when the user presses the . key, the digits will be right-justified to the decimal point. When the field is complete, the digits to the right of the decimal will be left-zero filled.

        10  PRINT 'Input .59, please' 
        20  INPUT SCREEN 'Amount: <###.####>': amt$ 
            PRINT 'Amount = '; amt$ 
        30  END 
 
        RNH 
        Input .59, please 
        Amount = .5900 

^

The ^ is used to specify an UPPER-CASE letter. If the next character input is a lower-case letter, INTOUCH will change it to upper-case and echo it to the terminal in upper-case.

        10  INPUT SCREEN 'First name: <^@@@@@@@@@@@@@>': first$ 
            INPUT SCREEN 'Middle initial: <^>.': middle$ 
            INPUT SCREEN 'Last name: <^@@@@@@@@@@@@@@@>': last$ 
        20  PRINT first$; ' '; middle$; '. '; last$ 
        30  END 
 
        RNH 
        First name: John___________ 
        Middle initial: B. 
        Last name: Smithy___________ 
        John B. Smithy 

~

The ~ (tilde) is used to specify that any character that follows the ~ will not be replaced.

5.16.2 Screen Format Options

If you use format options, they must be placed before the format characters and followed by a colon. The following format options are available:

UCASE

Upper-cases all letters that are typed. If you type a letter in lower-case, it is changed to upper-case and echoed to the terminal screen in upper-case.

        10  PRINT 'Type in some text!' 
        20  INPUT SCREEN '<UCASE:@@@@@@@@@@@@@@@@@@@@>': text$ 
        30  PRINT 'Here is your text: '; text$ 
        40  END 
 
        RNH 
        Type in some text! 
        JOHN B. SMITHY______ 
        Here is your text: JOHN B. SMITHY 

LCASE

Lower-cases all letters that are typed. If you type a letter in upper-case, it is changed to lower-case and echoed to the terminal screen in lower-case.

        10  PRINT 'Type in some text!' 
        20  INPUT SCREEN '<LCASE: @@@@@@@@@@@@@@@@@@@@>': text$ 
        30  PRINT 'Here is your text: '; text$ 
        40  END 
 
        RNH 
        Type in some text! 
        john b. smithy 
        Here is your text: john b. smithy 

NOECHO

Typed characters are not echoed (printed) on the screen.

        10  INPUT SCREEN '<NOECHO:Password? @@@@@>' : pw$ 
        20  PRINT pw$ 
        30  END 
 
        RNH 
        Password? _____ 
        Elene               

DIGITS

Allows only digits to be entered in the field. The format character # also allows the minus sign and the decimal point.

        10  INPUT SCREEN 'Phone: <DIGITS:###-####>': phone 
        20  PRINT phone 
        30  END 
 
        RNH 
        Phone: 555-6798 
         5556798 

AJ

AJ causes INTOUCH to jump automatically to the next field when the current field has been filled in. The field must be completely filled in before INTOUCH will jump to the next field.

        10  INPUT SCREEN 'Phone: <AJ, DIGITS:###-####>': phone 
        20  INPUT SCREEN 'Soc. sec.: <DIGITS:###-##-####>': ssn 
        30  PRINT phone, ssn 
        40  END 
 
        RNH 
        Phone: 555-3839 
        Soc. sec.: 899-75-3432 
         5553839            899753432 

REQ

REQ specifies that input is required and you must enter something. The computer will beep and you will be prompted until valid input is entered.

AT row, column

The AT option displays the field on the screen at the row and column position specified. row specifies the row to print at. column specifies the column to print at.

You can supply defaults for each field in the screen. The format of the defaults is a list of values separated with line feeds. Defaults are set up in the following example.

        10  city$ = 'St Paul' 
            state$ = 'Minnesota' 
            df$ = city$ + chr$(10) + state$ 
            CLEAR 
            scr$ = '<AT 6, 10: City @@@@@@@@@@@@@@@@@@@@@@@@@@>' & 
                   +'<AT 7, 10: State  ^^>' 
            INPUT SCREEN scr$, DEFAULT df$: city$, state$ 
        20  END 
 
        RNH 
        City     St. Paul 
        State    Mi 

VALID

The VALID option allows full validation of each field on the screen. (See the VALID function in Appendix A for a list of validation rules.) The format of the VALID option is:

        VALID 'rule_str' 

rule_str is the list of validation rules. Multiple validation rules are separated by semi-colons.

        10  INPUT SCREEN 'code = <VALID "integer":###-##-##>': ans$ 
            PRINT ans$ 
        20  END 
 
        RNH 
        code = 121-23-47 
        1212347 

ELAPSED

The ELAPSED option keeps track of the time it takes the user to respond to an INPUT prompt. INTOUCH assigns the elapsed time to the variable specified. The ELAPSED option starts marking time when INTOUCH finishes displaying the prompt. Time stops when all the variables listed in the INPUT statement have values. The format is:

        ELAPSED num_var 

num_var is the numeric variable the elapsed time is assigned to. INTOUCH returns the elapsed time in seconds. If a real numeric variable is specified, INTOUCH returns the time to a hundredth of a second (1/100).

        10  INPUT 'Name', ELAPSED x: name$ 
        20  PRINT name$; ', your elapsed time is'; x 
        30  END 
 
        RNH 
        Name? John 
        John, your elapsed time is 1.39 

If an integer variable is specified, INTOUCH rounds the time to the nearest second.

        10  INPUT 'Name', ELAPSED x%: name$ 
        20  PRINT name$; ', your elapsed time is'; x% 
        30  END 
 
        RNH 
        Name? Julie 
        Julie, your elapsed time is 1 

BOLD, BLINK, UNDERLINE, REVERSE

The BOLD, BLINK, UNDERLINE and REVERSE options allow each input string to be displayed with its own attributes. If these format options are used together with the ATTRIBUTES option, the ATTRIBUTES option will be supressed.

        10  INPUT SCREEN '<AT 5,10, BOLD,BLINK:@@@@@@>' + & 
                         '<AT 6,10, REVERSE:@@@@@@>': str1$, str2$ 
        20  END 

5.16.3 The User's Response to the SCREEN Option

When a single INPUT SCREEN statement is used to create a fill-in screen, certain keys on the keyboard have special functions. The following keys can be used to complete the screen:

TAB


Next page... | Table of Contents