<>
You can store the handle names in a global macro each time you create a new handle (and -macro drop- the handle when you close it) & then get them into a single list in a global macro using the extended_function all {globals} ["pattern"] . You can manipulate them from there. For example:
*********
clear all
cap file close _all
cap macro drop _all
local sf "`pwd'"
**for each handle you create, make a global macro**
forv n= 1/10 {
tempfile testm`n'
file open handle`n' using "`sf'/testm`n'", write replace
global handle`n' "handle`n'" //<-- create the global
file write handle`n' "test" _n
}
//If you close a handle, you'll need to drop the macro
file close handle5
macro drop handle5 //<-- remove the global
*----------------------------------examine open handles
//store all open handles in a single macro//
global overview: all globals "handle*"
macro li overview
//use the list of open handles//
foreach m of global overview {
di "`m'"
file write `m' _page(2) " the end "
/* something else */
}
*~*
file close _all
*****************
This would be less messy if the -file query- command could return the open handles along with the number of open files r(N).
~ Eric
__
Eric A. Booth
Public Policy Research Institute
Texas A&M University
[email protected]
Office: +979.845.6754
On Jan 5, 2010, at 1:28 PM, Jeph Herrin wrote:
I have been using -file- and it's subcommands to
do a lot of report writing; thus, I have written a
number of subroutines that use file handles to output
formatted text.
These would be easier to code if I could get a list of
open file handles. -file query- (which seems to have
no documentation other than that it exists) will output
the list of file handles, their type, and status, but
only returns -r(N)-, the number of open files.
Is there another way to get the list of open file handles
in a macro where I can manipulate them? Barring something
simpler, I can write a script to open a log file, call
-file query-, close the log file, then parse the log file
into a table, but that's messy for something I would want
to call in all of my subroutines.
Any other ideas?
thanks,
Jeph
*
*
* 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/