data A;
INPUT X $2
批量赋值宏变量——截取数据scan “天真 可爱 江苏 小刘”.txt
(1.06 KB)
6.;
CARDS;
“活泼开朗 四川 小红”
“勇敢 大方 湖南 小张”
“天真 可爱 江苏 小刘”
;
RUN;
data A;
set A;
n=_n_;
run;
proc sql noprint;
select X
into :clist1-:clist999
from A;
quit;
%put &clist1.;
%put &clist2.;
%put &clist3.;
%macro delete_sign(n);
%do i=1 %to &n.;
data A&i;
set A;
if n=&i;
%put i is &i.;
%put &&clist&i.;
Y=substr(substr("&&clist&i.",1,length(X)-2),3,length(X)-2);
run;
proc sql noprint;
select Y
into :clist&i.
from A&i;;
quit;
data A&i;
set A&i;
if n=&i;
%put i is &i.;
%put &&clist&i.;
y_3=compress(scan("&&clist&i.",-1,""));
y_2=compress(scan("&&clist&i.",-2,""));
y_4=compress(scan("&&clist&i.",-3,""));
y_5=compress(scan("&&clist&i.",-4,""));
y_1=compress(y_4||" "||y_5);
length y_1 $20.;
length y_2 $20.;
length y_3 $20.;
DROP y_4 y_5;
run;
%end;
%put &clist1.;
%put &clist2.;
%put &clist3.;
%do i=1 %to %EVAL(&n.-1);
data A%EVAL(&i+1);
set A&i A%EVAL(&i+1);
RUN;
%END;
data B;
set A&i ;
RUN;
PEOC DATASETS NOPRINT;DELETE A1-A&i. ;QUIT;
%mend;
%delete_sign(3);