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 :

Attribuer un format via une macro-variable, possible?


Sujet :

Macro

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Attribuer un format via une macro-variable, possible?
    Bonjour à tous !

    J'écris ici car je suis confronté à un problème dont je ne trouve pas la solution sur le net.
    Voilà, j'écris un macro-programme et, à un moment donnée, je dois appliquer des formats préalablement définis.

    Lorsque je tape :

    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
    data fileout.AE;
    set fileout.AE;
    	format AEACN $CYN.;
    run;
     
    Ca marche sans souci (CYN étant un des formats prédéfinis appliqué à la variable AEACN de la table AE).
     
    Mais lorsque je tape : 
     
    %let col_name1=AEYN;
    %let cl_name1=CYN;
    %let j=1;
    %let test=&&cl_name&j;
    %put $&test..;
     
    data fileout.AE;
    	set fileout.AE;
    	attrib	&&col_name&j  format = $&test..;
    run;
    Ca n'aime pas du tout et la log dit : "ERROR 48-59: The format CYN was not found or could not be loaded."
    Alors que le put me donne bien $CYN. (et que ce format existe bien, cf la 1ère étape data)

    Ma question est : peut-on attribuer un format via une macro-variable?

    Merci de votre aide !

    Bien sûr, je suis à l'écoute si vous avez des questions .

    Bien à vous,
    Bruno

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 482
    Points : 1 547
    Points
    1 547
    Par défaut
    Citation Envoyé par BrunoMerlin Voir le message
    Ma question est : peut-on attribuer un format via une macro-variable?
    Oui tu peux et tes démarches sont correcte mais je ne sais pas d'où vient l'erreur ?
    Voici cet exemple :
    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
     
    proc format;
    value $CYN
      'M' = 1  
      'F' = 2 ;
    run;
     
        %let col_name1=AEAYN;
        %let cl_name1=CYN;
        %let j=1;
        %let test=&&cl_name&j;
        %put $&test. ;
     
        data class;
        set sashelp.class;
        attrib &&col_name&j format = $&test.. ;
    	&&col_name&j=sex ;
        run;
    Cdt Ward

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Salut Ward et merci pour ta réponse !

    Le format est bien créé. Même si je le crée "à la main", j'ai le même message d'erreur.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    proc format;
    	value $test	
    		"0" = "No"
    		"1" = "Yes";
    run;
    /*Je copie juste une table pour les besoins de mon test*/
    data AE;
    	set fileout.AE;
    run;
    data AE;
    	set AE;
    	attrib AEYN informat=best32.
                                      format=$test. ;
    run;
    SAS donne la log suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "WARNING: Variable AEYN has already been defined as numeric.
    ERROR 48-59: The format TEST was not found or could not be loaded."
    Je reposterai ici dès que je trouve !

    A+,
    Bruno

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    J'ai trouvé la source du problème : le type de données !

    A savoir, le format à appliquer était de type numérique, les variables de type caractère !!

    Merci pour votre aide

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/02/2014, 09h39
  2. Format date pour une macro variable
    Par idhmida dans le forum Macro
    Réponses: 5
    Dernier message: 18/12/2012, 19h58
  3. Générer un nom de variable unique via une macro
    Par Drannor dans le forum Débuter
    Réponses: 4
    Dernier message: 04/03/2011, 14h43
  4. [AC-2007] Accéder à une variable via une Macro
    Par damsmut dans le forum VBA Access
    Réponses: 4
    Dernier message: 07/01/2010, 11h02
  5. Réponses: 2
    Dernier message: 04/06/2007, 16h39

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