IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macro Discussion :

Différence entre %STR et %QUOTE


Sujet :

Macro

  1. #1
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 219
    Points
    16 219
    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.

  2. #2
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    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é !

  3. #3
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 219
    Points
    16 219
    Par défaut
    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.

  4. #4
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    %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
    Bon courage.
    Olivier

  5. #5
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 219
    Points
    16 219
    Par défaut
    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.

  6. #6
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    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.
    Bon courage.
    Olivier

  7. #7
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 219
    Points
    16 219
    Par défaut
    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.

  8. #8
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Points : 1 489
    Points
    1 489
    Par défaut
    J'espere qu'on se verra du 13-14 Octobre pour parler de tout ça

  9. #9
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 219
    Points
    16 219
    Par défaut
    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.

  10. #10
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Ah bon ?
    Il y a encore des présentations qui ne sont pas du pur marketing au SAS Forum ?
    Bon courage.
    Olivier

  11. #11
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 219
    Points
    16 219
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Différence entre Stringvar et str
    Par Gamache dans le forum Tkinter
    Réponses: 2
    Dernier message: 26/02/2012, 19h30
  2. Différence entre un "bidouilleur" et un Pro ?
    Par christ_mallet dans le forum Débats sur le développement - Le Best Of
    Réponses: 290
    Dernier message: 28/11/2011, 10h53
  3. différence entre char a[20]="str" et char *a="str"
    Par iBen68 dans le forum Débuter
    Réponses: 4
    Dernier message: 31/10/2009, 03h22
  4. Différences entre jmp, jz, jnz, etc
    Par christbilale dans le forum Assembleur
    Réponses: 3
    Dernier message: 05/07/2002, 15h09
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo