Ich habe folgende if-else-Bedingungen innerhalb eines Makros SAS:Wie schreibt man elegant mehrere if-else-Bedingungen in SAS?
%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;
ich im Grunde überprüft werde, wenn eine bestimmte Ausführung eine neue Ausführung oder ein Neustart ein und füllen Sie das RFLAG für einen Neustart, N entsprechend (Y für Neuanfang). Zuerst überprüfe ich, ob restart_flg Y ist, wenn ja, überprüfe ich die Existenz eines SAS-Datensatzes (flags2), und wenn es existiert, überprüfe ich, ob einer der Datensätze existiert mit "flag = 1 und pflag <> 'N'" Bedingung und dann füllen Y oder N für rflag entsprechend. Wenn die restart_flg N an erster Stelle ist, wird die rflag auf N gesetzt.
Ich finde den Weg mehrere, wenn Bedingungen in den Code geschrieben, um weniger elegant sein. Gibt es eine bessere Möglichkeit, diese if-else-Bedingung zu schreiben oder diese Funktionalität zu erreichen?
Danke!
wie über die Verwendung von a [select] (http://v8doc.sas.com/sashtml/lgref/z0201966.htm) –