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

简介: 带你读《SAS数据分析开发之道 软件质量的维度》第三章通信交流3.2系统数字返回码

&SYSRC

&SYSRC自动宏变量能够记录与OS 运行环境直接进行互动的程序指令的状态,如X、SYSEXEC、SYSTASKWAITFOR。尽管本书中未详细介绍, 但 &SYSRC在这些程序指令成功完成之后会显示一个0值。由于&SYSRC在后续XSYSEXECSYSTASK 或类似程序指令运行之前不能进行重置,而且该宏变量是可读写的,因此,在评估之前需要手动重置该变量的值,这一点与 &SYSCC的初始化类似。

以下内容说明的是Windows运行环境中 X 程序指令获得初步成功,该指令的目是将当前文件夹的内容输入到文本文件Dir.txt,随后是一个因DOS命令DIR错误拼写为“DIRT”而造成的故障:

%letsysrc=0;

%letsyscc=0;data_null_;

x"dir>dir.txt";run;

 

NOTE:DATAstatementused(Totalprocesstime):realtime   1.66seconds

cputime               0.07seconds


%putSYSRC:&sysrc;SYSRC:0

%putSYSCC:&syscc;

SYSCC:0

data_null_;

x"dirt>dir.txt"

!;

run;

 

NOTE:DATAstatementused(Totalprocesstime):realtime   0.77seconds

cputime               0.07seconds

 

%putSYSRC:&sysrc;SYSRC:9009

%putSYSCC:&syscc;

SYSCC:0

 

&SYSCC返回码不受 &SYSRC值的影响,因此,必须通过评估 &SYSRC处理这些程序指令中的异常情况。&SYSRC宏变量在第 12 章“自动化”的“批量异常情况处理”部分讲述,它用于异常情况处理框架中显示 SYSTASK 程序指令的顺利运行。

 

SYSRC()

不要将SYSRC() 函数与&SYSRC自动宏变量混淆,它返回的是最近运行的输入/输出I/O函数的完成状态。由于 I/O函数通常是在%SYSFUNC宏函数中执行的,因此SYSRC() 值可被保存为一个宏变量,并且可用于驱动异常情况处理的程序流。

以下代码及输出信息显示的是 Final数据集中变量的数量 :

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

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

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

 

%putVARS:&vars;VARS:1


然而,由于 OPEN函数需要 PERM.Final 数据集的共享锁定,因此,如果某个独立的用户或 SAS 会话独自锁定该数据集,该代码便会出现故障 :

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

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

WARNING:Argument1tofunctionATTRNreferencedbythe%SYSFUNCor%QSYSFUNCmacrofunctionisoutofrange.

NOTE:Mathematicaloperationscouldnotbeperformedduring%SYSFUNCfunctionexecution.Theresultoftheoperationshavebeensettoamissingvalue.

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

 

%putVARS:&vars;VARS:

OPEN发生故障,&DSID便不会被赋值, 因此,ATTRN函数随后也会发生故障。补救措施是在执行类似 ATTRNCLOSE等后续相关动作之前,使用SYSRC函数测试I/O函数的返回码OPEN相似,由于I/O函数正常运行时返回的是“0,因此,以下代码仅在OPEN顺利运行的前提下执行ATTRN

%macrotest;

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

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

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

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

%end;

%else%letvars=FAILURE;

%putVARS:&vars;

%mend; 

%test;

实现类似程序控制的另一个方法是在OPEN函数之后立即测试&DSID,如果值“0(表示打开该数据集出现故障,则终止该过程。

相关文章
|
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开发:空气质量历史数据分析(四)