sas - 在最初打开 SAS 时定义宏

标签 sas sas-macro

我遇到了一个非常好的宏,我想用作热键:

%macro closevts / cmd; 
  %local i; 
  %do i=1 %to 20;
    next "viewtable:"; end; 
  %end; 
%mend;

dm "keydef F12 '%NRSTR(%closevts);"; /*Sets F12 to close all view tables at once*/

(来源:https://stackoverflow.com/a/3254004/110797)

问题是我每次启动 SAS 时都必须重新运行宏声明!上面的代码并没有永久设置键绑定(bind),但我想出了那部分(只需进入键(F9)并手动将 F12 设置为 %closevts,然后在关闭键窗口时将其保存为永久键)。 如何永久设置宏定义?

我看过使用 sas 配置文件,但我一直无法弄清楚。另外,我的系统相当锁定,所以如果某些解决方案不起作用,我们会感谢您提供多种解决方案。

最佳答案

默认情况下,SAS 宏被编译并存储到您的 WORK 库中,这就是它们在您的 session 结束时“消失”的原因。您可以使用宏语句 store 选项来编译和创建宏的永久副本。宏将存储到 SASMSTORE 系统选项定义的任何库中名为 sasmacr 的 SAS 目录中。要在以后的程序中使用存储的宏,您还需要使用 MSTORED 系统选项。

在您的情况下,由于您希望将其设为 SAS session 的“默认”,因此您可以使用 SASUSER 库,但它可以是分配的任何库。在创建已编译的宏时,请确保您对库具有写入权限。

因此,在您的情况下,使用此程序来编译和存储您的宏:

options mstored sasmstore=sasuser;

%macro closevts / cmd store; 
  %local i; 
  %do i=1 %to 20;
    next "viewtable:"; end; 
  %end; 
%mend;

运行上面的命令后,查看您的 SASUSER 库,您将看到目录和宏条目。然后将此语句添加到您的 autoexec.sas 程序中,以便它在您每次启动 SAS session 时执行:

options mstored sasmstore=sasuser;

关于sas - 在最初打开 SAS 时定义宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16408509/

相关文章:

sas - 如何在 proc iml 内有条件地定义宏变量?

SAS - 在宏条件之前分配库

SAS Proc Gchart 堆积面积图

linux - 可以用SAS执行Linux命令吗?

sas - 宏返回值

sas - 在 SAS 宏中更改宏变量的值

sas - 从数据变量生成宏变量的宏函数

SAS - 以编程方式识别表示日期/时间/日期时间的数字变量

python - 列出并下载具有 blob 级别 SAS token 的 blob 中的文件夹中的文件