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