|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Bonjour.
J'ai la macro suivante : Code :
Code :
Comment est-il possible de préciser à une macro qu'elle doit renvoyer un résultat quand on veut l'utiliser ainsi : J'ai essayé en rajoutant %let devant la variable "return_value" lors de l'assignation, mais rien. Elle reste vide. Merci d'avance. |
||||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() |
Je ne pense pas que tu peux faire un truc comme ça sur SAS.
Je te conseille de déclarer une macro variable global Je n'ai pas testé si cela marche pas d'exemple d'appl Code :
|
||
|
|
00
|
|
|
#3 | ||
![]() ![]() Inscription : septembre 2006 Messages : 1 973 ![]() |
Bonjour,
As-tu ensuite exécuté ta macro? Le code suivant marche très bien chez moi et m'affiche "Hello,World" Code :
|
||
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() |
La macro &return_value est vide !!!!
L'affichage que tu vois c'est le résultat du %put "&tmp1,&tmp2"; Code :
|
||
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Oui oui, j'ai bien exécuté. La macro affiche bien le résultat, mais celui-ci n'est pas assigné à la variable return_value.
Si on fait ensuite : Dans le log, la valeur est nulle. C'est une ligne vide. Je vais voir ce que donne la manip de Bahraoui. Par contre je suis surpris car j'ai déjà vu ce style d'assignation. Notamment avec les macros systèmes du type %eval. Il est possible d'assigner le résultat d'une macro à une variable, sans passer par une variable globale, l'exemple suivant le montre : Code :
75 EDIT : au fait, le code source de cette macro %eval est-il disponible quelque part ? Ca permettrait de savoir comment gérer l'assignation du résultat d'une macro... |
||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() |
%eval c'est une macro SAS!!
Pour le passage de paramètre entre macro j'utilise toujours les macros variables ou des tables SAS. Cordialement. |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Je sais bien que c'est une macro SAS. Mais si il est possible de l'utiliser ainsi, il doit bien y avoir un moyen d'attribuer le résultat à une autre macro-variable de la même façon.
Idem pour le transfert de paramètres. Mais en l'occurrence, si je met return_value en paramètre de la macro, il n'est alors plus possible de modifier cette macro variable dans la macro elle-même. |
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() ![]() |
Tu peux modifier la valeur de ta macro variable n'importe quand.
Code :
|
||
|
|
00
|
|
|
#9 | |||
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
Citation:
Dans le code que tu as affiché, en effet. Mais l'autre jour, je suis tombé sur un exemple où ce n'était pas possible. J'étais donc passé par autre chose, il devait y avoir quelque chose de particulier... Edit : ça y est ! En fait, pour renvoyer le résultat de la macro il suffit de préciser ce que l'on veut renvoyer sans aucune commande SAS. Par exemple dans le code que j'avais : Code :
|
|||
|
|
20
|
|
|
#10 |
|
Membre Expert
![]() ![]() |
Cool, je ne connaissais pas ce moyen pour récupérer le réusltat d'une macro.
Cordialement. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com