[程式] SAS MACTRO 變數的問題

看板Statistics作者 (我是大天才^o^/)時間12年前 (2011/07/30 14:57), 編輯推噓1(1014)
留言15則, 3人參與, 最新討論串1/5 (看更多)
[軟體程式類別]: 入軟體程式類別 SAS [程式問題]: 資料處理 [軟體熟悉度]: 新手(不到1個月) [問題敘述]: 我寫了兩隻程式分別為aa.sas及bb.sas,我想讓bb直接呼叫aa的結果存起來。 但目前遇到的一個大問題是,他的變數好像都是共用的 bb裡面的變數k,如果宣告成i,他就會跟aa裡的i混亂掉, 不知道能不能讓他們同樣都是i,但卻不會亂掉。 也就是說我想做到像java那樣可以模組間的變數不會互相干擾。 [程式範例]: %MACRO aa (num); DATA abc; %DO i=1 %TO # %DO j =1 %TO # col = &i; row = &j; muti = &i*&j; output; %END; %END; RUN; %MEND; %INCLUDE 'E:\TEST\source\aa.sas'; %MACRO bb (num); %DO k=1 %TO # %aa(&k); DATA tmp&k; SET abc; RUN; %END; %MEND; ----------------------------------------------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.95.195

07/30 16:08, , 1F
宣告值域? java是用public or private,SAS> %Global,%Local
07/30 16:08, 1F

07/30 16:32, , 2F
耶耶~~寫出來了~~感謝^^ 就如你所說的前面加一個宣就好了
07/30 16:32, 2F

07/30 17:37, , 3F
另外再請教一個問題,這可以有回傳值嗎?例:回傳一個DATA
07/30 17:37, 3F

07/30 17:39, , 4F
在macro bb裡面的SET abc 那邊我想要做的是接aa組好的DATA
07/30 17:39, 4F

07/30 17:40, , 5F
如果不知道aa裡面的DATA叫abc,那我bb要怎麼寫?
07/30 17:40, 5F

07/31 00:51, , 6F
不太懂你說的不知道DATA的名字?就算寫方法(or function)
07/31 00:51, 6F

07/31 00:51, , 7F
不也需要呼叫你自己定義的名稱嗎?
07/31 00:51, 7F
※ 編輯: Maninck 來自: 118.168.90.166 (07/31 09:55)

07/31 09:56, , 8F
我指的是綠色那個檔名,因為我現在知道aa裡面的Data叫abc
07/31 09:56, 8F

07/31 09:57, , 9F
所以我在bb裡面就set abc給他,但在不知道aa裡面的名稱時
07/31 09:57, 9F

07/31 09:58, , 10F
我可以用類似DATA tmp&k = &aa(&k);的方式來做嗎?
07/31 09:58, 10F
像我把bb改成下面,他就會出錯 %MACRO bb (num); %Local i; /*內部使用宣告*/ %DO i=1 %TO # DATA tmp&i; SET %aa(&i ); %END; %MEND; 錯誤訊息 ERROR: File WORK.DATA.DATA does not exist. ERROR: File WORK.ABC.DATA does not exist. ※ 編輯: Maninck 來自: 118.168.90.166 (07/31 10:04)

07/31 20:25, , 11F
出錯是必然的 你在set甚麼樣的東西呢? 把%aa帶進去
07/31 20:25, 11F

07/31 20:39, , 12F
我希望是set macro aa跑出來的data abc,所以才在想macro
07/31 20:39, 12F

07/31 20:40, , 13F
aa要怎麼樣才可以回傳data abc出來?
07/31 20:40, 13F

07/31 20:42, , 14F
還是說~~macro無法像java一樣可以return一個物件或字串QQ
07/31 20:42, 14F

07/31 20:43, , 15F
我在網路上有查到如何回傳字串,但就是查不到回傳一個data
07/31 20:43, 15F
文章代碼(AID): #1ECwjsWW (Statistics)
討論串 (同標題文章)
文章代碼(AID): #1ECwjsWW (Statistics)