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
[email protected]
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/