带你读《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。

相关文章
|
3月前
|
机器学习/深度学习 数据挖掘 BI
推荐一款 Python 数据分析报告开发与分享神器
推荐一款 Python 数据分析报告开发与分享神器
|
3月前
|
机器学习/深度学习 数据采集 人工智能
Python可以应用于多个领域,如Web开发、数据分析、机器学习等
Python可以应用于多个领域,如Web开发、数据分析、机器学习等
|
7月前
|
数据挖掘
怎么理解数据分析、维度和指标?
怎么理解数据分析、维度和指标?
|
8月前
|
SQL 运维 Prometheus
32-一条SQL引发的系统卡死(上)-数据分析
今天给大家分享一个真实的案例,这是我之前一个朋友公司的项目在开发完毕后上线发现整个项目在线上的体验非常不好,有明显的频繁卡顿,后来经过一连串的排查、定位、分析和优化才发现原来是一条SQL引发的问题,而且该SQL语句是一位刚入职不久的工程师所写。 通过这次事故的教训也让这个团队在后续的开发中更加注重了JVM参数的设置以及GC的监控。
107 0
|
8月前
|
SQL 数据采集 数据可视化
数据开发模块中的SQL和数据分析模块中的SQL查询
数据开发模块中的SQL和数据分析模块中的SQL查询
145 1
|
8月前
|
机器学习/深度学习 人工智能 算法
Python编程入门基础及高级技能、Web开发、数据分析和机器学习与人工智能
Python编程入门基础及高级技能、Web开发、数据分析和机器学习与人工智能
123 0
|
10月前
|
机器学习/深度学习 人工智能 分布式计算
在多元宇宙中,SAS探索下一代数据分析的生产力
在多元宇宙中,SAS探索下一代数据分析的生产力
|
11月前
|
SQL 存储 数据挖掘
ChatGPT 数据仓库实战:Kaggle 酒店入住数据分析与维度建模
ChatGPT 数据仓库实战:Kaggle 酒店入住数据分析与维度建模
|
11月前
|
数据可视化 算法 数据挖掘
网络结构数据分析:揭示复杂系统背后的规律
随着网络技术的不断发展,人们在互联网上留下了海量的数据,这些数据反映了人类社会、经济、生态等各个领域的复杂系统。而这些复杂系统背后的规律往往难以被直接观察到,需要借助网络结构数据分析的方法来揭示。本文将介绍网络结构数据分析的概念、方法和应用,以及未来发展方向
139 0
|
11月前
|
数据挖掘 索引 Python
python开发:空气质量历史数据分析(四)
python开发:空气质量历史数据分析(四)
python开发:空气质量历史数据分析(四)