SAS:使用热键执行SAS代码

时间:2017-03-16 17:50:29

标签: macros sas hotkeys shortcuts

我想通过SAS 9.4 for Windows中的增强编辑器中的键盘快捷键执行独立于我当前程序的代码。我已经实现了这一目标,但只能有效地执行宏语句。但是,我希望能够执行非宏语句。我该怎么做?

这是我到目前为止所知道的。

常规设置

通过输入" KEYS"进入KEYS菜单进入命令提示符或提交

dm 'keys';

对于其中一个键,请输入定义

%put Hello, world!;

Ctrl+s保存新的密钥绑定。出于解释的目的,我将其绑定到F7。保存后,按F7和" Hello,world!"将打印到日志中。

我们可以通过将上面的代码放在宏中来进一步扩展这个概念。

%macro HelloWorld();
  %put Hello, world!;
%mend;

编译%HelloWorld宏。如果我们然后将%HelloWorld();绑定到F7,我们就可以证明可以使用快捷方式调用宏。

通过AUTOCALL

我们可以采取进一步措施并将%HelloWorld宏保存为程序HelloWorld.sas。如果我们将其放在AUTOCALL库中(运行%put %sysfunc(pathname(sasautos));以查找计算机上的位置),我们可以在任何新的SAS会话中执行它。

然而,似乎只有宏语句才能使用此方法。为了证明这一点,假设我们将%HelloWorld定义为

%macro HelloWorld();
  data _null_;
    put 'Hello, world!';
  run;
%mend;

再次,将其保存为HelloWorld.sas并将其放在AUTOCALL目录中。对我来说,当我尝试执行此操作时,我收到以下错误:

ERROR: The SAS/EIS product with which the procedure is associated is either not licensed for
       your system or the product license has expired. Please contact your SAS installation
       representative.

通过%INCLUDE

由于AUTOCALL需要编译和调用宏,我认为%INCLUDE可能直接执行代码。

创建一个名为HelloWorld.sas的文件,其中包含%put Hello, world!。将其保存到短文件路径。然后,在KEYS菜单中将F7绑定到%include "C:\Short Path\HelloWorld.sas";。现在F7将打印" Hello,world!"到日志。

如果我们改为保存

data _null_;
  put 'Hello, world!';
run;

HelloWorld.sas并尝试使用我们的%INCLUDE快捷方式运行它,我收到同样的错误:

ERROR: The SAS/EIS product with which the procedure is associated is either not licensed for
       your system or the product license has expired. Please contact your SAS installation
       representative.

混杂。尝试

我还尝试将代码直接输入到KEYS定义中,但同样,它似乎只适用于宏语句。

有可能使用%SYSFUNC,但我的最终目标是能够使用PROC SQL或数据步骤,我不认为%SYSFUNC可以做到这一点。

2 个答案:

答案 0 :(得分:3)

您可以使用submit命令,即将键定义为:

submit "data _null_ ; put 'Hello World!'; run;"

也适用于宏调用:

submit "%HelloWorld()"

答案 1 :(得分:2)

建立@ Quentin的答案,如果您的datastep很大,您可以编写datastep并将其保存为编译程序:

KEYS<DMKEYS>

然后在@Quentin建议的情况下,转到submit "data pgm = work.saved_program; describe; execute; run;"窗口并输入:

{{1}}

这将提交保存在您选择的任何库中的整个datastep。