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 :

Macro fonction avec une variable de type liste comme paramètre d'entrée


Sujet :

Macro

  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Macro fonction avec une variable de type liste comme paramètre d'entrée
    Bonjour à tous,
    J’ai compilé une macro fonction qui prend deux paramètres %macro test (t1=, t2=) ;
    L’un de ces deux paramètres est une macro variable sous la forme d’une liste &cumul_YM que j’ai crée avant.
    Un %put me donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     '201201','201202','201203','201204','201205','201206','201207','201208'
    comme valeur de ma macro variable cumul_YM.
    J’implémente ma macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %test (t1=(&cumul_YM), t2='cumul')
    et je l’appelle.
    Le problème c’est que ça bloque dans l’une des requêtes sql de ma macro %test et SAS me renvoie cette erreur.
    1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      ('201201','201202','201203','201204','201205','201206','201207','201208')
          --------                                                               -
          79                                                                     22
                                                                                 76
     
    ERROR 79-322: Expecting a SELECT.
     
    ERROR 22-322: Syntax error, expecting one of the following: une chaîne entre guillemets, !, !!, &, *,
                  **, +, ',', -, /, <, <=, <>, =, >, >=, ?, AND, AS, BETWEEN, CONTAINS, EQ, EQT, FORMAT,
                  FROM, GE, GET, GT, GTT, IN, INFORMAT, INTO, IS, LABEL, LE, LEN, LENGTH, LET, LIKE, LT,
                  LTT, NE, NET, NOT, NOTIN, OR, TRANSCODE, ^, ^=, |, ||, ~, ~=.
     
    ERROR 76-322: Syntax error, statement will be ignored.
    Donc je me demande ce que je dois faire quand j’ai une liste comme paramètre d’une macro fonction ?
    Merci.

  2. #2
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 30
    Points : 30
    Points
    30
    Par défaut
    Bonjour marwa_7up.

    Peux tu nous copier coller ta requête SQL sur laquelle SAS affiche l'erreur.

    tu fais un SELECT sur la liste que tu as créée ?

    '201201','201202','201203','201204','201205','201206','201207','201208' correspondent à des noms de variables ?

    Merci

  3. #3
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Oui oui tout à fait je fais un select sur la liste voici un bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PROC SQL;
    		Create Table ticket as
    		Select *
    		From lib.Tickets_traite
        		Where  Date_Transact_YM in (&t1);
    QUIT;

  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
    Hello,
    si tu essaies sans les parenthèses ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PROC SQL;
    		CREATE TABLE ticket AS
    		SELECT *
    		FROM lib.Tickets_traite
        		WHERE  Date_Transact_YM IN &t1;
    QUIT;
    ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    %test (t1=&cumul_YM , t2='cumul')
     
    PROC SQL;
    		CREATE TABLE ticket AS
    		SELECT *
    		FROM lib.Tickets_traite
        		WHERE  Date_Transact_YM IN (&t1);
    QUIT;
    %mend;
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  5. #5
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Oups la gaffe !! ça marche comme sur des roulettes quand j'enlève les parenthèses merci s_a_m

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/05/2014, 12h24
  2. Problème avec une variable de type objet
    Par mrocks dans le forum C#
    Réponses: 7
    Dernier message: 09/05/2009, 22h27
  3. problème avec une variable de type string
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2007, 14h53
  4. Réponses: 15
    Dernier message: 10/05/2007, 13h36
  5. Créer une fonction avec une variable
    Par Ricou13 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/01/2007, 23h51

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