/* Exemple de programme permettant de récupérer dans une macro variable nommée nbr_var le nombre maximum de variables présentes dans les 2 fichiers (nommés fichier1.txt et fichier2.txt dans notre exemple) que l'on souhaite importer */ data tab1 ; infile "C:\fichiers\fichier1.txt" obs=1 missover lrecl=72; length var $72; input @1 VAR $ 1-72 ; VAR =trim(left(compbl(VAR ))); run; data tab2 ; infile "C:\fichiers\fichier2.txt" obs=1 missover lrecl=49; length var $72; input @1 VAR $ 1-49 ; VAR =trim(left(compbl(VAR ))); run; data var1 (drop=i); set tab1; retain nbvar1 0; do i=1 to length(var); if substr(var ,i,1)="" then nbvar1=nbvar1+1; end; run; data var2 (drop=i); set tab2; retain nbvar2 0; do i=1 to length(var); if substr(var,i,1)="" then nbvar2=nbvar2+1; end; run; data var1; set var1; length vart1 $10; do i=1 to nbvar1+1; vart1=scan(var ,i);output; end; run; data var2; set var2; length vart2 $10; do i=1 to nbvar2+1; vart2=scan(var,i);output; end; run; data final ; merge var1 (keep=vart1 i) var2 (keep=vart2 i); by i; run; data final2 ; set final; retain nbr_var 0; if vart1 eq vart2 then nbr_var=nbr_var+1; else if vart1 ne vart2 and vart2 ne '' and vart1 ne '' then nbr_var=nbr_var+2; else nbr_var=nbr_var+1; call symput('nbr_var',put(nbr_var,8.)); run; %put nbr_var=&nbr_var;