Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Macro
Macro Forum d'entraide sur le langage Macro de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/11/2011, 11h39   #1
Invité de passage
 
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 1
Points : 1
Par défaut Création d'une macro-variable composée de deux macros variables

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 :
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
milou59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 11h48   #2
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
Ci dessous un exemple
Code :
1
2
3
4
5
6
7
8
9
10
11
 
%macro t;
%let t=a;
%do i=1 %TO 3;
	%let &t.&i=&i;
%end;
%do i=1 %TO 3 ;
	%put &i &&&t.&i;
%end;
%mend;
%t;
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 12h05   #3
Invité de passage
 
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 1
Points : 1
Merci bahraoui!
En effet, j'ai rajouté des "&" à plusieurs endroits et je n'ai plus de souci.
Par contre, je ne comprends pourquoi il faut mettre "&&&" là où d'habitude seul "&&" fonctionne...
Merci encore!
milou59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 13h40   #4
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 012
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 012
Points : 1 713
Points : 1 713
et pourquoi pas un seul & et non pas deux.??? en effet il faut comprendre la résolution des & par le compilateur macro.
je t'invite à regarder ce PDF.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h30.


 
 
 
 
Partenaires

Hébergement Web