ANSWER TO EXERCISE 71 | |
Again, the first question is how to store the number dialled: in this case, into a string array. The token is: Constant MAX_PHONE_LENGTH = 30; Array dialled_number string MAX_PHONE_LENGTH; [ PhoneNumber f a l ch pp i; pp=1; if (NextWordStopped()==-1) return 0; do { a=WordAddress(wn-1); l=WordLength(wn-1); for (i=0:i<l:i++) { ch=a->i; if (ch<'0' ch>'9') { if (ch~='-') { f=1; if (i~=0) return -1; } } else { if (pp<MAX_PHONE_LENGTH) dialled_number->(pp++)=ch-'0'; } } } until (f==1 NextWordStopped()==-1); if (pp==1) return -1; dialled_number->0 = pp-1; return 0; ];To demonstrate this in use, [ DialPhoneSub i; print "You dialled <"; for (i=1:i<=dialled_number->0:i++) print dialled_number->i; ">"; ]; Verb "dial" * PhoneNumber -> DialPhone; |