3.2.20. DATATYPE(string[,option]) With only one parameter, this function identifies the datatype of string. The value returned will be NUM if string is a valid REXX number. Otherwise, CHAR is returned. Note that the interpretation of whether string is a valid number will depend on the current setting of NUMERIC. If option is specified too, it will check if string is of a particular datatype, and return either 1 or 0 depending on whether string is or is not, respectively, of the specified datatype. The possible values of option are: [A] (Alphanumeric) Consisting of only alphabetic characters (in upper, lower or mixed case) and decimal digits. [B] (Binary) Consisting of only the two binary digits 0 and 1. Note that blanks are not allowed within string, as would have allowed been within a binary string. [L] (Lower) Consisting of only alphabetic characters in lower case. [M] (Mixed) Consisting of only alphabetic characters, but the case does not matter (i.e. upper, lower or mixed.) [N] (Numeric) If string is a valid REXX number, i.e. DATATYPE(string) would return NUM. [S] (Symbolic) Consists of characters that are legal in REXX symbols. Note that this test will pass several strings that are not legal symbols. The characters includes plus, minus and the decimal point. [U] (Upper) Consists of only upper case alphabetic characters. [W] (Whole) If string is a valid REXX whole number under the current setting of NUMERIC. Note that 13.0 is a whole number since the decimal part is zero, while 13E+1 is not a whole number, since it must be interpreted as 130 plus/minus 5. [X] (Hexadecimal) Consists of only hexadecimal digits, i.e. the decimal digits 0-9 and the alphabetic characters A-F in either case (or mixed.) Note that blanks are not allowed within string, as it would have been within a hexadecimal string. If you want to check whether a string is suitable as a variable name, you should consider using the SYMBOL() function instead, since the Symbolic option only verifies which characters string contains, not the order. You should also take care to watch out for lower case alphabetic characters, which are allowed in the tail of a compound symbol, but not in a simple or stem symbol or in the head of compound symbol. Also note that the behavior of the options A, L, M and U might depend on the setting of language, if you are using an interpreter that supports national character sets. DATATYPE( - 1.35E-5 ) > NUM DATATYPE(1E999999999) > CHAR DATATYPE(1E9999999999) > CHAR DATATYPE(!@#&#$(&*%`) > CHAR DATATYPE(FooBar, A) > 1 DATATYPE(Foo Bar, A) > 0 DATATYPE(010010111101, B) > 1 DATATYPE(0100 1011 1101, B) > 0 DATATYPE(foobar, L) > 1 DATATYPE(FooBar, M) > 1 DATATYPE( -34E3 , N) > 1 DATATYPE(A_SYMBOL!?!, S) > 1 DATATYPE(1.23.39E+4.5, S) > 1 DATATYPE(Foo bar, S) > 0 DATATYPE(FOOBAR, U) > 1 DATATYPE(123deadbeef, X) > 1
PREV NEXT