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 28/04/2011, 11h51   #1
Invité de passage
 
Inscription : novembre 2008
Messages : 9
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2008
Messages : 9
Points : 1
Points : 1
Par défaut Créer une macro variable contenant des nom de macro varaibles

Bonjour,

étant limité par le nom de caractères que peux contenir une macro-variable j'ai créé plusieurs macro-variables commençant toutes par "liste" (liste1,..., liste84). Ces MV contiennent des noms de tables. Tables que je souhaite concaténer au finale.

Je cherche maintenant à créer une macro variable "listefinale" qui contiendra tous les noms de macro variables séparée par des ' &' afin de pouvoir réaliser mon étape data:
Code :
1
2
3
DATA tablefinale;
SET &listefinale;
run;
Voilà ce que j'ai programmé mais ça ne fonctionne pas et je ne vois pas comment m'y prendre autrement:

Code :
1
2
3
4
5
6
7
proc sql noprint;
SELECT trim(name) INTO :listefinale separated BY ' &'
FROM sashelp.vmacro
WHERE upcase(substr(name,1,5)) = upcase("liste");
quit;
 
%put &listefinale;

Merci d'avance si vous pouvez m'aider!
amne_siac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 11h58   #2
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Chez moi ça fonctionne avec quelques & en plus (puisqu'il n'y en a pas devant LISTE1) :
Il y a aussi la solution de la boucle macro :
Code :
1
2
3
4
5
6
7
DATA tablefinale;
SET 
     %DO i=1 %TO 84 ; 
            &&liste&i 
     %END ;
;
run;
te donnera la liste des tables à concaténer.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 14h01   #3
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Tu peux les stocket autrement, cela t'eviterais de créér plusieurs MV et appliquer la macro que Olivier t'a proposé

Code :
1
2
3
4
5
6
7
8
9
10
11
12
DATA _NULL_;
	SET TABLE END=EOF;
	IF EOF THEN CALL SYMPUT("liste"!!LEFT(_N_),VAR);/* var est la variable contenant le nom de tes fichiers*/
RUN;
 
DATA tablefinale;
SET 
     %DO i=1 %TO 84 ; 
            &&liste&i 
     %END ;
;
RUN;
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 29/04/2011, 17h02   #4
Invité de passage
 
Inscription : novembre 2008
Messages : 9
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2008
Messages : 9
Points : 1
Points : 1
Ca fonctionne!!

Merci beaucoup à vous deux!
amne_siac est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h31.


 
 
 
 
Partenaires

Hébergement Web