我遇到了一个非常好的宏,我想用作热键:
%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/