Since you don't indicate the problem you're having, the best I can do is to try and replicate it.
However, that code works just fine under Ubuntu 10 with CLISP 2.44.1:
pax@pax-desktop:~$ clisp
i i i i i i i ooooo o ooooooo ooooo ooooo
I I I I I I I 8 8 8 8 8 o 8 8
I \ `+' / I 8 8 8 8 8 8
\ `-+-' / 8 8 8 ooooo 8oooo
`-__|__-' 8 8 8 8 8
| 8 o 8 8 o 8 8
------+------ ooooo 8oooooo ooo8ooo ooooo 8
Welcome to GNU CLISP 2.44.1 (2008-02-23) <http://clisp.cons.org/>
Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2008
Type :h and hit Enter for context help.
[1]> (defun ask-num ()
(format t "Please enter a number.")
(let ((val (read)))
(if (numberp val)
val
(ask-num))))
ASK-NUM
[2]> (ask-num)
Please enter a number.hello
Please enter a number.goodbye
Please enter a number.3141592653589
3141592653589
[3]>
So, all I can really suggest is that you try to do exactly what the above transcript shows. If that still has a problem, make sure you have a recent version of CLISP and update the question with the actual problem you're having (all good questions should have expected and actual behaviour along with the circumstances leading up to the problem).
Now that you've posted your actual error, we can see it's a simple matter of how you called the function in the first place. You have to call it with (ask-num), as specified in the link you gave:
(ask-number)
Please enter a number. a
Please enter a number. (ho hum)
Please enter a number. 52
52
The reason why you're getting that error is because an unadorned ask-num is being evaluated as a variable (when, in reality, it's a function). You can see this in action here:
pax@pax-desktop:~$ clisp
: : : : :
Type :h and hit Enter for context help.
[1]> 42
42
[2]> myvar
*** - EVAL: variable MYVAR has no value
The following restarts are available:
USE-VALUE :R1 You may input a value to be used instead of MYVAR.
STORE-VALUE :R2 You may input a new value for MYVAR.
ABORT :R3 Abort main loop
Break 1 [3]> (set 'myvar 42)
42
Break 1 [3]> myvar
42
Break 1 [3]>