Do Loop Concepts存在一些問題。我有一個靜態日期與自定義(可以是任何爲此事日期) -Do Loop使用呼叫SYMPUT
%LET DATE = %SYSFUNC(TODAY());
%PUT &DATE;
我需要建立一系列的持有10天遞增該日(& DATE)的值宏變量,所以我用一個簡單的數據步驟實現這一 -
DATA _NULL_;
CALL SYMPUT('DATE10',&DATE+10);
CALL SYMPUT('DATE20',&DATE+20);
CALL SYMPUT('DATE30',&DATE+30);
RUN;
該方法對於& DATE的初始值後的10至30天的增量確定。我現在的任務是將報告的執行時間延長至距日期& DATE的250天(增加10天)。假設DO LOOP是最有效的執行方法,我無法理解循環如何在循環內「創建」一個新的宏變量(例如& Date150)。假設下面的語法是正確的,我不知道下一個/正確的步驟是:
DATA _NULL_;
DO I=10 TO 150 BY 10;
CALL SYMPUT('DATE10',&DATE);
END;
RUN;
我將如何「增量」宏VAR(& DATE10,& Date20 ...... &的實際名稱Date150),同時執行基於10天增量創建宏變量?
爲什麼你需要所有這些宏變量?爲什麼不把值列表傳遞給一個宏變量。簡單得多。 – Tom
有一系列查詢爲每個日期條件執行彙總,所以我想我只是將查詢調出每個日期以創建每個日期的彙總值/子集表。說實話,這是我當時最好的方法。你的建議......我不知道我可以這麼做(在一個變量中創建一個「列表」值)。當我將人蔘考列表看作是:進入價值時,「select into:」是如何工作的?也許你可以指引我參考正確的方向?非常開放,以改善我的方法.... – SMW
假設你有三個日期。所以你做'日期= 1 2 3'。然後,如果您想按照日期生成報告,則只需執行「處理報告」; (&日期)中的日期;按日期; .... run;'在一個更復雜的報告中,您只需向%sysfunc(countw(&日期))添加'%do i = 1%; %let date =%scan(&date,&i); ... where date = &date; ...%end;' – Tom