Thanks for your reply to my message. M4 1.4 does not support ERE expressions, so [[:alpha:]]* is read as zero or more characters from the set `[:alph]'. I didn't check whether your quoting is correct, but you should have more luck with `^[a-zA-Z]*$'.
Using explicit character ranges worked. It had occurred to me that the posix character class might have been the problem, but, like Voltaire, I was sitting in the smallest room of the house when I thought about it, and by the time I got near something that would let me check, my mind had dropped the thought and fluttered on to other things. Thanks again for your help.
