Sas 用户可以定义自动宏变量吗?

Sas 用户可以定义自动宏变量吗?,sas,sas-macro,Sas,Sas Macro,我有两个不同的SAS平台,我在每个平台上运行一个宏来创建报告 我用 %包括“&MACRO\u路径” 我想要的是创建一个包含文件位置的自动变量“MACRO_PATH”。因此,在启动SAS会话时,不需要在该宏路径变量中定义文件位置 我知道一种方法是我可以在包含代码行的位置创建自动可执行文件,但我只是想知道是否可以创建自动宏变量。 一、 另外,要知道自动宏变量是由宏处理器创建的变量 但是有什么解决办法吗?如果您只有两台主机,并且您知道它们是哪一台,那么您可能可以使用SYSSCP或SYSHOSTNAME

我有两个不同的SAS平台,我在每个平台上运行一个宏来创建报告

我用

%包括“&MACRO\u路径”

我想要的是创建一个包含文件位置的自动变量“MACRO_PATH”。因此,在启动SAS会话时,不需要在该宏路径变量中定义文件位置

我知道一种方法是我可以在包含代码行的位置创建自动可执行文件,但我只是想知道是否可以创建自动宏变量。 一、 另外,要知道自动宏变量是由宏处理器创建的变量


但是有什么解决办法吗?

如果您只有两台主机,并且您知道它们是哪一台,那么您可能可以使用SYSSCP或SYSHOSTNAME。例如,如果一台是Windows主机,另一台是unix主机,则可以执行此操作

%let macro_path=%sysfunc(ifc(&sysscp=WIN,c:\mymacros,~/mymacros));

如果您只有两台主机,并且知道它们是哪台主机,那么您可能可以使用SYSSCP或SYSHOSTNAME。例如,如果一台是Windows主机,另一台是unix主机,则可以执行此操作

%let macro_path=%sysfunc(ifc(&sysscp=WIN,c:\mymacros,~/mymacros));

如果您使用的是Enterprise Guide,则可以通过使用Autoexec流程流在项目级别执行此操作。将一个流程命名为“Autoexec”,并选择在打开项目时自动运行该流程的选项

对于我拥有(比如)开发、测试和产品环境的项目,我通常会将未在版本控制中同步的链接文件存储在项目目录中(您需要在“文件引用”下的项目属性中启用相对文件路径)。包含特定于环境的宏变量的值


然后,该快捷方式存储在autoexec进程流中。项目本身处于版本控制中,因此当我将我的开发更改与test或prod同步时,它具有正确的本地引用。

如果您使用的是Enterprise Guide,则可以使用Autoexec流程在项目级别执行此操作。将一个流程命名为“Autoexec”,并选择在打开项目时自动运行该流程的选项

对于我拥有(比如)开发、测试和产品环境的项目,我通常会将未在版本控制中同步的链接文件存储在项目目录中(您需要在“文件引用”下的项目属性中启用相对文件路径)。包含特定于环境的宏变量的值


然后,该快捷方式存储在autoexec进程流中。项目本身处于版本控制中,因此,当我将我的开发更改与test或prod同步时,它具有正确的本地引用。

我不确定我是否理解您所说的“自动宏变量”的含义-您似乎知道autoexec选项。你能详细说明一下吗?你是如何运行SAS的?这是DM SAS(“桌面”SAS)还是通过企业指南、SAS Studio或文本编辑器或其他方式?@Joe我正在使用SAS企业指南。@Therkel自动宏变量由SAS创建,如SYSDATE、SYSTIME等。Autoexec文件,这意味着当我启动SAS会话时,此文件将自动执行。我不确定我是否理解您所说的“自动宏变量”的含义-您似乎知道autoexec选项。你能详细说明一下吗?你是如何运行SAS的?这是DM SAS(“桌面”SAS)还是通过企业指南、SAS Studio或文本编辑器或其他方式?@Joe我正在使用SAS企业指南。@Therkel自动宏变量由SAS创建,如SYSDATE、SYSTIME等。Autoexec文件,这意味着当我启动SAS会话时,该文件将自动执行。建议不错。我还认为应该将其放在autoexec.sas文件中。这样,如果主机名发生更改,您就不需要更新500个不同的SAS文件,所有这些文件都包含该行代码。很好,我不知道ifc函数。我认为这是一个建议,可能对许多SAS程序员都适用,但对于良好的现代开发实践来说,这是一个太多的难题。多做一点工作比隐藏硬编码路径要好,尤其是在autoexec.sas程序中。好建议。我还认为应该将其放在autoexec.sas文件中。这样,如果主机名发生更改,您就不需要更新500个不同的SAS文件,所有这些文件都包含该行代码。很好,我不知道ifc函数。我认为这是一个建议,可能对许多SAS程序员都适用,但对于良好的现代开发实践来说,这是一个太多的难题。多做一点工作比隐藏硬编码路径要好,尤其是在autoexec.sas程序中。