Thanks, Bill and Ric, for your examples and suggestions, and especially Henry, for your explanation!
> The point is, a test block can have multiple lines > (perhaps even containing if. blocks!) and the result > of the LAST line is the result of the test. > Here, everything between select. and case. is the test block. I was aware of the "last line" rule, but I had interpreted that to refer to lines *before*, for example, the "select" in my code. I didn't immediately realize that it applied as well to the lines of code between "select" and "case". However, in contemplating your response some more, I realized that I was letting my VISUAL code perspective override the truth of the matter, namely, that (as you said) everything (whether one line or multiple lines of code) between "select" and "case" combined to create the value to select. As Bill suggested, moving the 3 lines of debugging code (which he had previously suggested for verification purposes) made both (numeric and literal) functions work correctly. Thanks again to everyone for helping this beginner to understand J better! Harvey ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
