ESL will convert string values to integer or floating point values, and vice versa. Therefore, you can provide a string value in any statement in which an integer or floating point value is required, and vice versa. The following are valid specifications:
string variable Pos is "50"
disabled key Stop at position Pos Pos
draw to Pos 50
When a string contains only digits, ESL converts it to integers or floating point values in the obvious way ("50" is converted to 50; "50.01" is converted to 50.01). When the string contains blanks or alphabetic or special characters, ESL starts at the beginning of the string and proceeds according to the following rules:
•It ignores any leading blanks.
•It examines the first non-blank character(s) in the string. For integers, if the characters are digits (optionally preceded by a minus sign), ESL interprets the value as being an integer. For floating point values, if the string contains a decimal point, the digits before the decimal point and after the decimal point up to the first non-digit are regarded as the floating point value.
•It terminates at the first character that is not a digit (or decimal point, for floating point values). If it terminates before locating a number, the value is zero.
The following are some sample conversions:
String |
to Integer |
"52" |
52 |
"-52" |
-52 |
" 52" |
52 |
"52X5" |
52 |
"5 2" |
5 |
"X52" |
0 |
String |
to Floating Point |
"52.5" |
52.50 |
"-52.5" |
-52.50 |
" -52.5" |
-52.50 |
"52.5.1" |
52.50 |
"52 5" |
52.00 |
".52" |
0.52 |
"-.52" |
-0.52 |
As mentioned earlier, ESL will not perform conversions inside expressions; therefore, you cannot specify string values as operands for arithmetic operators. For example:
(Pos / "10")
is invalid.