看板 Statistics 關於我們 聯絡資訊
[軟體程式類別]: 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
BugEater: 有些想當然咯,&var&crs,SAS是當作兩個macro v, 03/03 11:07
BugEater: 不好意思沒有看到後面有大大回復了 03/03 11:08