Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
st: RE: Re: Invalid syntax in a program
From 
 
"Martin Weiss" <[email protected]> 
To 
 
<[email protected]> 
Subject 
 
st: RE: Re: Invalid syntax in a program 
Date 
 
Mon, 12 Jul 2010 22:56:31 +0200 
<>
***********
su varname, mean
forv i=1/`r(max)'{
...
}
***********
See NJC`s http://www.stata-journal.com/article.html?article=st0135
HTH
Martin
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Dani Tilley
Sent: Montag, 12. Juli 2010 22:08
To: stata
Subject: st: Re: Invalid syntax in a program
Hi guys,
Thanks for taking the time. It turns out that the problem was that the
program 
could not access local macros declared elsewhere in the program. So a -forv 
t=1/`max'- where max was a local declared outside the program would trigger
the 
invalid syntax error. I also noticed that this gave me an error:
program command, rclass
...
egen int max=max(varname) in 1
forv t=1/max[1] {
<code>
}
...
end
I did the following to fix it, but it feels clumsy:
egen int max=max(varname) in 1
local max=max[1]
drop max
forv t=1/`max' {
<code>
}
Any suggestions for a more elegant solution?
Thanks so much.
DF Tilley
----- Original Message ----
<>
Works for me too.   Try turning on your trace to see where it stops  (-set
trace 
on-)
~ Eric
<>
Does work for me:
***********
capture program drop command
program command, rclass
version  10.0
syntax varlist(min=1 max=10)
foreach v of local varlist {
       di in r "`v'"
}
end
drop _all
gen var1=.
gen var2=.
command var1 var2
***********
HTH
Martin
From: Dani Tilley <[email protected]>
To: stata <[email protected]>
Sent: Mon, July 12, 2010 3:19:08 PM
Subject: Invalid syntax in a program
Hi,
I'm trying to write a program that will do some fairly  involved
manipulations 
on variables. I'll spare you the code, but  I've tried it several times and
it 
works just fine. When I try to write a command that will do those operations
for 
me, I get invalid syntax.
capture program drop command
program command, rclass
version  10.0
syntax varlist(min=1 max=10)
foreach v of local varlist {
<working  code goes here>
}
end
command var1 var2
invalid  syntax r(198);
I also tried the following manually (not in a  program):
local b var1 var2
foreach v of local b{
<working  code>
} 
and everything went smoothly. So I'm completely  baffled as to why this
wouldn't 
work in a program with -foreach v of  local varlist-.
Any help is appreciated.
Thanks,
DF  Tilley
      
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/