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

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

&SYSLCKRC

自动宏变量 &SYSLCKRC能显示最近 LOCK程序指令的顺利运行,LOCK序指令以往用于显示数据集未被使用,仅能通过某个程序打开。由于   LOCK   程序指令在 BaseSAS软件中的显示缺乏完整性,且通常会生成无效的结果,因此,LOCK程序指令及&SYSLCKRC应该只能用在SAS/SHARE环境中,但仅用于说明遗留的 SAS代码。互斥和信号量部分会介绍一个替代 LOCK功能的方法。

以下内容显示的是 LOCK程序指令的传统用法——获取PERM.Final数据集上的排他文件锁定,从而使其他程序或用户(理论上)无法获取该数据集 :

dataperm.final;

lengthchar$10;run;

 

NOTE:ThedatasetPERM.FINALhas1observationsand1variables.NOTE:DATAstatementused(Totalprocesstime):

realtime             0.01seconds

cputime               0.01seconds

 

lockperm.final;

 

NOTE:PERM.FINAL.DATAisnowlockedforexclusiveaccessbyyou.

 

%macrotest;

%if&SYSLCKRC=0%then%do;

procsortdata=perm.final;

bychar;run;

%end;

lockPERM.finalclear;

%mend;

 

%test;

 

NOTE:Therewere1observationsreadfromthedatasetPERM.FINAL.NOTE:ThedatasetPERM.FINALhas1observationsand1variables.NOTE:PROCEDURESORTused(Totalprocesstime):

realtime             0.14seconds

cputime               0.01seconds

 

NOTE:PERM.FINAL.DATAisnolongerlockedbyyou.

 

在许多情况下,LOCK   程序指令确实能够成功地锁定引用的数据集,阻止其他用户或 SAS会话获取该数据集。然而,在某些情况下,即便数据集被另一个SAS会话独家锁定,但    LOCK    程序指令也会产生一个值为“0”&SYSLCKRC。假设出现不一致的情况,则不推荐使用LOCK 程序指令。

 

&SYSLIBRC

自动宏变量 &SYSLIBRC显示的是最近的 LIBNAME程序指令的成败,如果LIBNAME指派一个有效的文件库,则&SYSLIBRC显示为“0。LIBNAME的一个动态用途是为运行的 SAS程序的逻辑位置指定一个文件库。例如,如果 SAS程序 C:\SAS\temp\test.sasSAS 显示管理系统中运行,那么开发人员可能希望将 SAS文件库CURRENT 指派到 C:\SAS\temp :

*mustbesavedtoanamedSASprogramtoexecute;

%letsyscc=0;

%letpath=%sysget(SAS_EXECFILEPATH);


%letpath=%substr(&path,1,%length(&path)-%length(%scan(&path,-1,\)));

libnamecurrent"&path";

%putSYSLIBRC:&SYSLIBRC;

%putSYSCC:&syscc;

 

以下代码使用的是CURRENT文件库,由于LIBNAME程序指令运行正确,因此,&SYSLIBRC的值设置为“0

libnamecurrent"&path";

NOTE:LibrefCURRENTwassuccessfullyassignedasfollows:Engine:V9

PhysicalName:C:\SAS\temp

%putSYSLIBRC:&SYSLIBRC;SYSLIBRC:0

%putSYSCC:&syscc;

SYSCC:0

 

但是,如果 LIBNAME程序指令错误地引用了&PATCH,而非 &PATH,SAS产生一个警告,因为它无法解析宏变量 &PATCH。宏变量 &SYSCC会检测并显示这警告,警告代码显示为“4。另外,该错误会导致LIBNAME程序指令的运行故障, &SYSLIBRC 的值为负数便反映出程序指令运行故障。

libnamecurrent"&patch";

WARNING:ApparentsymbolicreferencePATCHnotresolved.NOTE:LibraryCURRENTdoesnotexist.

%putSYSLIBRC:&SYSLIBRC;SYSLIBRC:-70008

%putSYSCC:&syscc;

SYSCC:4

 

从编程方式来讲,可以借助几个方法检测这些故障。例如,可以使用 %SYMEXIST评估宏变量 &PATH,以确定它是否丢失,或者使用 %LENGTH评估 &PATH否有一个零字符长度。继LIBNAME程序指令之后,还可以验证 &SYSCC的值以避免在出现警告或“运行错误”时,后续代码继续执行。然而,最可靠的方法是在LIBNAME程序指令之后评估&SYSLIBRC如果值不是“0,则需终止程序或跳过后续需要引用 CURRENT 文件库的程序。

例如,C:\neverland文件目录在以下代码运行时不存在,&SYSLIBRC的值会显示为负数,反映出异常情况。由于这是一个异常情况,而不是出现了“运行时错误因此,&SYSCC依然显示为“0

