[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: behaviour of locals
Sunil Kumar <email@example.com>
Re: st: behaviour of locals
Wed, 24 Aug 2011 12:34:22 +0100
Thank you for explaining this and clarifying what I had misunderstood.
On Wed, Aug 24, 2011 at 12:08 PM, Nick Cox <firstname.lastname@example.org> wrote:
> 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:
> * http://www.stata.com/help.cgi?search
> * http://www.stata.com/support/statalist/faq
> * http://www.ats.ucla.edu/stat/stata/
* For searches and help try: