
We now learned how to parse strings and retrieve components from them. But what if these components are numbers? Well, there is a way in 4tH to convert a string to a number, but like every number-conversion routine it has to act on invalid strings. That is, strings that cannot be converted to a valid number.
4tH uses an internal error-value, called '(ERROR)'. The constant '(ERROR)' is a strange number. You can't negate it, you can't subtract any number from it and you can't print it. If 4tHs number-conversion word 'NUMBER' can't convert a string it returns that constant. Let's take a look at this program:
." Enter a number: " \ write prompt
refill drop \ enter string
bl word \ parse string
number dup \ convert to a number
(error) = \ test for valid number
if \ if not valid
." You didn't enter a valid number!" drop cr
else \ print if valid
." The number was: " . cr
then
You first enter a string, then it parsed and 'WORD' returns the address where that string is stored. 'NUMBER' tries to convert it. If 'NUMBER' returns '(ERROR)' if wasn't a valid string. Otherwise, the number is right on the stack, waiting to be printed. That wasn't so hard, was it?