1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| %macro test ();
libname test "C:\Users\Util\Desktop\Test pour programme";
filename sasref "%scan(&sysparm,1,@)";
data test.param;
infile sasref length=reclen lrecl=32767 ;
input param $varying32767. reclen ;
n=0;
do i=1 to reclen;
if substr(param,i,1)="$" then n=n+1;
end;
format var $255. contenu $10000.;
do j=1 to n;
var=scan(scan(param,j,"$"),1,"@");
contenu=scan(scan(param,j,"$"),2,"@");
output;
end;
n=_n_;
run;
proc sql noprint;
create table test.temp as
select *
from test.param;
%let nb=&sqlobs;
select var into:var1-:var&nb
from test.param;
select contenu into:contenu1-:contenu&nb
from test.param;
quit;
%do i=1 %to &nb;
%global &&var&i;
%put &&var&i = &&contenu&i;
%end;
data test.param;
set test.param;
call symput(left(trim(var)),left(trim(contenu)));
run;
%mend;
%test; |
Partager