| **Navigation:**  [[introduction.htm|Language Reference]] > 13 - Built-in Functions >====== CHOOSE (return chosen value) ====== | [[choice return relative item position .htm|{{btn_prev_n.gif|Previous page}}]][[introduction.htm|{{btn_home_n.gif|Return to chapter overview}}]][[chord draw a section of an ellipse .htm|{{btn_next_n.gif|Next page}}]] | | || | | **CHOOSE(** | |// expression //,//value//,// value// [,//value...//] |// //**)** | | | | |// condition //[,//truevalue//,// falsevalue// ] | | {{blk2blue.jpg|blk2blue.jpg}} | **CHOOSE** | Returns the chosen value from a list of possible values. | | //expression// | An arithmetic expression which determines which //value// parameter to return. This expression must resolve to a positive integer. | | //value// | A variable, constant, or expression for the procedure to return. | | //condition// | A logical expression which determines which of the two //value// parameters to return. If no //truevalue// or //falsevalue// parameters are present, one (1) is returned when the //expression// is true, and zero (0) is returned when the //expression// is false. | The **CHOOSE** procedure evaluates the //expression// or //condition// and returns the appropriate //value// parameter. If the //expression// resolves to a positive integer, that integer selects the corresponding //value// parameter for the CHOOSE procedure to return. If the //expression //evaluates to an out-of-range integer, then CHOOSE returns the last //value// parameter. When the //condition// evaluates as true, then CHOOSE returns the //truevalue// parameter. When the //condition// evaluates to false, then CHOOSE returns the second //falsevalue// parameter. If no //value// parameters are present, CHOOSE returns one (1) for true, and zero (0) for false. The return data type is dependent upon the data types of the //value// parameters: ** **__**All Value Parameters**__**       **__**Return Data Type**__ **  LONG                      LONG** **  DECIMAL or LONG           DECIMAL** **  STRING                    STRING** **  DECIMAL, LONG, or STRING  DECIMAL** **  anything else             REAL** | **Return Data Type:** | LONG, DECIMAL, STRING, or REAL | **Example:** | ** ****CHOOSE****(4,'A','B','C','D','E')  returns 'D'** | | ** ****CHOOSE****(1 > 2,'A','B')          returns 'B'** | | ** ****CHOOSE****(1 > 2)                  returns zero (0)** | | | | **!Hide or unhide control, based on the value in SomeField:** | | ** ?MyControl{PROP:Hide} = ****CHOOSE****(SomeField = 0,TRUE,FALSE)** | | | | **!VIEW filter to select "overweight" people of both sexes** | | **MyView{PROP:Filter} = 'Weight > ****CHOOSE****(Sex = ''M'',250,200)'** | | | | **CHOOSE****(Date % 7 + 1,'Sunday','Monday','Tuesday','Wednesday', |** | | **                           'Thursday','Friday','Saturday')** | | **CHOOSE****(Date % 7 + 1,'Sun','Mon','Tue','Wed','Thu','Fri','Sat')** | | | | **CHOOSE****(Date % 7 % 6 + 1,'Weekend','Weekday')** | | **CHOOSE****(INRANGE(Date % 7,1,5),'Weekend','Weekday')** | | | | **CHOOSE****(INLIST(Emp:Sex,'M','F'),'Male','Female','Unknown')** | | | | | **See Also:** [[inlist return entry in list .htm|INLIST]]