Taking another look at the code,
an alternative is
foreach i in c d e f {
global `i'indvars "pid `i'hid"
}
The point is mostly one of maintenance.
I wouldn't trust myself to remember that
char(99) is "c" for more than a few minutes.
More to the point, on revisiting the code
later a programmer (even the original
programmer) who shared this failure
of memory would have to work that out
afresh. Using the letters directly
is more transparent.
Nick
[email protected]
> -----Original Message-----
> From: Nick Cox
> Sent: 15 February 2005 12:46
> To: '[email protected]'
> Subject: RE: setting global in a loop
>
>
> 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/