Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Jeph Herrin <junk@spandrel.net> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: to preserve locals while debugging |
Date | Fri, 19 Mar 2010 09:15:11 -0400 |
Two ideas. One is to put the locals in a separate .do file which you can -include- ; see the brilliantly outlined details here http://www.stata-journal.com/article.html?article=pr0047 Another solution is to use something like this bit of code which will write out all of the current locals to a file which you can then -include- in order to recover them. *------------- save locals ------------------ capture log close log using mylocals.txt, text replace macro list log close file open logfile using mylocals.txt, text read file open mylocals using mylocals.do, text replace write file read logfile line while r(eof)==0 { local lname : word 1 of `line' if strpos("`lname'","_")==1 { local lval : subinstr local line "`lname'" "" local lval=trim("`lval'") local lname : subinstr local lname "_" "" local lname : subinstr local lname ":" "" file write mylocals "local `lname' " _char(34) "`lval'" _char(34) _n } file read logfile line } file close logfile file close mylocals *----------- done -------------------------- hth, Jeph Stefan.Gawrich@hlpug.hessen.de wrote:
Hi Statalisters, I'm looking for a way to preserve locals while writing or debugging ado-file . An example: I create a series of graphs in a loop. Graph parameters are provided by locals which are set inside the loop or somewhere else in the do-file.Graph layout sometimes needs a lot of fine-tuning and visual checks.Before running the graph again I have to redefine locals either by running the whole do-file or by temporarily defining all locals just above the graph command. Both alternatives are not very convenient.I think of a command that stores all locals in a safe place (copy to global or something else) and breaks execution of the do file.A complementary command restores the locals and makes them available for the graph. Anything already available or any ideas (beside "use globals")? ;-) Stefan GawrichSimple code examplesysuse auto, clear local filename "auto.dta" local foreign = 1 forval x = 1/5 {lpres // preserves locals for the session and breaks at run 1 ...} To run while working on the graph: lrest // restores locals hist length if foreign == `foreign' & rep78 == `x', /// title("`filename'") } * * 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/