2008-09-20 22 views
9

作为基础SAS程序员,您知道演练:打破BASE SAS中不平衡报价条件的最佳方法是什么?

您提交了包含不平衡报价的SAS代码,现在您不仅有不公开的报价,还有未封闭的评论,宏功能定义,并失踪;或退出;声明。

没有那些不平衡的引号打扰你,你最好的诀窍是什么?

+0

%str(%“)派上用场 – 2009-04-29 21:24:47

回答

3

企业指南3用来放下面一行在其自动生成的代码顶部:

*';*";*/;run; 

然而,真正从各种东西不平衡的问题“复位”的唯一方式是退出sas会话,并在重新提交代码前平衡任何不平衡的情况。使用这种快速(廉价?)黑客并没有解决根本原因。

顺便说一下,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. 
*/ 
6

至于我自己,我平时Google for "SAS unbalanced quote",并与提交类似this结束:

*); */; /*’*/ /*”*/; %mend; 

...打出来的结束的注释,报价和微距功能。

-1

是的,我相信官方的SAS文档推荐您为自己提出的解决方案。

+0

我相信已经看到一些包含”run“和/或”quit;“的单行解决方案,所以我想知道我的例子是否完整。 – 2008-09-22 18:41:19

0

您可以随时发出终止提交的语句命令并重新提交您尝试运行的内容。

+0

How do你意思是?这是命令行代码? – 2009-04-29 21:25:56

5

这是我使用的一个。

;*';*";*/;quit;run; 
ODS _ALL_ CLOSE; 
QUIT; RUN; 
+0

我将此用作SAS中的注释 - 如果我遇到不平衡的报价问题,则输入`fix`返回此代码以快速解决问题 – Bendy 2015-05-21 12:13:52

0

只是想重申AFHood的建议,使用ODS _ALL_ CLOSE;声明。这是包括的关键之一。无论如何,每次完成ODS时都要确保使用它。

1

我曾与不平衡报价的情况在宏唯一的解决办法是关闭SAS的实例,并重新开始。

我觉得这是SAS中不可接受的缺陷。

但是,我用BOTH#2和#5的方法,它工作。 #2第一,然后#1。我把它们放在所有代码之上,包括我的代码头文件,解释了这个程序在做什么。

工作就像一个魅力。

0

关闭SAS会议在我的情况下工作。我想你可以尝试一下,然后再尝试这里提到的其他方法。

相关问题