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

Re: st: foreach and globals and {.}

From   "Michael Blasnik" <>
To   <>
Subject   Re: st: foreach and globals and {.}
Date   Mon, 11 Apr 2005 07:21:05 -0400

The ${} are used to make the name of a global macro explicit to Stata when the context would otherwise make it unclear -- primarily when you want to embed a global macro name in a text string:

di "abc${myglobal}def"

allows Stata to figure out that the global macro is called myglobal. In the original pos, they don't need that syntax.

Michael Blasnik

----- Original Message ----- From: "Ulrich Kohler" <>
To: <>
Sent: Monday, April 11, 2005 7:04 AM
Subject: Re: st: foreach and globals and {.}

Hans J. Baumgartner wrote:
Dear statalist,

has anybody an idea how to solve the following problem?

foreach x in ${out_`year’} {
do something

That is: I have several globals and I need the braces to tell Stata that
the local `year’ actually belongs to the global name.

Now I would like to run a loop over all elements in the global

But the foreach command gets puzzled with the braces around the global,
since it thinks that this means to start the loop. And this returns an
error that a code follows on the same line as open braces.
I don't understand why you need the braces in ${out_`year'}. If $out_`year'
is a string, consisting out of several elements,

foreach x in $out_`year' {
do something

would be fine. If $out_`year' refers to a single element, which changes
according to `year' within a loop, I cannot see why you start a loop at all.

(I must admit that I have never seen something like ${out_`year'}, and I was
kind of surprised that

. global x "test"
. di "${x}"

works. Can anybody tell me what that means?)

*   For searches and help try:

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