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