/*方式一*/
%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...