This would define local macros within the same namespace as the do file.
There remains the issue of making them visible to the main interactive
session and any other do files or programs -- if that were needed.
Nick
[email protected]
Jeph Herrin
Here's a code which creates a do-file which will reassign all
the local macros. The only thing that needs to be fixed is that
it should have embedded quotes and as usual I can't seem to get
them right and I am off for lunch etc now.
* ----------- for testing
local test "This one"
*------------- save locals ------------------
capture log close
log using mylocals.txt, text replace
macro list
log close
file open logfile using mylocals.txt, read
file open mylocals using mylocals.do, 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 lname : subinstr local lname "_" ""
local lname : subinstr local lname ":" ""
* next line should have embedded quotes for last token
file write mylocals "local `lname' `lval'" _n
}
file read logfile line
}
file close logfile
file close mylocals
*----------- done --------------------------
This creates a do-file called mylocals.do; if you run it,
it will reload all the local macros that you had when you
ran it.
Ashim Kapoor wrote:
> Hi Nick,
>
> I don't think I was clear. Here is what I do :
> 1. Run sometests and produce local macros and a small output dataset.
> 2. Use the macros and dataset to print the output.
>
> so (2) is ALL I want any1 to see. I am not worried about encrypting
> the local macros, only that I can't let anyone else see the do file i
> am running to produce my macro.
>
> Is'nt is much easier to save the macros / save the dataset and send it
> to someone to see the output whethere in HTML or smcl.
> Why risk someone decrypting my file ?
>
> It's not even my IDEA, I just program it but I don't think my boss
> will like it if i put it on the internet.
>
> Is'nt everyone who comes to this list working for a company or a
> university ? Would'nt their university be really upset if they gave
> out their bosses unpublished work on the internet and fire them on the
> spot ? Do those people pay for these services ? Oh, A small number of
> times I have answered questions, should I expect to be paid for that ?
>
> Thank you,
> Ashim.
>
> On Wed, Jan 7, 2009 at 10:48 PM, Nick Cox <[email protected]>
wrote:
>> Sorry, Ashim, but I really don't understand your comments here.
>>
>> First off, local macros are useless unless used in some code. Whether
>> that use is interactive, via a do file, or via a program is up to
you.
>>
>> If you want to be absolutely sure that certain collaborators, and
only
>> those collaborators, see that code, then you need to send it
encrypted.
>> That would apply to a do file or a program, and does not _itself_
rule
>> out do files.
>>
>> Second, saving macros in the data file runs into the same issues. You
>> would need to encrypt that too, as any Stata user with the same
version
>> could in principle read your data file too.
>>
>> In short, wanting absolute security seems to me orthogonal to all
other
>> details here.
>>
>> For myself, I always remember what Howard Aiken said. Don't worry
about
>> people stealing your ideas; if they're any good, you will have to ram
>> them down their throats.
>>
>> Nick
>> [email protected]
>>
>> P.S. If you are developing proprietary code, why do you expect free
>> help? Shouldn't you offer to pay us?
>>
>> Ashim Kapoor
>>
>> Well in my opinion the do file won't do. Simply because the 1st half
>> of my code is proprietary, I dont wnat any1 to see it. I do wnat them
>> to USE the local macros / dataset at the end of the 1st half. Maybe I
>> am more clear now.
>>
>> On Wed, Jan 7, 2009 at 10:26 PM, Nick Cox <[email protected]>
wrote:
>>
>>> A matrix could not be used for macros with string content.
(Strictly,
>>> all macros are strings, but clearly some have numeric content.)
>>>
>>> Nick
>>> [email protected]
>>>
>>> Philipp Rehm
>>>
>>> I think that's what do-files are for.
>>>
>>> Nevertheless: how about building up a matrix which contains the
local
>>> macros you encounter, which you then save into a variable? You could
>>> then recover the local macros with -levelsof-, for example.
>>>
>>> But I guess a do-file is the more straightforward approach...
>>>
>>>
>>> Ashim Kapoor wrote:
>>>> I somehow feel that you can save local macros in a way other than
>>>> using -notes- can you ??
*
* 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/