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 12/03/2011, 12h50   #1
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 961
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 961
Points : 4 668
Points : 4 668
Par défaut Différence entre %STR et %QUOTE

Bonjour,
Je n'arrive pas à comprendre la différence exacte entre les fonctions %STR et %QUOTE. Pourriez-vous m'éclairer?
Merci
__________________
Les balises code
FAQ SAS
Rubrique SAS

Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2011, 16h32   #2
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
Salut Fabrice

%str masque la mnémonique à la compilation alors que %quote la masque à l'exécution.

Généralement le passage de paramètre utilise le %quote.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/03/2011, 22h57   #3
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 961
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 961
Points : 4 668
Points : 4 668
Salut,
C'est bien ce qui me semblait.
Quel est alors le but d'utiliser %STR?
As-tu un exemple explicitant l'utilité du %STR par rapport au %QUOTE?
Merci
__________________
Les balises code
FAQ SAS
Rubrique SAS

Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2011, 11h28   #4
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Pour faire court : sans macro-programme, pas de différence notable entre %STR et QUOTE. C'est justifié par un enchaînement instantané de la compilation et de l'exécution.
Par exemple :
Code :
1
2
%LET pr = PROC PRINT %STR(;) RUN %STR(;) ;
%LET pr = PROC PRINT %QUOTE(;) RUN %QUOTE(;) ;
Les deux macro-fonctions masquent toutes deux le sens du point-virgule et permettent de l'intégrer à la valeur de la macro-variable.

Par contre, dans un macro-programme, on distinguera les caractères qui sont à bien interpréter lors de la compilation (pure syntaxe, les macro-variables n'ayant pas encore de valeurs) et lors de l'exécution.
Code :
1
2
3
4
5
6
7
8
9
10
11
%MACRO combien (TABLE, condition) ;
PROC SQL NOPRINT ;
  SELECT COUNT(*) INTO : nb
  FROM &TABLE
%IF %QUOTE(&condition) NE %THEN %DO ;
  WHERE &condition
%END ;
   ;
QUIT ;
%PUT il y a &nb observations %STR(;) la condition était : &condition ;
%MEND combien ;
Dans le %PUT, il faut un %STR car le point-virgule à masquer est visible dès la compilation.
Dans la condition, il faut bien prévoir un masquage. Imaginons que l'appel soit :
Code :
%combien (sashelp.class, sex ne "F")
La condition qu'aurait à évaluer le compilation macro deviendrait
%IF sex ne "F" NE %THEN ...
ce qui n'a aucun sens (en tout cas pas celui qu'on voudrait !).
Mais à la lecture du code compilé, aucune erreur n'est à craindre : il faut donc faire le masquage à l'exécution, quand la macro-variable prendra sa valeur.

Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/03/2011, 12h53   #5
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 961
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 961
Points : 4 668
Points : 4 668
Merci Olivier pour cet éclaircissement!
Si on remplace, dans ton exemple, le %STR par un %QUOTE, ça ne marche pas!
Cela s'explique par le fait que %QUOTE est directement exécuté lors de la phase de compilation du macro-programme contrairement au %STR qui lui est juste compilé? ... c'est bien ça?
Merci
__________________
Les balises code
FAQ SAS
Rubrique SAS

Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 13h24   #6
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Citation:
Envoyé par fafabzh6 Voir le message
Si on remplace, dans ton exemple, le %STR par un %QUOTE, ça ne marche pas!
Oui, dans l'exemple, on ne peut pas s'en sortir avec une seule macro-fonction (soit %STR, soit %QUOTE) ; les deux ont leur utilité.
Citation:
Envoyé par fafabzh6 Voir le message
Cela s'explique par le fait que %QUOTE est directement exécuté lors de la phase de compilation du macro-programme contrairement au %STR qui lui est juste compilé?
A la compilation, seule la fonction %STR fait son office de masquage. %QUOTE est inactive, on peut même dire ignorée. A la fin de la compilation, le macro-programme est stocké (dans un catalogue SASMACR) et tous les caractères masqués par %STR sont bien planqués. %QUOTE n'a encore servi à rien.
Dans un 2e temps, lors de l'appel du macro-programme, on ressort la version compilée des oubliettes. Les paramètres prennent leurs valeurs, et le code est réellement exécuté. C'est à ce moment-là qu'intervient %QUOTE, pour cacher des caractères gênants dans la syntaxe après valorisation des paramètres.
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/03/2011, 13h33   #7
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 961
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 961
Points : 4 668
Points : 4 668
Superbe
__________________
Les balises code
FAQ SAS
Rubrique SAS

Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 15h35   #8
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
J'espere qu'on se verra du 13-14 Octobre pour parler de tout ça
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 17h21   #9
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 961
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 961
Points : 4 668
Points : 4 668
Bonne idée de présentation ... je vais peut être la soumettre .... ça pourrait intéresser du monde!
__________________
Les balises code
FAQ SAS
Rubrique SAS

Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 17h30   #10
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Ah bon ?
Il y a encore des présentations qui ne sont pas du pur marketing au SAS Forum ?
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 17h43   #11
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 961
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 961
Points : 4 668
Points : 4 668
Marketing pas que ... en regardant les sessions prévues .... dommage que pour Las Vegas ça soit trop tard, les sessions sont plus nombreuses ... j'aurais tenté ma chance .... il m'en aurait fallu beaucoup d'ailleurs pour espérer être pris sur la présentation de la différence entre le %SRT et le %QUOTE .... peut être un peu juste ... quoique!
__________________
Les balises code
FAQ SAS
Rubrique SAS

Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.
fafabzh6 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 00h27.


 
 
 
 
Partenaires

Hébergement Web