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

Reply via email to