Bonjour,
j'ai besoin de créer une macro variable &NBTOTAL contenant la valeur d'une variable TOTAL, mais... pas moyen.
J'ai essayé de créer la macro var dans la même étape data que la création de la variable TOTAL : ça ne marche pas ; dans une étape data _null_ après : ça ne marche pas non plus. Dans le 1er ou le 2nd cas, la log m'affiche :
Je pense que le problème vient du fait que je me trouve dans une boucle %do %to, mais je ne vois pas comment y remédier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part WARNING: Apparent symbolic reference NBTOTAL not resolved.
Je ne vois pas comment faire autrement qu'un call symput. Peut-être un %let automatisé ? Mais je ne sais pas faire. Et je dois absolument créer ce &NBTOTAL dans la boucle, car j'en ai besoin pour un export (qui interviendrait juste avant le %MEND mais que je ne vous ai pas mis ici), et il va varier d'une table à une autre (principe de la boucle).
Voilà mon code actuel:
Si vous avez des pistes pour m'aider, je suis preneuse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 %MACRO export_methodo; data _null_; /* création de &nbr contenant le nombre total de tables */ run; %do i=1 %to &nbr; data tab2; set tab; by Var; format TOTAL BEST8. Eff_obs $10.; if first.Var then do; TOTAL = PA + NSPS + NSPR + NSP + N ; Eff_obs = trim(left(TOTAL))!!"/8770" ; call symput ('NBTOTAL',TOTAL); %put &NBTOTAL ; end; run; data _null_; set tab2; by Var; if first.Var then call symput ('NBTOTAL',TOTAL); %put &NBTOTAL; /*drop TOTAL;*/ run; %MEND export_methodo;
Alexandra
Partager