DATATYPE (original) (raw)
-DATATYPE(string--+-------+--)------------------------------->< '-,type-'
returns NUM if you specify only string and if string is a valid REXX number that can be added to 0 without error; returns CHAR if string is not a valid number.
If you specify type, returns 1 if string matches the type; otherwise returns 0. If string is null, the function returns 0 (except when type is X, which returns 1 for a null string). The following are valid types. (Only the capitalized and highlighted letter is needed; all characters following it are ignored. Note that for the hexadecimal option, you must start your string specifying the name of the option with x rather than h.)
Alphanumeric
returns 1 if string contains only characters from the ranges a–z, A–Z, and 0–9.
Binary
returns 1 if string contains only the characters 0 or 1 or both.
C
returns 1 if string is a mixed SBCS/DBCS string.
Dbcs
returns 1 if string is a DBCS-only string enclosed by SO and SI bytes.
Lowercase
returns 1 if string contains only characters from the range a–z.
Mixed case
returns 1 if string contains only characters from the ranges a–z and A–Z.
Number
returns 1 if string is a valid REXX number.
Symbol
returns 1 if string contains only characters that are valid in REXX symbols. (See Tokens.) Note that both uppercase and lowercase alphabetics are permitted.
Uppercase
returns 1 if string contains only characters from the range A–Z.
Whole number
returns 1 if string is a REXX whole number under the current setting of NUMERIC DIGITS.
heXadecimal
returns 1 if string contains only characters from the ranges a–f, A–F, 0–9, and blank (as long as blanks appear only between pairs of hexadecimal characters). Also returns 1 if string is a null string, which is a valid hexadecimal string.
Here are some examples:
DATATYPE(' 12 ') -> 'NUM'
DATATYPE('') -> 'CHAR'
DATATYPE('123*') -> 'CHAR'
DATATYPE('12.3','N') -> 1
DATATYPE('12.3','W') -> 0
DATATYPE('Fred','M') -> 1
DATATYPE('','M') -> 0
DATATYPE('Fred','L') -> 0
DATATYPE('?20K','s') -> 1
DATATYPE('BCd3','X') -> 1
DATATYPE('BC d3','X') -> 1
The DATATYPE function tests the meaning or type of characters in a string, independent of the encoding of those characters (for example, ASCII or EBCDIC).