【发布时间】:2017-08-23 19:57:47
【问题描述】:
我厌倦了手动导航到当前工作文件夹,并想在 SAS 中创建一个热键来让我到达那里。我设计了一个命令来从 SAS 中打开当前文件夹。但是,我无法通过热键执行它。
我已创建 (stolen) 宏:
%macro GetPwd();
%qsubstr(
%sysget(SAS_EXECFILEPATH)
, 1
, %length(%sysget(SAS_EXECFILEPATH))-%length(%sysget(SAS_EXECFILENAME))
)
%mend;
我已将上述内容保存为 GetPwd.sas 在我的自动调用库中。
在交互模式下,我可以使用以下命令打开 Windows 资源管理器到当前 SAS 工作文件夹:
/*The Call:*/
%sysexec(start explorer.exe "%GetPwd()" && exit);
当我将上述调用放在KEYS 菜单中时,问题就出现了。
当我通过热键 (SHF F9) 发出呼叫时,Windows 资源管理器打开到“计算机”,我在 SAS 中收到以下错误:
WARNING: Argument 2 to macro function %QSUBSTR is out of range.
WARNING: Argument 3 to macro function %QSUBSTR is out of range.
为什么从热键发出调用时会出现此错误,而通过编辑器提交时不会出现此错误?
我已经成功完成了使用以下方法打开 SAS 临时文件夹位置的类似任务:
%sysexec(start explorer.exe "%sysfunc(pathname(work))" && exit);
请参阅上面KEYS 菜单图像中的F9。
【问题讨论】:
-
我现在无权访问 SAS,因此无法对其进行测试,但我会尝试将
%sysexec调用直接放在宏例程中并将其分配给快捷方式,c.g.submit '%OpenPwd;'
标签: sas