CHOOSE function  

Purpose

Return one of several values, based upon the value of an index.

Syntax

y  = CHOOSE(index&,  choice1 [, choice2] ...[ELSE choice9])

y& = CHOOSE&(index&, choice1 [, choice2] ...[ELSE choice9])
y$
= CHOOSE$(index&, choice1 [, choice2] ...[ELSE choice9])

y  = CHOOSE([BIT]   index&, choice1 [, choice2] ...[ELSE choice9])

y& = CHOOSE&([BIT]  index&, choice1 [, choice2] ...[ELSE choice9])

y$ = CHOOSE$([BIT]  index&, choice1 [, choice2] ...[ELSE choice9])

y$ = CHOOSE$([BITS] index&, choice1 [, choice2] ...[ELSE choice9])

Remarks

These functions may take any number of choice parameters.  They return one of the parameters, or a combination of them, based upon the value of index&.  In the standard form, index& makes the choice based upon the sequence of the parameters.  That is, if index& is one, choice1 is returned.  If two, choice2 is returned, etc.  If index& is not equal to one of the choice values, the default value is returned to the calling code.

CHOOSE expects choices of any numeric type.  CHOOSE& expects choices optimized for an integral data type.  CHOOSE$ expects choices of string type.  CHOOSE% is recognized as a valid synonym for CHOOSE&.

ELSE

If no match is made with one of the choice values, the value zero (0) or an empty (zero-length) string is normally returned.  However, if an ELSE clause is included as the last choice, its value is returned as the default value.  For example:

ChoiceVar$ = CHOOSE$(7,"ONE", "TWO" ELSE "NUL")

In this case, the ELSE expression "NUL" is returned.

BIT

If the BIT option is included, the selection is based upon the first bit set (lowest to highest) in index&.  That is, the lowest bit (1) returns choice1, the next bit (2) returns choice2, the next bit (4) returns choice3, the next bit(8) returns choice4, etc. Evaluation of index& stops as soon as one set bit is found.  This is particularly valuable when used with an ENUMERATION which also uses the BIT option, to describe a set of attributes for an item in your program.

BITS

This is similar to the BIT option, but is only available with the CHOOSE$() version.  index& is evaluated in the same general fashion, but the function may return multiple choices, as a concatenated string, if more than one bit is set.  For example:

x$ = CHOOSE$(BITS 5, "Computer ", "Laptop ", "Desktop ")

Since the value 5 consists of 2 bits (the lowest and third-lowest) set, the first and third strings are concatenated and returned to the caller.  In this case, "Computer Desktop " is the result.

Restrictions

PowerBASIC only evaluates the selected choice(s) at run-time, not all of them.  This ensures optimum execution speed, as well as the elimination of unanticipated side effects.

See also

IIF, IIF&, IIF$, MAX, MAX&, MAX$, MIN, MIN&, MIN$, SWITCH, SWITCH&, SWITCH$, SELECT

Example

y& = 4

a$ = CHOOSE$(y&, "Bill", "Bob", "Bruce", "Barry")

Result

a$ = "Barry"