带你读《SAS数据分析开发之道 软件质量的维度》第三章通信交流3.3系统字母数字返回码(二)-阿里云开发者社区

开发者社区> 人民邮电出版社> 正文

带你读《SAS数据分析开发之道 软件质量的维度》第三章通信交流3.3系统字母数字返回码(二)

简介: 带你读《SAS数据分析开发之道 软件质量的维度》第三章通信交流3.3系统字母数字返回码
+关注继续查看

&SYSERRORTEXT

&SYSERRORTEXT   自动宏变量是特殊的,对它进行介绍的唯一理由是尽量避免使用它。它包括当前 SAS会话中生成的或打印到 SAS日志中的最近一次错误信息的文本。一个错误信息并不表示出现了真正的“运行时错误”。例如,用 %PUT程序指令打印ERROR:FAKE”将导致&SYSERRORTEXT改变为FAKE,如以下输出信息所示。

%putBEFORE:&syserrortextLENGTH:%length(&syserrortext);BEFORE:            LENGTH:0

%putERROR:FAKE;ERROR:FAKE

%putAFTER:&syserrortextLENGTH:%length(&syserrortext);

AFTER:FAKE    LENGTH:4

 

下面的输出信息显示的是实际产生的“运行时错误,该错误是因为LENGTH程序指令中增加的美元符号造成了语法错误。由于  &SYSERRORTEXT    宏变量是只读的,而且仅在新的错误出现时重置,因此,它无法手动重置为丢失的。

%putBEFORE:&syserrortextLENGTH:%length(&syserrortext);

BEFORE:     LENGTH:0

datafinal;

lengthchar$$10;

-391

76

ERROR391-185:Expectingavariablelengthspecification.ERROR76-322:Syntaxerror,statementwillbeignored.run;

 

NOTE:TheSASSystemstoppedprocessingthisstepbecauseoferrors.WARNING:ThedatasetWORK.FINALmaybeincomplete.Whenthisstepwasstoppedtherewere0observationsand0variables.

NOTE:DATAstatementused(Totalprocesstime):realtime                       0.08seconds

cputime               0.06seconds

 

%putAFTER:&syserrortext     LENGTH:%length(&syserrortext);

AFTER:76-322:Syntaxerror,statementwillbeignored.      LENGTH:48

 

&SYSERRORTEXT的另一个警告是它仅能捕获最后的“运行时错误某些缺点会产生多个连续的“运行时错误。在本例中,增加的美元符号会造成两个连续的错误391-18576-322,因此,若在DATA步骤之后立即评估 &SYSERRORTEXT,则只有第二个错误“语法错误,忽略程序指令将会—被保留  下来。这非常令人遗憾,因为第一个错误程序指令相对更加有信息性希望获得一个变量长度规格

另外,&SYSERRORTEXT还能隐藏 &SYSWARNINGTEXT的使用。如前面“&SYSWARNINGTEXT”部分所述。&SYSWARNINGTEXT     应该仅在两种情况下被评估 :在程序启动之前&SYSCC重置以及在程序完成之后 &SYSCC=4时。在本例中,由于除了警告之外,还出现了错误,&SYSCC    被赋予了较高的错误值,而非警告值“4”;从编程方式来看,没有办法确定&SYSWARNINGTEXT的值是当前的、相关的,因为 &SYSCC设置为一个错误代码,而不是一个警告代码。

与 &SYSWARNINGTEXT类似,&SYSERRORTEXT的值会保留在整个SAS会话中,因此,不相关的 &SYSERRORTEXT 值将会影响后续不相关的程序。例如,执行完上述代码之后,一个独立的程序会执行 DATA步骤,并在不出现任何“运行时错误”的情况下成功创建FINAL2数据集,&SYSERR和&SYSCC的值均为“0”便显示出该程序未出现任何错误。然而,原始程序中   &SYSERRORTEXT    的值会保留在输出信息中,因为这个只读的宏变量无法重置。

%letsyscc=0;

datafinal2;

lengthnum8;run;

 

NOTE:ThedatasetWORK.FINAL2has1observationsand1variables.NOTE:DATAstatementused(Totalprocesstime):

realtime             0.03seconds

cputime               0.03seconds

 

%putSYSERR:&syserr;SYSERR:0

%putSYSCC:&syscc;SYSCC:0

%putSYSWARNINGTEXT:&syswarningtext;

SYSWARNINGTEXT:DatasetWORK.FINALwasnotreplacedbecause


thisstepwasstopped.

%putSYSERRORTEXT:&syserrortext;

SYSERRORTEXT:76-322:Syntaxerror,statementwillbeignored.

 

为了克服最后一个缺点并确保&SYSERRORTEXT仅在恰当的时候被评估,代码应该仅在两种情况下引用 &SYSERRORTEXT:&SYSCC>4以及在程序启动之前 &SYSCC立即重置。由于存在前述介绍的许多缺点且作用有限,不推荐使用&SYSERRORTEXT。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SAS进阶《深入分析SAS》之数据汇总和展现
SAS进阶《深入分析SAS》之数据汇总和展现 1. 通过Print过程制作报表 proc print <data=数据集>; run; 选项: obs=修改观测序号列标签 noobs不显示观测序列号 id语句在输出中取代观测序列 var选择输出的变量 where语句选择输出的观测 总结如下: proc print data=数据集<选项&g
1165 0
SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理
SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 KEEP 规定在数据集中保留的变量 DROP 规定在数据集中删除的变量 ARRAY 定义一个数组 RENAME
1389 0
SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制
SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和END之间的语句 DO WHILE 重复执行直到条件为假则退出循环 DO UNTIL 重复执行直到条件为真则退出循环 DO OVER 对隐含下标
1240 0
SAS进阶《深入解析SAS》之Base SAS基础、读取外部数据到SAS数据集
SAS进阶《深入解析SAS》之Base SAS基础、读取外部数据到SAS数据集 前言:在学习完《SAS编程与商业案例》后,虽然能够接手公司的基本工作,但是为了更深入的SAS学习,也为了站在更高的一个层次上去掌握和优化公司工作,故而又咬紧牙关加紧学习《深入解析SAS》.就目前的两本书的对比,显而易见的是本书比《SAS编程…》要厚的多,再者内容更新是2015年著,最后是内容详实
1749 0
SAS进阶《深入解析SAS》之SAS数据挖掘的一般流程
SAS进阶《深入解析SAS》之SAS数据挖掘的一般流程 1. 所谓数据挖掘,是指通过对大量的数据进行选择、探索与建模,来揭示包含在数据中以前不为人所知的模式或规律,从而为商业活动或科学研究提供帮助和服务。 2. 数据挖掘重要的两个类别:有监督分析(SupervisedAnalysis),无监督分析(UnsupervisedAnalysis)。 有监督分析属于目标
1072 0
472
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载