0
我有一個SAS宏內下面的if-else條件:如何在SAS中優雅地編寫多個if-else條件?
%if &restart_flg = Y %then %do;
%if %sysfunc(exist(&library.f2)) %then %do;
proc sql;
Connect to xxxxx as dbcon (user=xx pw=xx server=xx port=xxx database=xxxxx);
select * into :prcs_flag_cnt
from connection to dbcon (
select count(1)::smallint
from &library.f2
where flag = 1 and pflag <> 'N'
);
quit;
%put Process count flag: &prcs_flag_cnt;
%if &prcs_flag_cnt > 0 %then %do;
%let rflag = Y;
%end;
%else %do;
%let rflag = N;
%end;
%end;
%else %do;
%let rflag = N;
%end;
%end;
%else %do;
%let rflag = N;
%end;
我基本上檢查,如果一個特定的執行是一個新的執行或重新啓動的一個,並相應地填充rflag(Y重啓,N爲全新的開始)。首先,我檢查restart_flg是否爲Y,如果是,我檢查是否存在SAS數據集(flags2),如果存在,我檢查是否有任何記錄存在「flag = 1和pflag <>'N'」條件,然後相應地爲Y或N填充rflag。如果restart_flg首先是N,則rflag設置爲N.
我發現如果在代碼中編寫的條件不那麼優雅,我會找到多種方式。有沒有更好的方式來編寫if-else條件或完成此功能?
謝謝!
如何有關使用[選擇](http://v8doc.sas.com/sashtml/lgref/z0201966.htm) –