[程式] SAS MACRO問題
[軟體程式類別]: 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://www.ptt.cc/bbs/Statistics/M.1455896486.A.394.html
※ 編輯: yonny (61.224.172.26), 02/19/2016 23:44:18
→
03/03 11:07, , 1F
03/03 11:07, 1F
→
03/03 11:08, , 2F
03/03 11:08, 2F
討論串 (同標題文章)