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

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

带你读《SAS数据分析开发之道 软件质量的维度》第三章通信交流3.4用户生成的返回码(二)

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

带外信号

带外返回码比带内返回码更常见、更有用,因为以下两种情况界限分明   :一个值是有效数据和性能元数据可反映出一个错误或故障。另外,由于该返回码依然表示一个通用宏变量,该变量必须初始化和重置,因此,空白返回码表明某个过程未遇到任何警告或“运行时错误”。带外信号唯一的缺点可能是必须创建附加的宏变量以传递 该返回码。

带内信号”部分所举的带内返回码案例稍作修改即可展示带外信号。在本例中,&VARS     现在仅代表数据集中变量的数量,不再传达性能故障。因此,如果出现异常情况,&VARS依然是丢失的(而不是设置为FAILURE)。

%macrotest;

%globalvars;

%letvars=;

%globaltestrc;

%lettestrc=GENERALFAILURE;

%letdsid=%sysfunc(open(perm.final,i));

%if%sysfunc(sysrc())=0%then%do;

%letvars=%sysfunc(attrn(&dsid,nvars));

%letclose=%sysfunc(close(&dsid));

%lettestrc=;

%end;

%else%lettestrc=FAILURE;

%mend;

 

%test;

%putVARS:&vars;

%putTESTRC:&testrc;

 

带外返回码的另一个优点是当空的宏变量用于表示正常运行时,%LENGTH   宏函数将用于评估是否出现了异常情况,因为返回码的长度在正常运行情况下是“0”。

以下修改显示的是 %RUNTEST宏,它是调用子 %TEST宏的父进程。如果 %TEST是成功的,%RUNTEST会在 PERM.Final 中打印变量的数量 ;如果不成功,%TEST将在日志中打印一个错误。当然,在实际的生产软件中,异常情况处理框架不会在日志中打印信息,而是动态地改变以下程序流。

%macroruntest;

%test;

%if%length(&testrc)=0%then%putVARS:&vars;

%else%putAnexceptioncausedafailure;


%mend;

 

%runtest;

 

创建带外返回码的逻辑必须确保返回码与其所代表进程的宏变量同步。例如,在    上述代码中,&TESTRC表示 %TEST宏函数的性能,而 &TESTRC能生成 &VARS。因此,它应该与 &VARS完美同步。如果 &VARS包含一个值,&TESTRC就应该是丢失的 ;如果&VARS是丢失的,&TESTRC就应该设置为 FAILURE 或 GENERALFAILURE。

在上述%TEST宏中,如果 ATTRN函数出现异常情况或错误,那么将不会设置 &VARS,因此,它会是空白的。&TESTRC也会是空白的,因为异常情况处理仅测试 OPEN函数的故障而非 ATTRN 的故障。尽管这一故障不可能发生,但这种逻辑错误可能会造成故障,两个宏变量都是空白的。为了解决这一漏洞,可以测试ATTRN函数是否成功,或者测试 &VARS的值以验证它被有效赋值。第 6章进一步讲述返回码的成功运用。

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

相关文章
SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础
SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础 1. SAS系统简介 1.1 SAS是先编译后执行的语言,data步标志着编译的开始。 数据指针:当前内存缓存区,输入数据所在位置。 PDV:Program Data Vector,在DATA步中所有涉及的变量被编程当前向量的一部分。 2. SAS编程基础 2.1 SAS逻
1488 0
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模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载