Bonjour,
je poste la question dans la section "Débutez" car elle concerne le fonctionnement de base des macro-variables.
J'exécute le code suivant une première fois :
J'obtiens dans la log :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 option mlogic mprint symbolgen; dm log 'clear'; data _null_; set MyTable; %global toto; call symputx('toto',v_); %put &toto; run;
J'éxécute à nouveau le même code sans aucune modification et j'obtiens alors dans la log :49 option mlogic mprint symbolgen;
50 dm log 'clear';
51 data _null_;
52 set MyTable;
53 %global toto;
54 call symputx('toto',v_);
55 %put &toto;
SYMBOLGEN : Macro variable TOTO traitée dans
56 run;
Quelqu'un pourrait-il m'aider à comprendre pourquoi le même code exécuter deux fois produit des résultats différents ?58 option mlogic mprint symbolgen;
59 dm log 'clear';
60 data _null_;
61 set MyTable;
62 %global toto;
63 call symputx('toto',v_);
64 %put &toto;
SYMBOLGEN : Macro variable TOTO traitée dans 4
4
65 run;
Je suis vraiment perplexe car j'ai développé une macro qui produit des résultats différents dans la log à plusieurs exécutions du même code sans modification des données. J'hésite à arrêter les macros et à repasser au sas base.
Quand j'initialise la macro-variable toto à zéro alors la call symputx ne lit plus la valeur 4 en table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 data _null_; set MyTable; %global toto; %let toto=0; call symputx('toto',v_); %put &toto; run;Alors que v_ prend la valeur 4 pour tous les enregistrements de la table.67 data _null_;
68 set MyTable;
69 %global toto;
70 %let toto=0;
71 call symputx('toto',v_);
72 %put &toto;
SYMBOLGEN : Macro variable TOTO traitée dans 0
0
73 run;
Partager