Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

Re: st: Programming Problem: How to prevent macro substitution


From   "Eva Poen" <eva.poen@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Programming Problem: How to prevent macro substitution
Date   Wed, 16 Jul 2008 16:44:22 +0100

Christoph,

take it in steps and it works:

foreach u of numlist 0/2{
  local xlist "`xlist' " "i.land|" "`" "ldep`u'" "'"
}


-di "`xlist'"- returns

i.land|`ldep0' i.land|`ldep1' i.land|`ldep2'

on my machine.

Hope this helps,
Eva


2008/7/16 Christoph Birkel <christoph.birkel@soziologie.uni-halle.de>:
> Dear All,
>
> I want to program a loop which produces a macro `xlist' containing a list of
> dummy variable interaction expansion expressions with temporary variable
> names `ldep0' , `ldep1' etc. as a string . For this purpose I wrote:
> foreach u of numlist 0/`y2'{
>  local ldep`u' "ldep`u'"
> local xlist "`xlist' i.land|``ldep`u'''"
> }
> The resulting macro should contain an expression like " i.land|`ldep0'
>  i.land|`ldep1'  i.land|`ldep2' "  (when  `y2'  contains 2)  which  can be
>  used as argument in -xi: reg-, as in: xi: reg yvar i.land `xlist' . (The
> temporary variables `ldep0' and so on, corresponding to the macros are
> generated later in  a separate loop.)
> What actually happens, is that, due to the single quotation marks, the
> macros containing the names of the temporary variables are subsituted by
> their content (which should not happen), so the content of the resulting
> macro is " i.land|ldep0  i.land|ldep1  i.land|ldep2 ", which cannot be used
> to refer to temporary variables. For the same reason, it is not possible to
> define a local macro with a string as content which starts and ends with
> quotation marks. I found no way to avoid the unintended macro substitution
> using "\" or compound quotes. Any recommendation is highly appreciated.
>
> Christoph Birkel
> --
> Christoph Birkel, M.A.
> Wissenschaftlicher Mitarbeiter
> -Studienfachberater BA-Studiengänge Soziologie-
> Martin-Luther-Universität Halle-Wittenberg
> Institut für Soziologie
> D-06099 Halle (Saale)
> GERMANY
> Tel.: ++ 49 3 45 / 55 24 22 5
> Fax.: ++ 49 3 45 / 55 27 14 9 http://www.soziologie.uni-halle.de/birkel/
>
>
>
> *
> *   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:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/



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