Variables 何时删除全局宏?

Variables 何时删除全局宏?,variables,global,stata,local,stata-macros,Variables,Global,Stata,Local,Stata Macros,我有一个do文件,我想从中选择几行代码,然后使用Execute(do)按钮运行它们。问题是在这个do文件中定义了大量本地宏。我可以运行它们,但在Stata命令提示符下,无法访问本地宏。因此,我认为我应该使用全局宏 我看了好几个地方,没有找到宏变量的实际作用域。我意识到本地宏只在它们最初创建的实例(例如,do文件)中定义 但是对于全局宏,它们是永久存储的吗?每次我打开一个新的Stata实例时,我仍然会保留以前会话中的全局宏 还是每次我离开Stata(或其他什么)时,它们都会被删除?全局意味着随处可

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

我看了好几个地方,没有找到宏变量的实际作用域。我意识到本地宏只在它们最初创建的实例(例如,
do
文件)中定义

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


还是每次我离开Stata(或其他什么)时,它们都会被删除?

全局意味着随处可见,但并非所有时间都可见

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

启动会话时,或者在任何时候,
宏列表
显示当前区域设置中可见的全局宏和本地宏。在这里,“locale”不是Stata文档中使用的一个词,而是一个表示当前交互会话、当前程序、do文件编辑器的当前内容或其中的一个选择(即当前运行的代码)的临时货币。不同之处在于,本地宏仅在定义它们的区域内可见;全局宏在任何语言环境中都可见

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

 di "$S_DATE"
 di "$S_TIME"
Stata将访问操作系统获取这些详细信息

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

 global whoami "bill999"
 di "$whoami" 
然后注销并启动一个新会话,查看Stata是否保存了该会话。或者,
保存
当前数据集,并在新会话中使用相同的数据集,然后查看全局数据集是否在旅程中幸存

另请参见
帮助说明