Rob's macro FOOBAR is easy to improve, as in
| macro
| FOOBAR &a=,&b=&c=
| more than one keyword-pasrameter value supplied?
|
|&a_in setb (t'&a ne 'O') --&a value supplied?
|&b_in setb (t'&b ne 'O') --&b value supplied?
|&c_in setb (t'&c ne 'O') --&c value supplied?
|&ns seta &a_in+&b_in+&c_in --count of values supplied
|only_one setb (&ns eq 1) --only one value supplied?
| aif (&only_one).after_too_many --if so, ok
|&text(1) setc ' not ',' ' --mnote variable text
|&asub seta (3+&a_in)/2 --0,1==>1,2
|&bsub seta (3+&b_in)/2 --0,1==>1,2
|&csub seta (3+&c_in)/2 --0,1==>1,2
mnote 8,'FOOBAR000i, Only one of the a=, b=, c= keyword+
parameters may be given a value; here &ns were. Sp+
ecifically, &&a was&text(asub).given a value, &&b was+
&text(&bsub).given a alue; and &&c was&text(csub).g+
iven a value.'
.after_too_many anop
mexit
mend
Here of course
&&a was&text(&asub).given a value
yields '&a was given a value' when one was supplied, or '&a was not
given a value' when one was not supplied.
I am unenthusiastic about the notion that a nul string value is an
omitted one, not least because the macro language makes a specific.
wholly unambiguous test for omisses available.
John Gilmore, Ashland, MA 01721 - USA