Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down on April 23, and its replacement, **statalist.org** is already up and running.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
"Martin Weiss" <martin.weiss1@gmx.de> |

To |
<statalist@hsphsun2.harvard.edu> |

Subject |
st: RE: Re: Invalid syntax in a program |

Date |
Mon, 12 Jul 2010 23:02:20 +0200 |

<> What was wrong with your old approach? Several things, as it turns out. Firstly, the -in- qualifier restricts the operation to the first observation, which makes the caculation of a maximum meaningless. Second, you need to force Stata to evaluate the first observation of variable "max" explicitly to make this work. Note the second syntax achieves the goal much more elegantly. *********** sysuse auto, clear egen int max=max(rep78) in 1 forv t=1/`=max[1]'{ di in r `t' } su rep78, mean forv t=1/`r(max)'{ di in r `t' } *********** HTH Martin -----Original Message----- From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] 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 <tilleydani@yahoo.com> To: stata <statalist@hsphsun2.harvard.edu> 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/

**Follow-Ups**:**Re: st: RE: Re: Invalid syntax in a program***From:*Dani Tilley <tilleydani@yahoo.com>

**References**:**st: Re: Invalid syntax in a program***From:*Dani Tilley <tilleydani@yahoo.com>

- Prev by Date:
**Re: st: duration analysis in gllamm** - Next by Date:
**Re: st: combining DHS surveys: what weights to use** - Previous by thread:
**st: RE: Re: Invalid syntax in a program** - Next by thread:
**Re: st: RE: Re: Invalid syntax in a program** - Index(es):