2017-02-08 125 views
1

以下是根據增量變量「i」的值執行一組數據步驟的代碼。由於我已將i的值賦予1(數字而不是字符值)。理想情況下,第一個數據步塊需要執行,但在下面的情況下,第二個數據步塊正在執行。控制程序流程 - sas

%put & i。 ;將1打印到日誌窗口中。

%macro DSN; 
%let i = 1 ; 
data new_DSN; 
run; 
%if i = 1 %then %do;  
    data Dummy ; 
    run; 
    data DUMMY_ ; 
     set DUMMY new_DSN ; 
    run; 
%end; 
%else %if i ^= 1 %then %do ; 
    data DUMMY_ ; 
     set DUMMY_ new_DSN ; 
    run; 
%end; 
%mend DSN; 

%DSN; 

回答

5

你的IF語句並沒有叫我&宏變量,而是簡單地比較字符串我1。這也解釋了爲什麼你的運行,因爲從技術上來講串第二循環「我」不等於「1」。你只需要在%IF語句中把&符號放在我的前面。我還將兩個%PUT語句放在了代碼運行的位置。請看下圖:

%macro DSN; 
%let i = 1 ; 
data new_DSN; 
run; 
%if &i = 1 %then %do; 
    %PUT First Loop Run; 
    data Dummy ; 
    run; 
    data DUMMY_ ; 
     set DUMMY new_DSN ; 
    run; 
%end; 
%else %if &i ^= 1 %then %do ; 
    %PUT Second Loop Run; 
    data DUMMY_ ; 
     set DUMMY_ new_DSN ; 
    run; 
%end; 
%mend DSN; 

%DSN; 

enter image description here