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