[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: behaviour of locals
Nick Cox <firstname.lastname@example.org>
Re: st: behaviour of locals
Wed, 24 Aug 2011 12:08:36 +0100
Also, the behaviour that you expect would make it possible for your
own code to break official Stata commands if you used the same macro
As it is, what -local- does is set up a _temporary_ name and then
assign contents to it. So, the intended side-effect of that is the
name and thus its contents fading away into oblivion at the end of a
A way to fix this in mind is to understand that -local- and -global-
are not arbitrary names, but indicate the scope of macro definitions.
On Wed, Aug 24, 2011 at 11:34 AM, Nick Cox <email@example.com> wrote:
> This is not an "issue". It is an intended consequence, and precisely
> what is meant by -local-. Local macros have meaning only locally,
> meaning within the same program, very wide sense, which means within a
> 1. program, strict sense
> 2. do file
> 3. do file editor contents
> 4. interactive session.
> So, if you run a program or do file, a local macro defined in that
> program or do file should be considered to disappear once that
> terminates and in any case to be utterly invisible outside it even
> while it is running.
> There is no contradiction here. It is merely that your interactive
> session is not over until you exit Stata.
> Your possibilities include passing the value of a local to a do file
> or a program as an argument, using a global instead, or redefining a
> local within each program, wide sense, that you use.
> The behaviour that you expect would make Stata very difficult to
> manage as to use -local-s at all within your own code you would have
> keep to track of -local- definitions within all the programs that you
> run, including those that define or are called by official commands.
> On Wed, Aug 24, 2011 at 11:14 AM, Sunil Kumar
> <firstname.lastname@example.org> wrote:
>> Dear Statalisters,
>> I'm running Stata 12.0 (update level 8th Aug 2011) on a Mac (10.6.8).
>> My issue is that if I define a local as part of a do file, it exists
>> only for that particular execution of the do file, but if I type it
>> into the command window, it exists till I exit Stata, which is what I
>> understand to be the expected behaviour.
>> For example:
>> sysuse auto, clear
>> . local test "price"
>> . reg `test' mpg
>> works fine if I type commands into the command window or run a do file
>> that contains both these lines. But if I run the two commands (local
>> then reg) separately from a do file, one by one, then the regression
>> only includes a constant, i.e. the local is missing.
>> Similarly, if I run the local command from a do file and type anything
>> involving the local into the command line, then the local is still
>> missing (blank). Am I misunderstanding how locals should behave? I've
>> tried the same thing on Stata 11 and the local exists till I exit
>> Stata, irrespective of whether it was defined in a do file or typed
* For searches and help try: