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 :

call symput et macro-variable


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 157
    Points
    16 157
    Par défaut call symput et macro-variable
    Bonjour,
    J'ai un petit souci concernant l'utilisation du CALL SYMPUT.
    Quand je fais ceci :
    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
    DATA base;
    INPUT X Y;
    CARDS;
    1 10
    2 3
    ;
    %LET var11=5;
    %LET var12=6;
    %LET var21=2;
    %LET var22=3;
    DATA base2;
    	SET base;
    	v1=symget("var1"||left(put(_N_,4.)));
    	v2=symget("var2"||left(put(_N_,4.)));
    RUN;
    Il n'y a naturellement aucun problème.

    Mais quand je veux automatiser la procédure en faisant varier, ça ne marche pas. Voilà en gros ce que je veux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    %MACRO test;
    DATA base3;
    SET base;
    %DO i=1 %TO 2;
    v&i=symget("var"||&i||left(put(_N_,4.)));
    %END;
    RUN;
    %MEND test;
    %test;
    Le bug vient du call symput qui n'a pas l'air d'apprécier les références aux macro-variables!

    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    %MACRO test;
    DATA base3;
    SET base;
    %DO i=1 %TO 2;
    v&i=symget("var"||compress("&i")||left(put(_N_,4.)));
    %END;
    RUN;
    %MEND test;
    %test;

  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 157
    Points
    16 157
    Par défaut
    Merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/04/2015, 17h26
  2. Call symput en macro
    Par Billou265 dans le forum Macro
    Réponses: 2
    Dernier message: 15/04/2010, 11h37
  3. [Macro] la macro call symput
    Par r_dani dans le forum Macro
    Réponses: 2
    Dernier message: 17/10/2008, 15h03
  4. Réponses: 4
    Dernier message: 10/07/2008, 15h51
  5. macro avec call symput
    Par kabstat dans le forum Macro
    Réponses: 14
    Dernier message: 04/07/2008, 23h08

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