Friday, April 21, 2006

SAS macro 批处理任务的一个技巧

刚刚调试了一下,觉得不错,应该共享。
libname SASprog "D:\SASCatalog";
option mstored sasmstore=SASprog; /*library to invoke macros from*/

%macro batch_proc(job, sequ); /*store des="Batch processing";*/
%let todo=&job;
%let blank=%str( );
%let n=1 ;
%let pos=%scan(&sequ,&n,&blank);
%put Current Step is &n, The State is &pos;
%do %while (%str(&pos) ne &blank); /*quote to avoid miss interpretation*/
%&todo(&pos);
%let n=%eval(&n+1);
%let pos=%scan(&sequ,&n,&blank);
%end;
%mend batch_proc;

以后要做什么重复劳动就定义一个job和数据集的队列:sequ,然后计算机就慢慢跑吧。
如果有多个job,就可以像处理数据集队列一样分离代表job的字符串, 把todo编号,然后条件语句,...,哈哈哈。

0 Comments:

Post a Comment

<< Home