Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Maximum length of a string expression in a program


From   Davide Cantoni <[email protected]>
To   [email protected]
Subject   Re: st: Maximum length of a string expression in a program
Date   Mon, 16 Mar 2009 09:48:06 -0400

Dear Maarten, Eva,

thanks for your suggestions. So I found out that, as you pointed out,
the problem in my file is not the line containing

`command' `depvar' `regressors' `if'  [`weight' `exp'] , `options'

But rather two other lines:

***
local regressors=trim("`regressors'")
***

and

***
local nr=wordcount("`regressors'")
foreach k of numlist 1(1)`nr' {
     ...
     local regrs_no``k'' = subinword("`regressors'","``k''","",.)
     ...
}
***

I do not have instances in my code where I evaluate the string with an
= sign. But these two lines seem to be the stumbling stone. The first
one is just for cosmetic reasons, and I can merrily dispense with it.
In the other case the stumbling stone is -subinword-, not -wordcount-.
What I am doing there is eliminating one of the regressors at a time
(in order to run the regression with the imposed "null hypothesis" of
the corresponding beta to be zero). But Stata does not seem to like
subinword when the list is too long. What can I do there so get around
this problem?

Thanks again,

Davide

On Mon, Mar 16, 2009 at 5:10 AM, Maarten buis <[email protected]> wrote:
>
> --- On Mon, 16/3/09, Davide Cantoni wrote:
>> I have a question related to programming a new program/ado
>> file. I am encountering the problem that one of the
>> arguments of my program might be too long as a string,
>> going beyond the limit of 244 characters.
> <snip>
>> I am encountering problems when running -mycommand- with a
>> list of regressors that is longer than 244 characters.
>> Then, the list is arbitrarily truncated after that limit.
>
> You have to be a bit careful not to evaluate the local
> containing such a long string (i.e. avoid using the "=" when
> defining a local), but otherwise there should not be a
> problem with -gettoken- or the extended macro functions (I
> always type -help macro- and follow the link to the helpfile
> for the extended macro functions), even if the local surpasses
> the 244 tokens limit. This is illustrated in the example
> below:
>
> *------------ begin example -------------------
> forvalues i = 1/60 {
>        local lstring "`lstring' very"
> }
> local lstring "`lstring' long string"
>
> // the string has more than 244 characters:
> di `: length local lstring'
>
> // -gettoken- works:
> gettoken first rest : lstring
> di `:length local first'
> di `:length local rest'
> *------------- end example --------------------
> (For more on how to use examples I sent to the Statalist, see
> http://home.fsw.vu.nl/m.buis/stata/exampleFAQ.html )
>
> Hope this helps,
> Maarten
>
> -----------------------------------------
> Maarten L. Buis
> Institut fuer Soziologie
> Universitaet Tuebingen
> Wilhelmstrasse 36
> 72074 Tuebingen
> Germany
>
> http://home.fsw.vu.nl/m.buis/
> -----------------------------------------
>
*
*   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–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index