鲜为人知的SAS9 多线程技术

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 anyjack 的 blog

 sas自8版开始就支持startsas命令,但其帮助介绍它的相关知识很少,并且运行该命令,无论是在8版还是在9版都会提示
 
  startsas 是试用功能。该功能的使用可能会导致意外的结果。
 
 下面让我来集中介绍这家伙的具体用法吧
 
 首先它的作用就是开启一个sas线程,避免了开进程所导致的开销

 1.最简单的用法就是:
 startsas dms;
 或者
 startsas dms noexplorer;
 需注意的是,不要使用
 startsas;
 行模式是不被支持的,只能从批提交,在应用该命令时
 2.直接提交命令给当前线程
  startsas dms noexplorer ls=min                                        
          initstmt="sas命令串";                                    
  startsas dms noexplorer skip=min                                      
          initstmt="sas命令串";                                    
 注意的是,sas命令串的长度是有限制的,在我机器上是4000多个字节
 sas有这样的命令可以中止当前sas线程,如下:
  endsas;
 所以,建议最好在命令串后加上这个命令endsas;
 3.如果你不想直接提交命令而想提交文件,startsas也是支持的,如下
    sasstart sysin="sas文件" sas选项;                  
   sas选项可以是启动sas时可用的任意选项,如log print nolog等
 好了,告诉了这么多,是不是够了呢?
 呵呵,明显不够了,还只告诉我们怎么启动sas线程,还没有告诉怎么结束sas线程呢
 
 ok,go on!
 
  启动sas线程后,sas进程会把该线程id写入sysstartid宏中
  sas提供了下面命令支持启动sas线程的善后处理问题
    1、bye|endsas 命令
    --------------------------------------------------------------------------------
    结束 sas 过程;如果没有其他 sas 过程在运行,则结束 sas 会话。类别: 窗口管理 
    --------------------------------------------------------------------------------
    语法
    bye 
    endsas <_all_ | all><process-id-list> 
    bye 参数
    (无参数)
    如果只有一个过程,将终止会话。否则,它将终止当前过程。
    endsas 参数
    (无参数)
    关闭一个过程中的所有窗口。
    all
    关闭所有过程中的所有窗口。
    _all_
    关闭所有过程中的所有窗口。
    process-id-list
    关闭与以前启动的 sas 过程的 id 一致的过程。
   2、waitsas命令
    郁闷的是,sas帮助中没有提供任何相关信息,不过其具体用法是这样的
    waitsas 线程id;
    它的作用就是等待该线程执行完毕
   3、systime宏
    指示出sas线程启动的时间                                                                         
   4、sysstartname 宏
    指示最近产生的sas线程的名字
   5、sysstartid 宏
    指示最近产生的sas线程的线程id
   6。sysuserid宏 
    指示当前sas线程所运行的用户名
 不过很郁闷很郁闷的是我没有找到一个命令知道这个sas是运行完了还是没运行完,所以我也无法告知大家了
 只能能过其他手段解决了,比如进程和线程中共享一个物理表来维护状态
 
 好了,到此结束了,最后附注一下:此文所带来的苦果,还请君自尝  

本文关键:鲜为人知的SAS9 多线程技术
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top