|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 21 ![]() |
Bonjour,
Je voudrais savoir s'il est possible de mettre dans le premier paramètre de call symput une macro variable ? Ci dessous un exemple table essaie: obs toto tata titi 1 a rr yy 2 b ss vv 3 c tt ww Je souhaite créer autant de macro variable qu'il y a de données (soit 9 = a, b, c, rr, ss, tt, yy, vv, ww). pour prendre les données de chaque colonne je fais donc : Code :
soleil1 is a soleil2 is b soleil3 is c Maintenant je souhaite faire la meme chose pour les colonnes "tata" et "titi" : jaimerais donc savoir ce que je dois faire pour ne pas avoir 3 fois le meme programme ? autrement dit peut on mettre une macro var dans call symput qui permettra de changer automatiquement le nom de la colonne à prendre en compte et le nom des macro variable. Merci d'avance pour votre aide. |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() |
tu peux utiliser la proc contents pour créer une table qui contient les noms des variables de ta table, que tu trransforme après en macro variable.
Pour chaque macro variable créée au dessus tu exécutes ton code.
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
|
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() ![]() |
Exactement, tu créé la table avec
proc contents data= out= tu fais le call symput pout récupérer les nom de variables call symput('var'||left(_n_),(trim(varname))); if fin tehn call symput('nb_var',_n_); tu met ton précédent programme dans une boucle %do j=1 %to &nb_var juste avant %do i=1 %to &nb; tu pourra mettre %put TABLE &&var&j ; |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 21 ![]() |
Bonsoir,
je souhaite que le nom des macro var soit différent entre les 3 variables : par exemple, les valeurs de la variables "toto" sont récupérées dans les macro var "soleil1, soleil2, soleil3" pour les valeurs de la variable "tata", les macro var seront "lune1 lune2 lune3" et pour les valeurs de la variable "titi", les macro var seront "terre1 terre2 terre3" je souhaite donc avoir : call symput(&zz,&var) pour changer à la fois le nom de la variable à prendre en compte mais également le nom des macro var => le programme ne fonctionne pas Merci. |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 21 ![]() |
Bonsoir,
Il me semble que ce que je souhaite mettre en place n'est pas possible. Je récupère donc au fur et à mesure les valeurs que je stocke dans des macro var à l'aide de call symput et je relance le pgm sur les autres variables (à l'aide d'une macro). |
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() ![]() |
c'est possible
Code :
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
|
||
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 21 ![]() |
Bonsoir,
Merci ! j'ai ajouté "&i" dans "%put Affichage &var&i IS &&&var&i"; ainsi on a bien une macro var pour chaque donnée mais pour récupérer l'info dans une table avec symget ça ne fonctionne, il met à blanc : data tab; donnee1=symget("tata1"); run; Merci encore pour votre aide. |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() ![]() |
Le symget tu le fais dans la macro ou en dehors?
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
|
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 21 ![]() |
je le fais en dehors mais je crois qu'effectivement le pb vient de là
|
|
|
00
|
|
|
#10 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 21 ![]() |
je l'ai mis à l'interieur de la macro mais ça ne fonctionne toujours pas...
la solution finale (avant que tu ne trouves comment faire) que j'avais retenu est : Code :
|
||
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() ![]() |
Que veux tu faire?
Est ce que tu peux m'envoyer un extrait de la table tab pour que je vérifie le code?
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
|
|
|
00
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 21 ![]() |
voici la table sur laquelle j'ai fait le test :
livre cd dvd ; 44 125 90 12 5 10 500 1000 2000 ces 9 données je souhaite les mettre dans des macro var qui ont chacune un nom différent et ensuite je mets la valeur de toutes ces macro var dans une table (on a une macro var = une colonne, table que je transpose ensuite pour avoir 1 ligne = 1 macro var) je ne sais pas si suis claire... |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() ![]() |
Je ne comprends pas pourquoi :
table => macro variabel => créer une nouvelles tables Tu ne peux pas transposer la table dés le début? Je ne sais pas si j'ai bien compris==> tu veux créer autant de variavles que de tables (une table par variable)?
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
|
|
|
00
|
|
|
#14 | |
|
Membre chevronné
![]() ![]() |
Citation:
A partir de ton exemple, peux tu nous montrer la table que tu souhaite avoir en sortie ? |
|
|
|
00
|
|
|
#15 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 21 ![]() |
je veux créer autant de macro variable qu'il existe de données
dans mon exemples il y a 9 données donc je crée 9 macro variables et ces macro var sont regroupées par type de colonne => d'ou un "numéro" commun pour les reconnaitre et une fois que toutes ces macro variables sont créées je les mets dans une table => pour obtenir une ligne = 1 macro variable mais dans le pgm que j'ai fait je n'ai pas réussi à changer à chaque fois le nom de la macro var, je les récupère donc puis les écrase au fur et à mesure il faudrait lancer le pgm pour vous permettre de mieux voir ce que j'ai in fine car je ne sais pas si j'ai été claire... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com