sas中巨集變數 建立方式及區別

2021-07-02 03:58:17 字數 1142 閱讀 7711

/*方式一*/ 

%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 ***=yyy;  /*%let語句幾乎可以在程式的任何位置上去定義巨集變數*/

2. call symput('***','yyy'); /*只能在date step中定義,call symput在巨集函式中定義的巨集變數可以在函式外呼叫;*/ 

3. select *** into: yyy. /*只能在proc sql中定義*/

%let和 select into這2種方法在macro函式內生成的是區域性巨集變數,若要想在macro函式外呼叫,需事先用%global申明變數型別。

C C 中巨集定義和常變數的區別

例如 define pi 3.1415926 define max a,b a b a b int nrel max 2,3 巨集定義簡單來說就是替換,名字上面的純粹複製替代。由於巨集在預處理階段展開,例如上面巨集定義pi,程式在該階段就直接將pi的地方替換成3.1415926,然後執行編譯。所以巨...

JS中建立函式的三種方式及區別

1.函式宣告 function sum1 n1,n2 2.函式表示式,又叫函式字面量 var sum2 function n1,n2 兩者的區別 解析器會先讀取函式宣告,並使其在執行任何 之前可以訪問 而函式表示式則必須等到解析器執行到它所在的 行才會真正被解釋執行。自執行函式嚴格來說也叫函式表示式...

函式建立方式及區別,粗略總結函式原理

函式其實乙個封裝一段 的物件,之所以要封裝是為了便於我們以後 的重用。通俗的說就是一項任務可能被反覆的使用,就要定義函式,以便以後反覆使用。函式宣告 定義 使用function關鍵字宣告乙個函式,再指定乙個函式名,叫函式宣告。表示式 function 函式名 引數列表 function add1 n...