Bonjour,
J'ai un soucis et j'aimerai comprendre mieux la façon dont fonctionnent les macro-variables et macro-fonctions dans un programme macro.
En fait j'ai un soucis, que j'ai réussis à résoudre, avec un macro-programme. Simplement je ne comprends pas pourquoi une solution fonctionne mais pas les autres.
Voilà le premier macro-programme que j'ai fait (simplifié à l'extrême dans l'exemple) :
&var. = "" en FALSE alors que c'est vrai. Je sais que les macros-variables ne sont rien de plus que du texte, mais comment demander si une variable caractère est en données manquantes ?
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 data table; v2 = ""; run; option mprint mlogic; %macro test(var=); data table; set table; %if &var. = "" %then %do; v3 = 1; %end; run; %mend; %test(var=v2);
J'ai essayé sans les guillemets :
Sans succès.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 %macro test(var=); data table; set table; %if &var. = %then %do; v3 = 1; %end; run; %mend; %test(var=v2);
Et j'ai enfin réussis mais c'est en ne mettant pas mes %IF en macro-fonctions :
Pourtant j'avais cru comprendre qu'il fallait utiliser des macro-fonctions quand on s'intéressait à des macro-variables (ici &var.). Pourquoi ne faut-il pas de % ? Et pourquoi dans d'autres cas il en faut un ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 %macro test(var=); data table; set table; if &var. = "" then do; v3 = 1; end; run; %mend; %test(var=v2);
Je crois avoir déjà parlé un peu de ça dans un ancien sujet mais visiblement je n'ai toujours pas compris.
Merci,
alers
Partager