Bonjour,
je souhaite utiliser des macro variable créées auparavant ,dans un programme macro par la suite , de ce genre,
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 /* mon objectif est de ne changer que c'est deux premiers paramètres selon la date du traitement*/ %let param1= condition1; %let param2= condition2; .... ..... ..... data _null_; if ¶m1 = "condition1" then do; call symput (par1 , tab1) ; /* tab1 2 3 4 5 6 sont des tabels */ call symput (par2, tab2); call symput (par3, tab3); call sumput (par4, tab4); call symput (par5, tab5); ... ... ... end; if ¶m1= "condition2" then do; call symput (par1 , tab4) ; call symput (par2, tab5); call symput (par3, tab6); ... ... ... end; if ¶m1 = ... then do; ... ... ... end; run; %macro mac ( par1a= , par2a= , par3a= , tab=); proc sql; select * from par1 .........quit; data &tab.; set &par2. ..... .... run; .... ... . . . /*suite des étapes où j'utilises les autres tables reférencées dans les call symput */ %mend; %mac ( par1a= &par1., par2a= &par2. , par3a= &par3., tab= autretable1 ); %mac ( par1a= &par4., par2a= &par5. , arg3a= &par6. n tab=autretable2 );
ça n'a pas marché, j'ai essayé avec blobal et ça ne marche pas non plus;
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 %global par1; %global par2; %global par3; ... ... ... %let param1= condition1; %let param2= condition2; .... ..... ..... data _null_; if ¶m1 = "condition1" then do; call symput (par1 , tab1) ; /* tab1 2 3 4 5 6 sont des tabels */ call symput (par2, tab2); call symput (par3, tab3); call sumput (par4, tab4); call symput (par5, tab5); ... ... ... end; if ¶m1= "condition2" then do; call symput (par1 , tab4) ; call symput (par2, tab5); call symput (par3, tab6); ... ... ... end; if ¶m1 = ... then do; ... ... ... end; run; %macro mac ( par1a= , par2a= , par3a= , tab=); proc sql; select * from par1 .........quit; data &tab.; set &par2. ..... .... run; .... ... . . . /*suite des étapes où j'utilises les autres tables reférencées dans les call symput */ %mend; %mac ( par1a= &par1., par2a= &par2. , par3a= &par3., tab= autretable1 ); %mac ( par1a= &par4., par2a= &par5. , arg3a= &par6. n tab=autretable2 );
merci de votre aide surtout que je ne suis pas sure de bien expliquer mon problème, je suis NOVICE en SAS.
Partager