知识大全 建立同SAS交互的开发式VB客户端
Posted 知
篇首语:精诚所加,金石为开。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 建立同SAS交互的开发式VB客户端相关的知识,希望对你有一定的参考价值。
建立同SAS交互的开发式VB客户端 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
简介 程序员常问哪一种语言能访问SAS 那就是用SAS的IT机制 它容许开发式客户访问SAS 程序员能用不同的语言快速的建立同SAS交互的强壮的应用 此文主要介绍大家如何用VB同SAS交互 读前需知 该文假设读者对VB//SAS知识有一定的了解 SAS IT的组件 SAS IT是一个中间件 是为用户提供访问SAS和呈现数据的接口 它包含下面功能 LDAP(轻量级目录访问协议)目录集成 LDAP是一个分布式存储数据的工业标准 程序员可以使用微软的ADSI(动态目录服务接口)访问LDAP目录 你可以把LDAP认为一个可以通过TCP/IP访问的数据库 通常 一个组织会有一个单一的LDAP 服务器 并被该组织的所有机器共享 发布/订阅 这种积极的信息传送机制能使你制造SAS输出(发布者)到那些对这些输出感兴趣的人(订阅者) 这种机制是由IOM(整合对象模型)接口 SAS语言调用语法和LDAP对象组成并协同工作的 消息队列 SAS可以把输出信息输出到消息队列 这样客户端没有必要等待SAS执行完成 关于消息队列的详细用法情参考: IOM(综合对象模型) IOM是一组对象的集合 其中大多数通常被VB使用 SAS IT比以前版本提供的OLE接口的优势 IT是以前OLE的延伸 下面比较一下三种主要的不同 IT提供了多层次的接口 而OLE只提供了单一的接口 IT是跨平台(SAS所能支持的平台 如:WIN/UNIX/OS等)的 VB应用能通过远端调用IT对象 而OLE只能运行于WIN平台 IT对象容许SAS 程序异步运行 而OLE不能 注 IT对象的根对象为 SAS workspace 其对应了OLE的 SAS application 对象 VB程序员的IT工具 包含IOM SAS workspace manager IOM数据提供者 IOM bridge for scripto IOM 客户端可以通过多种连接方式连接到IOM 服务器 如CORBA/JDBC//OMG等 而没有必要附加代码到客户端 IOM是一个对象模型 因为它暴露了一组对象供用户使用 这些对象可以用来实现 个目标 提交代码给SAS和获得SAS的输出 在所以IOM对象中 数组被广泛的使用 所以所有请求是被同时返回的 所需注意的是 如果没有SAS IT产品的授权 IOM接口只能被本地使用 如过有授权 则可以通过网络访问远端的IOM接口 IOM对象层次上的根对象是workspace 每个这样的对象都有它自己的WORK库 workspace对象提供了下面可用的对象 dataservice对象 返回一个操作SAS库的接口 它同时也提供了一个读写SAS数据的接口 但VB程序员不能直接使用 只能通过SAS 数据提供者间接调用 fileservice对象 返回一个读写SAS服务器文件和文件引用的接口 getapplication对象 返回一个有SAS/AF建立的自定义接口 languageservice 对象 返回一个提交SAS代码并获得输出的接口 IOM使用例子 假设下面代码已经被执行 Dim obWsMgr As New _ SASWorkspaceManager WorkspaceManager Dim obSAS As SAS Workspace Dim xmlInfo As String This creates a SAS Server running on the local machine Set obSAS = obWsMgr Workspaces CreateWorkspaceByServer ( VisibilityNone nothing xmlInfo) 例子 提交代码 有 种方式可以提交代码到SAS SERVER 方式 使用LanguageService obSAS LanguageService Submit _ data a; do x= to ; y=x*x*x; & _ output;end;run; MsgBox obSAS LanguageService FlushLog( ) 方式 使用 StoredProcessService 这种方式请求SAS文件存放在已知的目录中 且能过通过宏的方式传参数给文件 而在SAS文件中要想接收参数信息 需使用这样的语法 *ProcessBody; 它会自动把传入的参数转换为宏 如有多个参数 在传入的时候用【空格】分隔 例如 Run the SAS program at c:\\temp\\looper SAS Dim obStoredProcessService As _ SAS StoredProcessService Set obStoredProcessService = _ obSAS LanguageService StoredProcessService obStoredProcessService Repository = _ file:c:\\temp obStoredProcessService Execute looper _ loopTimes= MsgBox obSAS LanguageService FlushLog( ) looper sas文件内容如下 %let loopTimes= ; *ProcessBody; data a; do x= to &loopTimes; y=x*x*x; output; end; run; 例子 执行代码 Async属性 如果为false 则为同步执行 否 为异步执行 可以通过事件获得是否已成功执行完成 如下定义一个错误发生事件 Public WithEvents obSASLanguage As _ SAS LanguageService To enable events you must associate the obSASLanguage interface with the same LanguageService interface used to make calls Set obLanguage = obSAS LanguageService obLanguage Submit this is an error;run; Private Sub obLanguage_StepError() An error has occurred Dump the log Debug Print obLanguage FlushLog( ) End Sub 例子 获得输出 SAS会输出多种类型的信息供用户使用 如下 IOM Data Provider 能够提供二进制数据访问给用户 LanguageService的FlushList FlushListLines方法可以获得SAS的窗口输出 如果想获得ODS输出 可以通过文件引用的方式 SAS提供的FileService提供这样的服务 下面演示如何通用FileService方式获得输出 Dim obFileref As SAS Fileref Dim obTextStream As SAS TextStream Dim obFileSystem As New Scripting FileSystemObject Dim obFile As Scripting TextStream Set obFile = obFileSystem CreateTextFile ( c:\\temp\\ True) obSAS LanguageService Submit filename fref TEMP; & ods body=fref; & proc corr data=sashelp class; & run; & ods close; Set obFileref = obSAS FileService UseFileref( fref ) Set obTextStream = obFileref OpenTextStream (StreamOpenModeForReading ) sOdsOutput = obTextStream Read( ) While (Len(sOdsOutput) > ) Do something with the read text here obFile Write sOdsOutput sOdsOutput = obTextStream Read( ) Wend WebBrowser Navigate c:\\temp\\ 其实在单机环境中就没有必要这样做了 ) 使用ResultPackageService也可获得输出 它可以通过Workspace Utilities ResultPackageService引用 你可以使用ResultPackageService提供的接口建立ResultPackage 当然也可以通过SAS语言的CALL语法 一个ResultPackage可以是任意的SAS输出 如文件 数据集 ODS输出 图片等 下面这个例子显示如何建立一个 ResultPackage %macro CheckRC(rc); if rc ne then do; msg = sysmsg(); put msg; ABORT; end; %mend; data _null_; call PACKAGE_BEGIN(pid desc nameval rc); %CheckRC(rc); call INSERT_FILE(pid FILEREF:fref TEXT text/ Some ODS Output rc); %CheckRC(rc); /* Nothing in the package actually gets * written out until we call publish * So if you modify any filerefs after * calling insert but before calling * this then you will get the * modified fileref */ call PACKAGE_PUBLISH(pid TO_ARCHIVE rc archive_path archive_name c:\\temp archive ); %CheckRC(rc); /* You could call PACKAGE_PUBLISH as many * times as you want for any given package * as long as you * do so before calling PACKAGE_END */ call PACKAGE_END(pid rc); %CheckRC(rc); run; 下面显示如何读这个 ResultPackage Dim props() As String Dim obResultPackage As SAS ResultPackage Dim obFileEntry As SAS ResultPackageFileEntry Dim obRPS as SAS ResultPackageService Set obRPS = obSAS Utilities ResultPackageService Set obResultPackage = obRPS BrowseResultPackage( ARCHIVE c:\\temp\\archive spk props) Set obFileEntry = obResultPackage GetEntry( ) Set obTextStream = obFileEntry Open (StreamOpenModeForReading ) sOdsOutput = obTextStream Read( ) While (Len(sOdsOutput) > ) Do something with the read text here obFile Write sOdsOutput sOdsOutput = obTextStream Read( ) Wend WebBrowser Navigate c:\\temp\\ 关于SAS Workspace Manager 它是一个完成下面功能的ACTIVEX控件 它同SAS建立连接 并返回工作空间 它提供 cha138/Article/program/net/201311/13888相关参考
同Java一样简单!VB.NET多线程开发实例 以下文字资料是由(历史新知网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! VBNET
Delphi下利用DDE实现同Word的交互 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一引
如何建立一个VB.NET日期/时间值 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 组合一个日期
工作内容:建立、完善与第三方资产业务相关的投资产品研发体系;研究、开发满足内部与外部客户需求的投资产品;组织、协调有关产品的推广、培训活动、和客户支持服务;负责团队建设和专业人才的培养。职业要求:教育
使用VB.NET开发定制控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 正常情况下在开发NET
VB.NET中的组件开发 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!简介组件其实是一段可以重用的
使用VB.NET开发自定义Windows控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一前
VB.NET分层开发的几点心得 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 从这一章开始我们将
VB.NET中的组件开发源代码剖析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
轻松从VB转向基于Swing的开发平台 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!当Abacus