Le forum du Master ESA économétrie et statistique appliquée - Université d'Orléans

Vous n'êtes pas identifié.

Annonce

Vous êtes sur le forum du master ESA !

Le site du master ESA - description de la formation, notes de cours, contacts... vient de déménager !!!

Venez visiter notre nouveau site : www.master-esa.fr

#1 28-05-2013 09:43:15

Oscar
Member
Date d'inscription: 27-12-2010
Messages: 117

Je ne comprends pas d'où provient l'erreur "ERROR: More positional..."

Bonjour!

J'essaye de soumettre le suivant code:

Code:

 %macro jointure (data1,data2,data3,variables,var_1);

proc sql;
    create table &data3 as
    select &variables
    from &data1 , &data2
    order by &var_1;
quit;

%mend jointure; 

%let variables=prenom1, nom1, pays1, prenom2, nom2, pays2;

%jointure (lib.maitre2,lib.ajout2,lib.joint,&variables,prenom);

et à la fin j'ai ça comme erreur:

ERROR: More positional parameters found than defined.

Je suis allé regarder sur internet, mais je ne trouve encore une solution... Merci!

Hors ligne

 

#2 28-05-2013 09:57:49

Oscar
Member
Date d'inscription: 27-12-2010
Messages: 117

Re: Je ne comprends pas d'où provient l'erreur "ERROR: More positional..."

En fait, je sais que mon problème provient de l'utilisation des "," (virgules) dans ma macro variable, et même, selon ce document:

http://support.sas.com/resources/papers … 8-2012.pdf , page 16, avant de la conclusion...

Mais j'arrive pas à faire marché la macro.....

Hors ligne

 

#3 28-05-2013 10:21:34

Oscar
Member
Date d'inscription: 27-12-2010
Messages: 117

Re: Je ne comprends pas d'où provient l'erreur "ERROR: More positional..."

Je viens de trouver une solutions provisoire:

Code:

%macro jointure (data1,data2,data3,var_1);

proc sql;
    create table &data3 as
    select *
    from &data1 , &data2
    order by &var_1;
quit;
%mend jointure; 
%jointure (lib.maitre2,lib.ajout2,lib.joint,prenom1);

J'ai enlevé les variables, et dans la partie SELECT du PROC SQL, j'ai mis une étoile "*".

Par contre, je préfère mettre des variables, si quelqu'un arrive, ou si j'arrive... merci de mettre une solution cool

Hors ligne

 

#4 28-05-2013 13:51:45

esa_sr
Administrator
Date d'inscription: 21-02-2007
Messages: 5898
Site web

Re: Je ne comprends pas d'où provient l'erreur "ERROR: More positional..."

oh le beau problème de quoting !

relisez attentivement les pages 412 à 415 de votre livre d'introduction à SAS préféré, vous comprendrez alors pourquoi votre journal vous a envoyé ce message et vous comprendrez aussi pourquoi mon programme fonctionne :

Code:

data toto;
input a b c ;
cards;
1 2 3
;

%macro oscar(var);
proc sql ;
select &var from toto;
quit;
%mend;

%oscar(%bquote(a,b,c));

vous pouvez reposer votre question sur www.sas-sr.com ?
je vous assure que vous aurez la même réponse mais ça pourra être utile à d'autres ;-)

Hors ligne

 

#5 28-05-2013 14:00:00

Oscar
Member
Date d'inscription: 27-12-2010
Messages: 117

Re: Je ne comprends pas d'où provient l'erreur "ERROR: More positional..."

Ah! Trop fort Mr SR, mais j'ai une autre solutions aussi! wink

Code:

 %macro jointure (data1,data2,data3,variables,var1);

    data _null_;
        call symput("variables",compress(&variables,'"'));
    Run;

    proc sql;
        create table &data3 as
        select &variables
        from &data1 , &data2
        order by &var1;
    quit;

%mend jointure; 

%let variables="prenom1, prenom2, nom1, nom2, pays1, pays2";

%jointure (lib.maitre2,lib.ajout2,lib.joint,&variables,prenom1);

Et ça marche aussi! Comme du Opus Focus!

ça marche, je vais poser cette question ce soir ... question pour un beau mercredi ?

Sinon merci aussi de votre réponse!

Hors ligne

 

#6 28-05-2013 20:10:52

esa_sr
Administrator
Date d'inscription: 21-02-2007
Messages: 5898
Site web

Re: Je ne comprends pas d'où provient l'erreur "ERROR: More positional..."

bizarre votre truc... habituez vous plutôt à gérer les problèmes de quoting plutôt que de passer par des trucs bizarres...

en fait, ce qui me gène le plus, c'est que votre jointure ne va correctement fonctionner que si vos deux tables ne présentent aucune variable en commun (mais bon, puisqu'il s'agit de réaliser un produit cartésien...)

Hors ligne

 

#7 28-05-2013 20:30:59

mohamed.lanjri
Member
Date d'inscription: 09-09-2011
Messages: 27

Re: Je ne comprends pas d'où provient l'erreur "ERROR: More positional..."

Merci mister Ringuedé pour la solution du problème de quoting! j'en ai déjà rencontré et j'ai du faire un bricolage à la marocaine de plusieurs lignes alors qu'il suffisait d'utiliser cette fonction qui va surement rendre mes programmes plus sexy!

Hors ligne

 

#8 28-05-2013 21:17:53

esa_sr
Administrator
Date d'inscription: 21-02-2007
Messages: 5898
Site web

Re: Je ne comprends pas d'où provient l'erreur "ERROR: More positional..."

mais lisez les pages 412 à 415 de mon bouquin au lieu d'inventer des solutions "à la marocaine" ;-)

un truc valable "à la marocaine", c'est le tajine, pas du code bizarre sous SAS

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

[ Generated in 0.010 seconds, 6 queries executed ]