Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Macro
Macro Forum d'entraide sur le langage Macro de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/06/2008, 23h44   #1
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 185
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 185
Points : 2 724
Points : 2 724
Par défaut [SAS 9.1] Pas d'affectation logique pour nom de fichier _TEMP_.

Bonsoir,
Je débute sur SAS et je n'arrive pas à intégrer ma référence annéemois ('200805') dans le nom de mon fichier xls.
Une petite idée ?


Code :
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
 
libname  LIBRARY   'D:\ANALYSE\FSFC\';
libname  ICI       'D:\ANALYSE\FSFC\DATA_TABLES';
libname  EXPORT1 oracle user=info password=info path='infc';
options sortpgm = sas;
 
%global anneemoisref;
%global ficref;
 
 
proc sql;
select ref 
into : anneemoisref 
from ici.ref where libref = 'ANNEEMOISREF';
run;
 
/* Conversion en xls des consos de MO en MCO */ 
call symput("ficref" , compress("D:\ANALYSE\FSFC\FIC\FIC2008\FICHSUP_MCO_MO_", &anneemoisref ,".xls"));
 
filename _temp_ &ficref;
ods noresults;
ods listing close;
ods html file=_temp_ rs=none style=minimal;
proc print data=Ici.'FSMCOCONSOMOAAAAMM'N noobs;
run;
ods html close;
ods results;
ods listing;
filename _temp_;
Voilà ce que j'obtiens comme erreur...
Citation:
86 ods html close;
87 ods results;
88 ods listing;
89 filename _temp_;
AVERTISSEMENT: Pas d'affectation logique pour nom de fichier _TEMP_.

90 call symput("ficref" , compress("D:\ANALYSE\FSFC\FIC\FIC2008\FICHSUP_MCO_MO_", &anneemoisref
----
180
90 ! ,".xls"));

ERREUR 180-322: Instruction incorrecte ou mal utilisée.

91 filename _temp_ &ficref;
AVERTISSEMENT: Pas d'affectation logique pour nom de fichier _TEMP_.
92 ods noresults;
93 ods listing close;
94 ods html file=_temp_ rs=none style=minimal;
NOTE: Ecriture du fichier corps HTML : _TEMP_
ERREUR: Pas d'affectation logique pour nom de fichier _TEMP_.
AVERTISSEMENT: Pas de fichier Corps. La sortie HTML ne sera pas créée.
95 proc print data=Ici.'FSMCOCONSOMOAAAAMM'N noobs;
96 run;

AVERTISSEMENT: Aucune destination de sortie active.
NOTE: La procédure PRINT a utilisé (Durée totale du processus) :
temps réel 0.01 secondes
temps processeur 0.01 secondes


97 ods html close;
98 ods results;
99 ods listing;
100 filename _temp_;
AVERTISSEMENT: Pas d'affectation logique pour nom de fichier _TEMP_
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 09h14   #2
Membre Expert
 
Inscription : mars 2005
Messages : 1 028
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 028
Points : 1 278
Points : 1 278
Envoyer un message via Yahoo à bahraoui
Bonjour,

tu ne peux appeler un call symput que dans une etape data;

tu peux créer ta macro variable de la manière suivante
Code :
1
2
3
4
 
%let anneemoisref=121221;
%let ficref= %NRBQUOTE(D:\ANALYSE\FSFC\FIC\FIC2008\FICHSUP_MCO_MO_)&anneemoisref.%NRBQUOTE(.xls);
%put &ficref;
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 09h50   #3
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 185
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 185
Points : 2 724
Points : 2 724
Merci beaucoup pour cette précision ... fondamentale et pour la fonction %NRBQUOTE que je ne connaissais pas encore.

Le résultat obtenu est le suivant
Citation:
%put _user_;
...
GLOBAL ANNEEMOISREF 200805
...
GLOBAL FICREF D:\ANALYSE\FSFC\FIC\FIC2008\FICHSUP_MCO_MO_200805.xls
La présence de  dans le résultat entre les termes de la concaténation m'a fait ajouter un %TRIM
J'obtiens bien ce que je veux :
Code :
1
2
3
4
5
6
7
8
240 %let ficref=
240! %TRIM(%NRBQUOTE("D:\ANALYSE\FSFC\FIC\FIC2008\FICHSUP_MCO_MO_)&anneemoisref.%NRBQUOTE(.xls"));
241 %put _user_;
...
GLOBAL ANNEEMOISREF 200805
...
GLOBAL FICREF D:\ANALYSE\FSFC\FIC\FIC2008\FICHSUP_MCO_MO_200805.xls
Grand Merci
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h06.


 
 
 
 
Partenaires

Hébergement Web