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 19/08/2011, 12h38   #1
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 73
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 73
Points : 32
Points : 32
Par défaut imbrication de tables dans une boucle

Bonjour,

J'ai une macro qui réalise des calculs de façon itérative en sortie de cette macro j'ai une série de tables que je voudrais imbriquer les une aux autres.

Voici mon bout de code pour ce faire mais il ne fonctionne pas :

Code :
1
2
3
4
5
6
7
8
9
10
11
%MACRO TABLE ;
		%let j=1;
		%DO %WHILE(%scan(&&listn&niv.,&j ,ù) ne); 
			%let var=%scan(&&listn&niv.,&j,ù);
			%put sum2_n&niv._n&var._&indic. ;
			%let j=%eval(&j+1);
 
		%END ;
 
 
	%MEND TABLE;
data append_&indic. ;
set %table ;
run ;

Mais il n'imbrique pas les tables sum2_n&niv._n&var._&indic. entre elles !

Qu'est ce qu'il manque pour que cela fonctionne ?

Merci de vos réponses.
mohamed_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 12h52   #2
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
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 006
Points : 1 703
Points : 1 703
Hello,
pas compris ce que tu veux faire. Peut être un jeu de données et le résultat souhaité pourra nous aider à réflichir.
qu'appelles tu "imbriquer des tables"?
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 16h28   #3
Membre actif
 
Inscription : mars 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 149
Points : 162
Points : 162
Salut,

Cet extrait de code que tu as utilisé t'affiche tes tables dans la log et non en sortie.
Code :
%put sum2_n&niv._n&var._&indic. ;
Il faut donc retirer le %put.

Si çà ne marche pas , comme dit Sam, envoie des exemples de valeur de tes macros variables.
Bon courage
la2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 19h00   #4
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 73
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 73
Points : 32
Points : 32
Effectivement, ce n'est pas le terme imbriquer mais compiler les tables les unes en dessous des autres.

Ce que je souhaitais c'était une macro qui fasse

data append ;
set table1
table2
table3
.
.
table 6 ;
run ;

J'ai trouvé en ôtant le %put et le ;

Merci tout de même .
mohamed_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 09h49   #5
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
Pourquoi veux tu passer par une macro? Quels sont les noms de tes differentes tables?

si c'est table1 - table6

tu peux essayer:
Code :
1
2
3
4
5
6
7
8
%macro append;
DATA apppend;
 SET %do i=1 %TO 6;
  %cmpres(table&i.) ;
%end; ;
run;
%mend append;
%append;
Manoutz est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 10h16   #6
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
Salut,
Tu peux essayer ça, sachant qu'il faudrait te débrouiller à récupérer la macro-variable NB:

Code :
1
2
3
4
5
6
7
%MACRO M;
 
DATA append; SET %DO i=1 %TO &NB.; table&i. %end;; RUN;
 
%MEND;
 
%M;
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 10h24   #7
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 73
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 73
Points : 32
Points : 32
Bonjour,

pardon pour cette réponse tardive.

Je passe par une macro parce qu'en amont je vais tourner une macro qui réalise des proc summary par direction global et directions inférieures.
Direction globale = 5 ; directions inférieures = 4--1 ;
Sauf que ce n'est pas systématique.
Je peux avoir une combinaison DG = 5 AVEC D inf = (3,1);
C'est pour cela que je passe par %DO %while...
mohamed_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 11h00   #8
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
Bonjour Mohamed,

Ton explication est confuse - pour moi en tout cas. Peux tu nous reexpliquer ton probleme? Quels sont tes parametres? Quels probelemes rencontres tu?

Manoutz
Manoutz est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h22.


 
 
 
 
Partenaires

Hébergement Web