+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    novembre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2012
    Messages : 31
    Points : 4
    Points
    4

    Par défaut Macro SAS cherche erreur

    Bonsoir Cher internautes ,

    j'ai créer une macro toute simple mais je n'arrive pas a obtenir ce que je recherche!
    Si l'un de vous pourriez me corriger , ce serait fort sympatique

    Voici la macro :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    %macro ensmag ( mag, volumes) ;
    data malib.irism ;
    set malib.iris ;
    txpenetration = clients / menages ;
    if txpenetration<0 then txpenetration=0 ;
    where &mag ;
    run;
    proc sort data = malib.iris2 ;
    by descending txpenetration;
    run;
    data malib.irism;
    set malib.irism ;
    retain cumul 0;
    cumul= cumul + menages;
    run;
    data malib.irism;
    set malib.irism ;
    where cumul <= &volumes ;
    run;
    %mend  ;
     
    %ensmag ( mag="B" , volumes=36420) ;
    la variable volume est bien appliquée mais pas celle de mag .

    Il ne se preoccupe pas de selectionner Mag avec la modalité B.

    Merci par avance

  2. #2
    Membre chevronné
    Femme Profil pro
    SAS FRANCE - Support Clients France et Europe
    Inscrit en
    février 2010
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : SAS FRANCE - Support Clients France et Europe
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2010
    Messages : 256
    Points : 699
    Points
    699

    Par défaut

    Bonjour,

    Je pense que vous avez confondu :
    - le paramètre de la macro
    %ensmag ( mag="B" , volumes=36420) ;

    - et la requête
    WHERE &mag ;

    %ensmag ( mag="B" [...] indique que vous créez une macro-variable locale MAG dont la valeur est "B".

    WHERE &mag ; est traduit par
    WHERE "B" ;
    j'imagine que vous voulez plutôt
    where mag="B" ;


    Je dirais donc qu'il faut revoir la manière de coder le where pour qu'on est bien une condition testée, comme dans cet exemple :
    Code :
    1
    2
    3
    4
    5
    6
    7
    %macro m (n=);
    data _null_ ;
      set sashelp.class ;
      where name="&n" ;
    run ;
    %mend ;
    %m (n=Alice) ;
    Cordialement,
    Géraldine Cade-Deschamps
    Support Clients SAS

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •