SAS INTRNET HELLO,WROLD程序配置使用详解
由于这近有人不太明白SAS INTRNET如何配置使其工作,故写此文档,希望能对其有所帮助
在使用前,首先要明白大概机制,首先用户发请求给WEB服务器的ISAPI接口文件broker.exe,broker.exe会根据broker.cfg配置文件的信息去定位SAS应用服务器,SAS应用服务器接到请求后调用SAS来请求SAS语句,并把输出结果返回给WEB服务器,WEB服务器再把结果转交给请求的用户,我就根据此原理用C++和ACE网络框架写了这样一个自己的INTRNET,感兴趣的可以交流一下
SAS应用服务器的配置:
可以通过界面来配置,也可以直接通过修改文件来配置,一般我会选择通过文件来配置,如下:
会涉及到下面2个文件
一个是appstart.bat文件,其用于启动SAS应用服务器
一个是appstart.sas文件,其用于SAS应用服务器的一些初始配置,被APPSTART.BAT调用
2者大体格式如下:
Appstart.bat 文件:
[
cd "d:/test"
start/min "SAS/IntrNet" "sas.exe" appstart.sas -log appsrv_5002.log -noterminal -rsasuser -sysparm "port=5002" -awstitle "SAS/AppSvr new cw"
]
其中5002表示你应用服务器监听的端口号
Appstart.sas文件:
[
%macro ifcexist(catname);
%local catname;
%if %sysfunc(cexist(&catname)) %then &catname;
%mend;
%let rc=%sysfunc(ntlog(INFORMATION,SAS/IntrNet Application Server started for the powerviewer service.));
proc appsrv unsafe='&";%''' programs=8
&sysparm;
allocate library prog 'D:/test/prog';
allocate library data 'D:/test/data';
proglibs prog;
datalibs data ;
run;
%let rc=%sysfunc(ntlog(INFORMATION,SAS/IntrNet Application Server stopped for the powerviewer service.));
]
上面的配置文件对环境进行初始化,分配了test程序库和DATA数据库的位置,这样我们可以再后面的SAS文件中直接利用这2个库进行操作
WEB服务器配置
首先建立一个虚拟目录指向broker.exe,如test虚拟目录,指向d:/test/cgi-bin,注意,此虚拟目录应该有执行ISAPI的权限
然后我们需要更改broker.cfg文件的配置信息,主要是要描述如何访问SAS应用服务器,主要要配置services段,如下,我们建立一个test的service段
SocketService test
ServiceAdmin "[your-name]"
ServiceAdminMail "[your-email]"
ServiceTimeout 900
Server localhost
Port 5002
FullDuplex True
上面就再broker.cfg中建立了一个服务段,这样再broker.exe中文件知道_service=test,broker.exe文件就会去定位端口号为5002的SAS应用服务器
这样,SAS应用服务器和WEB服务器都以配置好,现在我们测试一下我们部署的环境是否正常,再IE使用下面地址访问:
http://localhost/test/broker.exe?_debug=4
在出现的见面选择TEST,然后单击ping链接,IE跳转到下面URL地址:
http://localhost/test/broker.exe?_service=test&_program=ping&_adminpw=
如果正常就会出现下面信息:
【Ping. The Application Server wuyzpc:5002 is functioning properly.
This request took 0.09 seconds of real time (v8.2 build 1391).】
如果不正常,请检查你的SAS应用服务器是否正常启动,如果已经正常启动,请查看SAS应用服务器的日志信息
就这样,我们已经成功部署好了环境,现在我们建立一个最简单的应用,输出hello world信息给IE,并记录访问次数信息到data.count数据集
打开SAS,执行下面语句,建立访问数据集count
libname prog "d:/test/prog";
libname data "d:/test/data";
/*建立访问次数数据集*/
data data.count;
length ip $20. adate 8;
delete;
format adate yymmdd10.;
run;
然后再prog catalog下建立test目录,test目录下建立hello.scl文件,内容如下:
init:
dcl char(20) ip num adate;
/*获得当前用户的IP地址*/
ip=symget("_RMTADDR");
adate=datetime();
/*输出反馈信息*/
submit continue;
data _null_;
file _webout;
put "hello,world!";
run;
/*记录访问信息*/
proc sql noprint;
insert into data.count(ip,adate) values("&ip",&adate);
quit;
endsubmit;
测试环境都已准备好了,这样,通过下面URL链接访问hello.source,如下:
http://localhost/test/broker.exe?_service=test&_program=prog.test.hello.scl
看到没,IE界面就会显示hello,world字样,然后上SAS看数据集文件,发现里面也多了一条记录
OK,SAS的第一个HELLO WORLD程序就完成了,由于时间关系,写的比较粗,语言组织也不好,希望大家见谅;但整个流程已经过我自己测试通过,希望上面文件能对你有帮助
谢谢
(如有转载,请注明来处)