作为一名基础的SAS程序员,你应该知道:
在提交SAS代码时,如果存在引号不匹配的情况,将会导致未关闭的引号、注释、宏函数定义以及缺失的run或quit语句。
你有什么最好的技巧来避免这些引号不匹配的问题困扰你呢?
;*';*";*/;quit;run;
ODS _ALL_ CLOSE;
QUIT; RUN;
*';*";*/;run;
ods _all_ close;
关闭了所有ods目标,包括默认的结果目标。在交互式会话中,您应该按照文档再次打开它,使用ods results;
或ods results on;
。但是当我在我的9.2上测试时,它没有起作用,如下所示:%put sysvlong=&sysvlong sysscpl=&sysscpl;
/* sysvlong=9.02.01M0P020508 sysscpl=X64_VSPRO */
ods _all_ close;
proc print data=sashelp.class;
run;
/* on log
WARNING: No output destinations active.
*/
ods results on;
proc print data=sashelp.class;
run;
/* on log
WARNING: No output destinations active.
*/
我选择Perl是因为它具有强大的模式匹配能力,但任何其他模式匹配语言都可以很好地工作。希望这可以帮到你。
我遇到了一个宏中引号不平衡的情况,唯一的解决方法是关闭SAS实例并重新开始。
我认为这是SAS中不可接受的缺陷。
然而,我使用了#2和#5两种方法,它们都起作用了。先使用#2,然后使用#1。我将它们放在所有代码之上,包括我的代码头,解释了这个程序正在做什么。
效果非常好。
; *'; *"; */;
ODS _ALL_ CLOSE;
quit; run; %MEND;
data _NULL_; putlog "DONE"; run;
您可以随时发出终止已提交语句的命令并重新提交要运行的内容。
只是想重申AFHood的建议,使用ODS _ALL_ CLOSE;
语句。这是一个关键的语句需要包含。并且确保每次完成ODS操作后都要使用它。
是的,我相信官方的SAS文档也推荐了你提出的解决方案。
fix
就会返回这段代码以快速解决问题。 - Bendy