Gets the user to select a response interactively from a list (R.W. Payne).
Option
HELP = text |
Help information for the QUESTION |
---|
Parameters
ALTERNATIVES = texts |
Alternatives from which each choice is to be made |
---|---|
CODES = texts |
Codes to use to represent each set of alternatives |
PREAMBLE = texts |
Preamble for the question used to select from each set of alternatives |
CHOICE = texts |
Alternative chosen from each set |
NCHOICE = scalars |
Numbers of the chosen alternatives (0 if exit has been chosen instead) |
Description
The QUESTION
procedure provides a convenient way of getting the user to choose a response from a short list. However, the size constraints of the standard computer screen mean that this does not work effectively for lists of more than about 16 items. QLIST
overcomes this limitation by repeated calls of QUESTION
. Each call displays 16 choices, together with the option of exiting without making a selection or, after all the choices have been displayed, of repeating the list.
Option: HELP
.
Parameters: ALTERNATIVES
, CODES
, PREAMBLE
, CHOICE
, NCHOICE
.
Method
QLIST
makes repeated use of the QUESTION
procedure until a response is obtained.
See also
Directive: QDIALOG
.
Procedures: QFACTOR
, QUESTION
.
Commands for: Program control, Calculations and manipulation.
Example
CAPTION 'QLIST example',\ 'Evaluate various functions of the numbers 1-9.';\ STYLE=meta,plain QLIST !t('print 2!','print square root of 2','print log (base 10) of 2',\ 'print 3!','print square root of 3','print log (base 10) of 3',\ 'print 4!','print square root of 4','print log (base 10) of 4',\ 'print 5!','print square root of 5','print log (base 10) of 5',\ 'print 6!','print square root of 6','print log (base 10) of 6',\ 'print 7!','print square root of 7','print log (base 10) of 7',\ 'print 8!','print square root of 8','print log (base 10) of 8',\ 'print 9!','print square root of 9','print log (base 10) of 9');\ PREAMBLE='Please select an action?'; NCHOICE=nchoice CALCULATE number = INTEGER((nchoice + 5) / 3) & action = (MOD(nchoice - 1; 3) + 1) * (number > 1) IF action == 1 CALCULATE fact = FACTORIAL(number) PRINT [IPRINT=*] number,'! is',fact; FIELD=2,4,8; SKIP=1,0,1;\ DECIMALS=0,*,0; JUSTIFICATION=right,left,left ELSIF action == 2 CALCULATE sqrt = SQRT(number) PRINT [IPRINT=*] 'Square root of',number,'is',sqrt; FIELD=14,2,2,8;\ DECIMALS=*,0,*,*; JUSTIFICATION=right,left,left,left ELSIF action == 3 CALCULATE log = LOG10(number) PRINT [IPRINT=*] 'Log (base 10) of',number,'is',log; FIELD=16,2,2,8;\ DECIMALS=*,0,*,*; JUSTIFICATION=right,left,left,left ELSE PRINT 'No action selected.' ENDIF