If your code is just checking
$numeric each time you should be using
elseif instead of
if, it might work out much faster (although it still wouldn't explain why your code isn't working).
This also might be a place where using
goto will be the most efficient method.
ie.
raw *:*:{
goto $numeric {
:001
;dostuff for numeric 001
goto end
:002
;dostuff for numeric 002
goto end
;more numerics here!
:error
if (? /goto: * iswm $error) reseterror
:end
}
}