作者yonny (悠逆)
看板Statistics
標題[程式] SAS MACRO問題
時間Fri Feb 19 23:41:23 2016
[軟體程式類別]: SAS
[程式問題]: MARCRO Multiple ampersands(&)
[軟體熟悉度]: 熟悉
[問題敘述]:
今天在看 SAS advanced MACRO的部分
裡面有講到Re-Scan Rule的部分
the macro processor resolves two ampersand(&&) to one ampersand(&)
在部分我有些疑惑的地方
[程式範例]:
例如:
%let A = C; %let B = A; %put &&B/*答案是A*/;
&B = A
&&B -> &B = A (所以&B和&&B的值其實一樣的)
雖然知道SAS規定的原則就是這樣
但不知道這樣的規定是有什麼好處嗎?為什麼要這樣定?
既然&B和&&B的值相同 那為什麼還要有&&B ?
直覺上會覺得
&B=A 那&&B會等於&A又等於C 這樣比較合理
SAS為什麼不這麼設定?
另外還有一個問題 例如:
%let var1 = one;
%let var2 = two;
%let var3 = three;
%let crs=3;
當
%PUT &&var&crs;
答案是three, 因為會變成&var3 = three
但當
%PUT &var&crs;
就會跑出
WARNING: Apparent symbolic reference VAR not resolved.
&var3
心理覺得很疑惑
%PUT &&var&crs; 就會跑出正確的答案
而%PUT &var&crs; 不是也是&var3 為什麼不會跑出three?
內心真的非常疑惑
十分感謝大家解答!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.224.172.26
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Statistics/M.1455896486.A.394.html
※ 編輯: yonny (61.224.172.26), 02/19/2016 23:44:18
1F:→ BugEater: 有些想當然咯,&var&crs,SAS是當作兩個macro v, 03/03 11:07
2F:→ BugEater: 不好意思沒有看到後面有大大回復了 03/03 11:08