程序段如下:
%LET k=0;
%MACRO p_cl;
DATA _NULL_;
SET work.p_split;
CALL SYMPUT("k",_n_);
RUN;
%DO i=1 %TO %EVAL(&k.);/*数据集循环*/
%let m=&i.;
%let n=%EVAL(&i.-1);
DATA _NULL_;
SET work.P_split(obs=&i.);
CALL SYMPUT("lib_name",compress(libname));
CALL SYMPUT("data_name",compress(memname));
CALL SYMPUT("name",compress(name));
RUN;
%let data_name&m.=&data_name.;
%if %EVAL(&m.)='1' or (&data_name.&m.^=&data_name.&n.) %then %do;
…………
运行后出现的问题是,比如说我头3个观测中,data_name的值都是一样的,但是在if的判断中,好像对&data_name.&m.^=&data_name.&n.的判断并未生效,或者说整个判断都未生效,该语句的后续将会重复执行。
因为不知道存在什么错误,请高手不吝指教。谢谢
按我的设想当第2次循环管出的data_name和第一次一样的时候,后续语句是不执行的。



雷达卡




京公网安备 11010802022788号







