Ernest Berkhout
> vallist oplnr
> foreach oplnr of local r(list)  {
... 
> 
> The error message I get is:
> 
> { required
> r(100)
Solutions have been suggested, but 
let's back-track to why this doesn't work, 
as the explanation may be of interest. 
Here's my reconstruction. 
-vallist- leaves behind r(list). 
When you type 
. foreach oplnr of local r(list) { 
Stata tries to make sense of r(list) 
as the _name_ of a local macro. It 
sees first 
r 
which could be all or part of a legal name for 
a local macro. So far, so good. Then it sees 
( 
which is definitely not acceptable as part 
of the name of a local macro. So it guesses 
that the macroname has finished and (apart 
from the possibility of spaces) the only legal 
thing it now expects is a "{": manifestly "(" 
does not qualify, so at this point Stata exits and 
emits its error message, as your syntax is illegal. In other words, 
Stata got as far as 
. foreach oplnr of local r( 
before exiting. It didn't try to look further
than that, because it knew this could not possibly 
be right. 
This is all a consequence of the keyword -local-. 
As Patrick explained, if you want to use the 
_value_ of r(list), not its name, you can use 
the syntax `r(list)' but you must go for the 
-in- syntax of -foreach- which spells out
the _in_dividual members of the list. 
. foreach v in `r(list)' { 
or something similar. Sometimes a bare 
r(list) 
will be evaluated by Stata to its 
value, but usually (always???) that is 
to the right of an = sign. 
Nick 
[email protected] 
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/