立即注册 登录
公卫人 返回首页

asteriod的个人空间 https://www.epiman.cn/?12177 [收藏] [复制] [RSS]

日志

SAS/Intrnet的配置与应用(五)——原有sas程序的移植

热度 502已有 1088 次阅读2010-5-20 10:32 |个人分类:sas|

    好久没写blog了,今天继续以前的专辑。继续介绍SAS/Intrnet的有关内容,前面介绍到运行环境设置后之后,下面就设计到如何将原有的sas程序中移植到sas/Intrnet的环境下了。

   1 首先,分析原有sas程序中的变量,把需要用户设置的部分,提取出来,用宏变量代替;这些宏变量就是将来要通过用户界面赋值的;

   举个最简单的例子:

   有个制表过程

   Proc tabulate data=database  order=data;
   var var1;
   class factor;
   table factor="分层因素名称" all="合计", var1*sum;
   run;

   在做分析时候,我们发现有几个变量是需要变化的(具体视业务需求而定,这里仅是举例),如我们分析的数据集名称database是需要用户来设定的,分层因素factor 和求和变量也是需要用户来灵活的设定的,另外将来出来的表格的标题行也需要用户来定,因此把这些变化的部分都用宏变量代替;

   代码变成了:

   proc tabulate data=&database formchar=’ order=data;
   val  &varl;
   class &factor;
   table  &factor=“&select”all='合计'  &varl*sum;
   run;

2 增加输出控制:输出控制可以使用ods,还是拿上面的code举个例子:

普通sas程序增加ods部分之后的代码如下:

options nodate center;
ods html style=sasweb;
   proc tabulate data=&database formchar=’ order=data;
  val  &varl;
  class &factor;
   table  &factor=“&select”all='合计'  &varl*sum;
   run;
 quit;
ods html close;

如何将这一结果以html方式返还给客户端的ie浏览器呢,非常简单,略做修改即可:

options nodate center;

ods html style=sasweb body=_webout path=&_tmpcat (url=&_replay) rs=no;

   proc tabulate data=&database formchar=’ order=data;
  val  &varl;
  class &factor;
   table  &factor=“&select”all='合计'  &varl*sum;
   run;

quit;

也就是增加一个webout的虚拟输出,同时在网页上制定broker调用的发布程序。

 结语:从上面的解释可以看出,原有sas程序移植到web平台是非常方便的,无需重写代码,需要修改的部分我认为大概有三步:(1)宏的使用,如果原程序就带宏参数,这一步还可以省略;(2)修改ods输出格式为html,并通过样式对输出格式进行精确控制;(3)增加虚拟输出路径。

这样修改后的sas程序,可以在web平台上运行了,并能将结果以html方式返还给客户端,下一部分介绍如何制作用户访问界面,如果有网页设计经验的话,这个就太简单了。


路过

鸡蛋
2

鲜花

握手

雷人

发表评论 评论 (2 个评论)

回复 asteriod 2010-5-20 10:33
页面有点乱,blog好像不能用<code></code>的标签吧?
回复 XWJJQ 2010-5-31 13:54

facelist

您需要登录后才可以评论 登录 | 立即注册

手机版|会员|至尊|接种|公卫人 ( 沪ICP备06060850号-3 )

GMT+8, 2024-5-14 11:29 , Processed in 0.030159 second(s), 7 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部