SAS(十四)SAS宏相關知識

SAS(十四)SAS宏相關知識

SAS宏

  1. 利用宏可以減少在完成一些共同任務時必須輸入的文本量
  2. 利用宏可以使程序模塊化,使程序易讀、便於修改、移植、方便重複使用

SAS宏變量

  1. 宏變量屬於SAS宏語言,與普通變量的區別是可以獨立於DATA步
  2. 可以在SAS程序中除數據行之外的任何地方定義並使用宏變量
  3. %let語句定義宏變量並分配一個值給宏變量(如:%let dsn=3)
  4. 當引用一個宏變量的值,放&號在宏變量前
  5. 使用%str函數圍住宏變量的值,使得在這個值內部的分號作爲這個文本的部分,而不是%let語句的結束
  6. 使用%put語句在LOG窗口顯示宏變量的值
  7. SAS/BASE中的自動宏變量,如:sysver, systime(給出SAS程序或會話開始執行的時間);

 

%put &sysver;                                                                                                                           
%put &systime;                                                                                                                          
%put &sysdate;                                                                                                                          
%put &sysscp;/*返回用戶主機系統的縮寫*/

 

title "This macro is writen by &yvar";                                                                                                  
%let xvar=123.45;                                                                                                                       
%let yvar=zhao;                                                                                                                         
%put xvar;                                                                                                                              
%put &xvar;                                                                                                                             
data;                                                                                                                                   
input a;                                                                                                                                
cards;                                                                                                                                  
1                                                                                                                                       
;                                                                                                                                       
run;                                                                                                                                    
proc print;                                                                                                                             
run;

 

%macro create;                                                                                                                          
  data tem;                                                                                                                             
    set peixun.fitness;                                                                                                                 
        if age>=50;                                                                                                                     
%mend create;                                                                                                                           
%create;                                                                                                                                
run;                                                                                                                                    
proc print data=tem;                                                                                                                    
run;

 

宏參數

  1. 被定義在一個%macro語句的宏名字後括號內的宏變量稱爲宏參數,可以直接給出宏參數的值,也可以在調用這個宏時給出這些參數的值。
  2. 對參數分配的值只在這個宏執行時有效,而宏變量從用戶創建直到SAS會話結束前都存在
data temp1;                                                                                                                             
  set peixun.fitness;                                                                                                                   
run;                                                                                                                                    
%macro plot(yvar=age,xvar=weight);                                                                                                      
  proc plot;                                                                                                                            
    plot &yvar*&xvar='*';                                                                                                               
  run;                                                                                                                                  
%mend plot;                                                                                                                             
%plot()                                                                                                                                 
%plot(xvar=runtime);                                                                                                                    
quit;

 

%macro create;                                                                                                                          
  data temp;                                                                                                                            
    set peixun.fitness;                                                                                                                 
    if age>=50;                                                                                                                         
%mend create;                                                                                                                           
%*The first macro generates DATA;                                                                                                       
%macro plot;                                                                                                                            
  proc plot;                                                                                                                            
    plot &yvar*&xvar='.';                                                                                                               
run;                                                                                                                                    
%mend plot;                                                                                                                             
%*The second macro generates PROC;                                                                                                      
%macro analyze(getdata,yvar,xvar);                                                                                                      
  title;                                                                                                                                
  %if %upcase(&getdata)=YES %then                                                                                                       
  %do;                                                                                                                                  
    %create                                                                                                                             
        title3"Data Set Created for The Plot";                                                                                          
  %end;                                                                                                                                 
%plot                                                                                                                                   
%mend analyze;                                                                                                                          
%analyze(yes,age,weight);                                                                                                               
quit;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章