%TLOOKUPxx (Look Up a Table Element)
%TLOOKUPxx (Look Up a Table Element)
%TLOOKUP(arg : search-table {: alt-table})
%TLOOKUPLT(arg : search-table {: alt-table})
%TLOOKUPGE(arg : search-table {: alt-table})
%TLOOKUPGT(arg : search-table {: alt-table})
%TLOOKUPLE(arg : search-table {: alt-table})
The following functions search search-table for a value that matches arg as follows:
%TLOOKUP : An exact match.
%TLOOKUPLT : The value that is closest to arg but less than arg.
%TLOOKUPLE : An exact match, or the value that is closest to arg but less than arg.
%TLOOKUPGT : The value that is closest to arg but greater than arg.
%TLOOKUPGE : An exact match, or the value that is closest to arg but greater than arg.
If a value meets the specified condition, the current table element for the search table is set to the element that satisfies the condition, the current table element for the alternate table is set to the same element, and the function returns the value *ON.
If no value matches the specified condition, *OFF is returned.
The first two parameters can have any type but must be compatible.
- If the first and second parameters have character, graphic, or UCS-2 type, and the first parameter does not have the same type or CCSID as the second parameter, the first parameter is converted to the type and CCSID of the second parameter.
- If the first and second parameters are numeric, they can have a different number of digits or decimal positions.
The ALTSEQ table is used, unless arg or search-table is defined with ALTSEQ(*NONE).
Built-in functions %FOUND and %EQUAL are not set following a %LOOKUP operation.
Note: Unlike the LOOKUP operation code, %TLOOKUP applies only to tables. To look up a value in an array, use the %LOOKUP built-in function.
The %TLOOKUPxx built-in functions use a binary search for sequenced tables (tables that have the ASCEND or DESCEND keyword specified). See Sequenced arrays that are not in the correct sequence.
For more information, see Array Operations or Built-in Functions.
Figure 1. %TLOOKUPxx Example
*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
/FREE
*IN01 = %TLOOKUP('Paris':tab1);
IF %TLOOKUP('Thunder Bay':tab1:tab2);
// code to handle Thunder Bay
ENDIF;
/END-FREE