Bonjour,

J'essaie d'automatiser un code qui permet, à partir d'une liste de variables, de décomposer chacune d'entre elles en plusieurs variables binaires.
Exemple : Variable varA va génerer VarA1 jusqu'à VarA20
Variable VarB va générer VarB1 à VarB20 etc...

J'ai créé le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
%macro TDC (listevar, prefixe);
	%let i=;
	%let j=1;
	%let var = %scan(&listevar,&j," ");
	%let pref = %scan(&prefixe,&j," ");
 
	%do %while (&j<=1);/*43*/
		proc univariate data=sortie.base_acm noprint;
			output out=&var PCTLPTS=0 TO 100 BY 5 PCTLPRE=&pref;
			var &var;
		run;
 
		%do i=0 %to 100 %by 5;
			%let source=;
			proc sql;
				select &pref.&i into : source from &var;
			quit;
 
			%let &pref.&i = &source;
 
			%put &pref.&i = &&pref.&i;
		%end;
prefixe = une liste de préfixe qui composera le nom de mes variables binaires
listevar = une liste de variable à décomposer.

Mon problème concerne : %let &pref.&i = &source;
qui me renvoie une valeur vide lorsque je fais %put &pref.&i = &&pref.&i;

J'ai essayé avec un call symput, call symputx (les deux dans des "data _null_"), un %let et rien de fonctionne.

Ma collègue a eu le même souci et n'a pas trouvé de solution.

Merci d'avance pour votre aide