我正在使用Sublime文本编辑器来完成我在SAS中编写的大部分代码。唯一真正的问题是我必须以批处理模式运行该文件,并且不能轻易地运行单个代码。在大多数情况下,这并不会让我感到烦恼,但偶尔也可以在同一个文件上同时打开SAS和Sublime。如果我在SAS中更改某些内容并保存它,则sublime会自动刷新文件并进行更改。不幸的是,SAS没有回报。我一直在使用autoexec.sas文件和显示管理器,但我遇到了问题。这段代码将关闭文件并再次打开它。
dm editor 'winclose' editor; dm editor 'inc "%sysget(SAS_EXECFILEPATH)"' editor;
然后我试着把它放在一个宏
中%macro Refresh;
dm editor 'winclose' editor;
dm 'inc "%sysget(SAS_EXECFILEPATH)"';
%mend;
并添加键定义
dm "keydef F12 '%NRSTR(%Refresh);";
当我点击F12时,我得到了
ERROR: Two or more Commands Start with 'dm'. Please reenter.
任何人对如何解决这个问题都有任何想法?
答案 0 :(得分:1)
我无法在我的机器上正常工作(inc“... SAS_EXECFILEPATH ...”不起作用)但你绝对可以删除DM语句。键是聪明的,它会计算出你所处的环境;例如,在KEYS中,在F12中输入:
F12: winclose editor;
并关闭编辑器窗口。大概你可以用
F12: winclose editor; inc "something that works";
在没有所有DM的情况下,这将正常工作;或
F12: %refresh;
也应该有用。
答案 1 :(得分:0)
也许这可能会更清洁,但它确实有效。分为两部分:
1 - 编译下面的代码
2 - 在需要刷新的程序中运行以下行:%refresh();
, (以获取SAS_EXEC_FILEPATH)。然后可以删除该行。
%macro Refresh(param=0);
%global file;
%if ¶m. =0 %then %do;
%let file=%sysget(SAS_EXECFILEPATH);
%put file (&file) saved successfully.;
%end;
%else %do;
%put file being loaded =&file;
wpgm;clear;wpgm; inc "&file";
%end;
%mend;
dm "keydef F12 '%NRSTR(%Refresh(param=1));'";
/*
1 - compile this macro
2 - run this code IN THE PROGRAM THAT NEEDS TO BE REFRESHED
%refresh()
3 - press F12 to refresh, whether program is open or closed..
*/