Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, is already up and running.

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

Re: st: Dropping Program Saved as an ado-file

From   Maarten Buis <>
Subject   Re: st: Dropping Program Saved as an ado-file
Date   Wed, 5 Sep 2012 10:31:18 +0200

On Wed, Sep 5, 2012 at 12:44 AM, Christoph Engel wrote:
> I am writing a program, which I wish to save as an ado-file. The program consists of two components: a maximum likelihood estimator, and the program calling the estimator. I need several auxiliary variables that are available in both components. I have found out that this works if I generate them as _x-variables, i.e. as variables with the variable name preceded by an underscore (assuming that users are very unlikely to have such variable names in their original datasets).

I would do this differently:

I assume you have a main program, which calls -ml-, which calls your
likelihood evaluator program, and that you want to create temporary
variables in your main program and use those in your likelihood
evaluator program.

The trick is that temporary variables continue to exist as long as the
program that created them has not ended. So all you need is a way to
pass on the names of those temporary variables from your main program
to your likelihood evaluator program. This can be done with global


Inside the main program I would do something like:
gettoken y x: varlist
tempvar yvar
qui gen `yvar' = <some manipulation involving `y'>
global yvar "`yvar'"

foreach var of local x {
    tempvar x`var'
    qui gen `x`var'' = <some manipulation involving `var'
    global xvars "$xvars `x`var''

Inside the likelihood evaluator program I can than use $yvar and
$xvars to get access to these temporary variables and still have all
the protection provided to me by temporary variables.

Hope this helps,

Maarten L. Buis
Reichpietschufer 50
10785 Berlin

*   For searches and help try:

© Copyright 1996–2016 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index