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 :

Création d'une macro-variable composée de deux macros variables


Sujet :

Macro

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Création d'une macro-variable composée de deux macros variables
    Bonjour,

    J'essaie d'automatiser un code qui permet, à partir d'une liste de variables, de décomposer chacune d'entre elles en plusieurs variables binaires.
    Exemple : Variable varA va génerer VarA1 jusqu'à VarA20
    Variable VarB va générer VarB1 à VarB20 etc...

    J'ai créé le code suivant :
    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
    %macro TDC (listevar, prefixe);
    	%let i=;
    	%let j=1;
    	%let var = %scan(&listevar,&j," ");
    	%let pref = %scan(&prefixe,&j," ");
     
    	%do %while (&j<=1);/*43*/
    		proc univariate data=sortie.base_acm noprint;
    			output out=&var PCTLPTS=0 TO 100 BY 5 PCTLPRE=&pref;
    			var &var;
    		run;
     
    		%do i=0 %to 100 %by 5;
    			%let source=;
    			proc sql;
    				select &pref.&i into : source from &var;
    			quit;
     
    			%let &pref.&i = &source;
     
    			%put &pref.&i = &&pref.&i;
    		%end;
    prefixe = une liste de préfixe qui composera le nom de mes variables binaires
    listevar = une liste de variable à décomposer.

    Mon problème concerne : %let &pref.&i = &source;
    qui me renvoie une valeur vide lorsque je fais %put &pref.&i = &&pref.&i;

    J'ai essayé avec un call symput, call symputx (les deux dans des "data _null_"), un %let et rien de fonctionne.

    Ma collègue a eu le même souci et n'a pas trouvé de solution.

    Merci d'avance pour votre aide

  2. #2
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    Ci dessous un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    %macro t;
    %let t=a;
    %do i=1 %to 3;
    	%let &t.&i=&i;
    %end;
    %do i=1 %to 3 ;
    	%put &i &&&t.&i;
    %end;
    %mend;
    %t;

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci bahraoui!
    En effet, j'ai rajouté des "&" à plusieurs endroits et je n'ai plus de souci.
    Par contre, je ne comprends pourquoi il faut mettre "&&&" là où d'habitude seul "&&" fonctionne...
    Merci encore!

  4. #4
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    et pourquoi pas un seul & et non pas deux.??? en effet il faut comprendre la résolution des & par le compilateur macro.
    je t'invite à regarder ce PDF.

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

Discussions similaires

  1. Variable croisée de deux autres variables
    Par cococmoi dans le forum Débutez
    Réponses: 1
    Dernier message: 13/09/2012, 14h48
  2. Réponses: 0
    Dernier message: 29/12/2011, 17h35
  3. Création d'une palette de composants personelle
    Par maatrihard dans le forum NetBeans Platform
    Réponses: 8
    Dernier message: 08/07/2009, 15h41
  4. Réponses: 3
    Dernier message: 18/04/2008, 14h28
  5. Réponses: 6
    Dernier message: 02/04/2007, 16h34

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