Stata The Stata listserver
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

st: RE: setting global in a loop


From   "Nick Cox" <n.j.cox@durham.ac.uk>
To   <statalist@hsphsun2.harvard.edu>
Subject   st: RE: setting global in a loop
Date   Tue, 15 Feb 2005 12:45:57 -0000

This is nothing to do with globals. In fact, 
the error message is pointing in the right 
direction. 

If you want to use ; as a delimiter you must use 
it after every (logical) command line. You 
can't mix EOLs and semi-colons as delimiters
within a block of code. I hardly use this 
practice, but I surmise that your code 
should be

#delimit;
foreach i of numlist 3(1)6 { ; 
	local j : di char(`i'+96) ; 
	global `j'indvars "pid `j'hid" ;
}; 
#delimit cr;

Having said that, there is clearly no 
compulsion to use ; here. 

Incidentally 

forval i = 3/6 { 

is cleaner and faster than 

foreach i of numlist 3(1)6 { 

although the "faster" here is a 
matter of a nanoblink. 

Nick 
n.j.cox@durham.ac.uk 

Ada Ma
> 
> I have a problem.  When I run the following program:
> 
> #delimit;
> foreach i of numlist 3(1)6 {
> local j : di char(`i'+96)
> global `j'indvars "pid `j'hid";
> }
> #delimit cr;
> 
> I got an error code r(198) with a comment saying:
> "program error:  code follows on the same line as open brace"
> 
> I am working on the BHPS and I hope that I can draw the same 
> variables out from 
> the various waves using globals combined with a loop.  Am I 
> doing anything wrong 
> or is global not allowed in a loop?
> 

*
*   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/



© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index