Skip to main content

KEYUNICODE

KEYUNICODE(string)

stringA UNICODE string.
Return:KEYUNICODE returns a single DATA value.

The KEYUNICODE function returns a DATA value derived from the string parameter, such that a comparison of these data values is equivalent to a locale sensitive comparison of the Unicode values that generated them--and, being a simple memcmp(), is significantly faster. The generating string values must be of the same locale or the results are unpredictable. This function is particularly useful if you're doing a lot of compares on a UNICODE field in a large dataset--it can be a good idea to generate a key field and do the compares on that instead.

Example:

//where you might do this:
my_record := RECORD
   UNICODE_en_US str;
END;
my_dataset := DATASET('filename', my_record, FLAT);
my_sorted  := SORT(my_dataset, str);
//you could instead do this:
my_record := RECORD
   UNICODE_en_US str;
   DATA strkey := KEYUNICODE(SELF.str);
END;
my_dataset := DATASET('filename', my_record, FLAT);
my_sorted  := SORT(my_dataset, strkey);

See Also: UNICODE, LOCALE