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.