%letsyscc=0;

libnamecurrent  "c:\neverland";WARNING:LibraryCURRENTdoesnotexist.

NOTE:LibrefCURRENTwassuccessfullyassignedasfollows:Engine:V9

PhysicalName:c:\neverland

%putSYSCC:&syscc;SYSCC:0

%putSYSLIBRC:&syslibrc;

SYSLIBRC:-70008

 

在稳健的设计中,&SYSLIBRC值应在 LIBNAME程序指令之后立即进行评估,其他的异常情况处理应该监测&SYSCC 和整个运行过程中其他相关自动宏变量。

 

相关文章
|
3月前
|
消息中间件 监控 数据可视化
实时看板数据分析的力量:推动高效决策的17个关键维度
实时看板数据分析通过可视化工具将企业运营数据实时整合展示,助力快速决策。它结合数据收集、处理与交互分析,广泛应用于制造、零售、金融等领域,提升响应速度与协作效率。技术上依赖流数据处理与可视化工具,如Power BI、Tableau等,同时关注数据安全与用户体验优化。
186 1
|
12月前
|
数据采集 机器学习/深度学习 数据可视化
构建高效数据分析系统的关键技术
【10月更文挑战第5天】构建高效数据分析系统的关键技术
159 0
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
749 4
|
数据采集 机器学习/深度学习 数据可视化
【优秀python web系统毕设】基于python的全国招聘数据分析可视化系统,包括随机森林算法
本文介绍了一个基于Python的全国招聘数据分析可视化系统,该系统利用数据挖掘技术、随机森林算法和数据可视化技术,从招聘网站抓取数据,进行处理、分析和预测,帮助用户洞察招聘市场,为求职者和企业提供决策支持。
758 2
|
9月前
|
机器学习/深度学习 数据采集 人工智能
设计文档:智能化医疗设备数据分析与预测维护系统
本系统的目标是构建一个基于人工智能的智能化医疗设备的数据分析及预测维护平台,实现对医疗设备运行数据的实时监控、高效处理和分析,提前发现潜在问题并进行预防性维修,从而降低故障率,提升医疗服务质量。
|
10月前
|
运维 监控 安全
公司监控软件:SAS 数据分析引擎驱动网络异常精准检测
在数字化商业环境中,企业网络系统面临复杂威胁。SAS 数据分析引擎凭借高效处理能力,成为网络异常检测的关键技术。通过统计分析、时间序列分析等方法,SAS 帮助企业及时发现并处理异常流量,确保网络安全和业务连续性。
156 11
|
数据采集 存储 监控
数据驱动开发:如何将数据分析融入开发流程
【8月更文挑战第14天】数据驱动开发是一种高效、智能的软件开发方法论,它通过将数据分析深度融入开发流程中,实现了精准决策、提升效率和持续改进的目标。为了成功实施数据驱动开发,团队需要明确数据需求、设计合理的数据架构、集成数据收集工具、实施CI/CD流程、进行数据分析与决策支持以及建立反馈循环机制。同时,还需要应对数据质量、技术和组织与文化等挑战。通过不断努力和实践,团队可以逐步建立起完善的数据驱动开发体系,推动产品不断迭代升级和业务持续增长。
|
数据可视化 安全 前端开发
基于Django的美团药品数据分析与可视化系统,有多用户功能,可增删改查数据
本文介绍了一个基于Django框架开发的美团药品数据分析与可视化系统,该系统具备多用户功能,支持数据的增删改查操作,并采用MySQL、pandas、echarts和bootstrap技术栈,为用户提供了一个高效、安全且实用的药品数据管理和分析平台。
207 0
基于Django的美团药品数据分析与可视化系统,有多用户功能,可增删改查数据
|
数据采集 数据可视化 数据挖掘
基于Django的数据分析可视化系统,有后台,有增删改查,实现多用户登录
本文介绍了一个基于Django框架开发的今日头条数据分析可视化系统,该系统具备后台管理、增删改查功能以及多用户登录,利用数据可视化技术为新闻媒体行业提供数据管理和决策支持。
291 0
基于Django的数据分析可视化系统,有后台,有增删改查,实现多用户登录
|
前端开发 Java JSON
Struts 2携手AngularJS与React:探索企业级后端与现代前端框架的完美融合之道
【8月更文挑战第31天】随着Web应用复杂性的提升,前端技术日新月异。AngularJS和React作为主流前端框架,凭借强大的数据绑定和组件化能力,显著提升了开发动态及交互式Web应用的效率。同时,Struts 2 以其出色的性能和丰富的功能,成为众多Java开发者构建企业级应用的首选后端框架。本文探讨了如何将 Struts 2 与 AngularJS 和 React 整合,以充分发挥前后端各自优势,构建更强大、灵活的 Web 应用。
161 0