sas中宏变量、创建方式及区别

来源:互联网 发布:防止域名劫持 编辑:程序博客网 时间:2024/05/22 05:29

/*方式一*/ 

%let x=5; %let y=test;

%put &x &y;

/*方式二*/

 data _null_; call symput('x',5); 

call symput('y','test');

 run;

%put &x &y;

/*方式三*/ /*若有多条记录,只取第一条的值*/

 proc sql noprint; 

select min(weight),max(weight) into:minw,:maxw

 from sashelp.class;

 quit;

%put &minw &maxw;

/*根据创建多个宏变量并赋值,超过记录数范围的不会创建*/

 proc sql noprint;

 select name, age into :name1 - :name99999999,:age1 - :age99999999 from sashelp.class;

 quit;

%put &sqlobs;

 %put &name1 &age1; 

%put &name2 &age2; 

%put &&name&sqlobs &&age&sqlobs;

 %put &name100 &age100;/*这两个宏变量并没有创建,执行时会报warning*/

/*拼接字段值,赋给一个宏变量*/ proc sql noprint inobs=5; select name into:names separated by ',' from sashelp.class; quit;

%put names=&names;

其三种方法的区别在于:

 1. %let xxx=yyy;  /*%let语句几乎可以在程序的任何位置上去定义宏变量*/
2. Call Symput('xxx','yyy'); /*只能在Date Step中定义,Call Symput在宏函数中定义的宏变量可以在函数外调用;*/ 
3. select xxx into: yyy. /*只能在Proc SQL中定义*/
%let和 Select into这2种方法在MACRO函数内生成的是局部宏变量,若要想在MACRO函数外调用,需事先用%global申明变量类型。

0 0
原创粉丝点击