Bonjour ,
Je souhaiterais l'avis d'un spécialiste car je m'arrache les cheveux pour des déclarations de variables . Je veux que avoir une variable qui aura comme valeur :
avec un espace .jour jour
Voici deux code SAS bateau :
Code SAS : 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 %let jour = "jour jour"; %let jour2 = 'jour jour'; %let jour3 = 'jour'; %let jour4 = "jour"; %let jour5 = "jour jour"n; %let jour6 = 'jour jour'n; %let jour7 = 'jour'n; %let jour8 = "jour"n; %put &jour &jour2 &jour3 &jour4 &jour5 &jour6 &jour7 &jour8 ; /* VS */ data _null_; call symputx('jour10','jour'); call symputx('jour11','jour jour'); call symputx('jour12',"jour"); call symputx('jour13',"jour jour"); run; %put &jour10 &jour11 &jour12 &jour13
Sortie de journal/log SAS :
Code SAS log : 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 NOTE: Writing TAGSETS.SASREPORT13(EGSR) Body file: EGSR 22 23 GOPTIONS ACCESSIBLE; 24 %let jour = "jour jour"; 25 %let jour2 = 'jour jour'; 26 %let jour3 = 'jour'; 27 %let jour4 = "jour"; 28 %let jour5 = "jour jour"n; 29 %let jour6 = 'jour jour'n; 30 %let jour7 = 'jour'n; 31 %let jour8 = "jour"n; 32 33 %put &jour &jour2 &jour3 &jour4 &jour5 &jour6 &jour7 &jour8 ; SYMBOLGEN: Macro variable JOUR resolves to "jour jour" SYMBOLGEN: Macro variable JOUR2 resolves to 'jour jour' SYMBOLGEN: Macro variable JOUR3 resolves to 'jour' SYMBOLGEN: Macro variable JOUR4 resolves to "jour" SYMBOLGEN: Macro variable JOUR5 resolves to "jour jour"n SYMBOLGEN: Macro variable JOUR6 resolves to 'jour jour'n SYMBOLGEN: Macro variable JOUR7 resolves to 'jour'n SYMBOLGEN: Macro variable JOUR8 resolves to "jour"n "jour jour" 'jour jour' 'jour' "jour" "jour jour"n 'jour jour'n 'jour'n "jour"n 34 35 data _null_; 36 37 call symputx('jour10','jour'); 38 call symputx('jour11','jour jour'); 39 call symputx('jour12',"jour"); 40 call symputx('jour13',"jour jour"); 41 42 run; NOTE: DATA statement used (Total process time): real time 0.00 seconds cpu time 0.00 seconds 2 The SAS System 10:51 Monday, November 27, 2017 43 44 %put &jour10 &jour11 &jour12 &jour13; SYMBOLGEN: Macro variable JOUR10 resolves to jour SYMBOLGEN: Macro variable JOUR11 resolves to jour jour SYMBOLGEN: Macro variable JOUR12 resolves to jour SYMBOLGEN: Macro variable JOUR13 resolves to jour jour jour jour jour jour jour jour 45 46 GOPTIONS NOACCESSIBLE; 47 %LET _CLIENTTASKLABEL=; 48 %LET _CLIENTPROJECTPATH=; 49 %LET _CLIENTPROJECTNAME=; 50 %LET _SASPROGRAMFILE=; 51 52 ;*';*";*/;quit;run; 53 ODS _ALL_ CLOSE; 54 55 56 QUIT; RUN; 57
Si j'utilise le %let ma valeur sera :
ou bien"jour jour"
avec le call symput(s) :'jour jour'
C'est la merde quand même ces quotes dans le %let quand on doit utiliser des noms répertoires avec espaces !jour jour
Pour cela que je me méfie de %let comme la peste et que j'utilise le call symput(s) . A moins d'une solution de contournement ?
Partager