OK, so ignoring scope of variables, which is something I've never heard of before ^_^, so suits me fine...
I'm very concerned about your use of a stray "AND a," I assume that should be part of some sort of error trapping system (presumably in an IF statement), which you've not shown here for clarity. Your note at the end *seems* to imply they shouldn't really be there? Although the phrase "proper form" would contradict that. You've thoroughly tied me in knots!
You don't include the "AND a" in the SET statements.
The use of SET seems to require a list, which I would rather avoid since it requires additional processing.
Other than that I can't see any difference between SETQ and SET from your example. From looking at Hyperpics, it would appear that SETQ can handle multiple expressions (SETQ a 1 b 2 c 3...) whilst SET cannot. This is something I tend to do, because I think it produces neater code when printed.
I think my question about multiple SETQs has led us up the garden path slightly, each iteration will work on at most one of gcount, pcount, etc., sometimes on none of them. I guess this leads me back to my original question: At what stage should I declare these variables, or am I better doing a (SETQ gcount nil pcount nil ) after their last use?
Sorry if I've competely misunderstood you
dJE
Looking back over the thread, it seems that Alan introduced the whole AND issue, but I missed it. Is it some kind of replacement for COND?