2

我有一个do文件,我想从中选择几行代码,然后使用Execute (do)按钮运行它们。问题是这个do文件中定义了一堆本地宏。我可以运行它们,但是在 Stata 命令提示符下,无法访问本地宏。因此,我认为我应该只使用全局宏。

我已经查看了几个地方,但无法找出范围宏变量实际具有的内容。我意识到本地宏仅在do最初创建它们的实例(例如文件)中定义。

但是对于全局宏,它们是否会永久存储,并且每次我打开一个新的 Stata 实例时,我仍然会拥有以前会话中的全局宏吗?

还是每次我退出Stata(或其他)时它们都会被删除?

4

1 回答 1

3

全球意味着随处可见,但并非始终可见。

您创建的全局宏会在会话结束时消失。

当您开始会话时,或者实际上在任何时候,macro list显示在您当前区域设置中可见的全局和本地宏。这里“locale”不是Stata文档中使用的词,而是一个nonce造词,表示当前交互会话、当前程序、do-file编辑器的当前内容或其选择,即当前运行的代码。不同之处在于本地宏仅在定义它们的语言环境中可见。全局宏在任何语言环境中都可见。

一些全局宏似乎是动态创建的;因此,如果我希望显示当前日期或时间,我可以

 di "$S_DATE"
 di "$S_TIME"

Stata 将访问操作系统以获取此类详细信息。

但回答您的问题的最简单方法是进行实验。定义一些全局的,例如

 global whoami "bill999"
 di "$whoami" 

然后注销并开始一个新会话,看看它是否被Stata保存。或者,save当前数据集和use新会话中的相同数据集,并查看全局变量是否在旅程中幸存下来。

另请参阅help notes

于 2014-10-28T19:33:02.390 回答