Bonjour à tous,
je viens vers vous pour un problème qui je suis certain est tout bête à résoudre, mais je bloque depuis un moment dessus donc je veux bien des avis extérieurs.
1) J'ai créé 10 macro variables de la forme &ma_mv_i, avec i allant donc de 1 à 10.
2) je veux créer une colonne dans ma table SAS avec l'idée que la ligne n prendra comme donnée la valeur de la macro variable &ma_mv_n.
j'ai testé ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 %let i=0; data matable; set masource; format new_var 11.; %let i = %EVAL(&i+1); new_var = &&ma_mv_&i; run;
==> Résultat que je comprends pas, &i ne s'incrémente pas. il vaut 2 en sortie de programme alors que je pensais qu'il vaudrait 10.
j'ai testé autre chose :
==> Erreur aussi, et en fait je pense comprendre que c'est dû au fait que CALL SYMPUTX ne crée la MV &i qu'à la fin de l exécution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 data matable; set masource; format new_var 11.; call symputx ('i',_N_); new_var = &&ma_mv_&i; run;
Voilà où j en suis de mes réflexions, si vous des pistes de solutions, je suis preneur
Bonne journée et merci d'avance
Partager