控制程序流-sas
下面是基于增量变量i的值执行一组数据步骤的代码。因为我已将I的值指定给1个数值,而不是字符值。理想情况下,第一个数据步骤块需要执行,但在以下情况下,第二个数据步骤块正在执行 %put&i;在日志窗口中打印1控制程序流-sas,sas,sas-macro,Sas,Sas Macro,下面是基于增量变量i的值执行一组数据步骤的代码。因为我已将I的值指定给1个数值,而不是字符值。理想情况下,第一个数据步骤块需要执行,但在以下情况下,第二个数据步骤块正在执行 %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 ; r
%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;
IF语句不是调用&I宏变量,而是简单地将字符串I与1进行比较。这也解释了为什么第二个循环会运行,因为从技术上讲,字符串I不等于1。您只需要在两个%IF语句中的I前面加上一个符号。我还放置了两个%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;
IF语句不是调用&I宏变量,而是简单地将字符串I与1进行比较。这也解释了为什么第二个循环会运行,因为从技术上讲,字符串I不等于1。您只需要在两个%IF语句中的I前面加上一个符号。我还放置了两个%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;