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 13-01-2010 11:57:28

nizarcom
membre extérieur
Date d'inscription: 08-01-2009
Messages: 21

macro variables au niveau de datalines statement

Bjr tt le monde,

plz essayer de m'aider pour résoudre un porblème qui se rapporte à l'utilisation des macro variables, au niveau de l'etape datalines.

J'ai essayer de trouver des informations sur internet mais j'ai rien trouvé.

ma question est pourquoi le code suivant ne marche pas .

%let t1 = cfg25 ;
%let t2 = iam ;
%let t3 = adh ;


data Inst_Data_wo;
input InstType $ InstID $ Company $ ;
Mkt_P = ("P_" || InstID);
datalines ;
Stk &t1 &t1
Stk &t2 &t2 
Stk &t3 &t3
;
run ;



Alors que le résultat est :


Obs    InstType    InstID    Company    Mkt_P
1    Stk    &t1    &t1    P_&t1
2    Stk    &t2    &t2    P_&t2
3    Stk    &t3    &t3    P_&t3

Hors ligne

 

#2 13-01-2010 19:57:33

jabdeltif
Member
Lieu: PARIS
Date d'inscription: 27-09-2008
Messages: 23

Re: macro variables au niveau de datalines statement

Bonjour,

Si ma mémoire est bonne, une macro variable globale est utilisable partout dans un code lors de la session SAS dans lequel la macro variable a été créée sauf dans datalines ou déclarations CARDS.
Mais, avec SAS il y a toujours une alternative...! Et c'est ça qui est bon ;-)

Cordialement

A.J

Hors ligne

 

#3 13-01-2010 23:26:59

alaa-eddine
Member
Date d'inscription: 07-03-2007
Messages: 398

Re: macro variables au niveau de datalines statement

On aimerait bien savoir quelle est la finalité de votre démarche, qu'allez vous faire de cette table ? Par exemple... est ce que vous vous arrêtez à 3 macros variables ?... ou ce programme va être généralisé à plusieurs macros variables ?...etc
, cela pourrais nous aider à vous proposer la solution la plus adéquate, parce que là il est claire que des macros variables dans un cards ou un datalines, ça ne marche pas !!! Et il est normal que vous ne trouviez rien sur internet...

Cela dit, si vous tenez à vos 3 macros variables vous pouvez utiliser cette alternative, en passant en SQL :

Code:

%let t1 = cfg25 ;
%let t2 = iam ;
%let t3 = adh ;

proc sql;

   create table Inst_Data_wo
       (InstType char(6),
        InstID char(6),
        Company char(6),
        Mkt_P char(8));

  insert into bidon
    values('Stk',"&t1","&t1","P_&t1")
    values('Stk',"&t2","&t2","P_&t2")
    values('Stk',"&t3","&t3","P_&t3");

 quit;

Mais dites donc, iam(Itissalat Al Maghrib) cfg25(Group cfg) adh(Douja Prom Addoha)... c'est pour une Opcvm ça ? smile Vous bossez pour qu'elle boîte au Maroc ?
Qui c'est qui utilise SAS de la sorte?... qu'on vienne vous donner un p’tit coup de main roll

A+

Et bonne année aux gens d'Orléans ! (on a encore le droit de le dire jusqu'à la fin du mois)

Hors ligne

 

#4 14-01-2010 08:34:10

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

Re: macro variables au niveau de datalines statement

et oui, vous ne pouvez pas avoir des appels à macro variables dans les zones cards / datalines : le processeur macro ne va pas interpréter ce qui peut passer par "l'input buffer".

Alaa Eddine vous a donner une solution SQL - il est aussi possible de construire votre table avec une étape DATA de la manière suivante :

Code:

%let t1 = cfg25 ;
%let t2 = iam ;
%let t3 = adh ;

data Inst_Data_wo (drop=i);
do i=1 to 3;
   InsType="Stk";
   InstID=symget('t'!!left(put(i,2.)));
   Company=instid;
   Mkt_P = ("P_" || InstID);
   output;
end;
run;

proc print;run;

le principe de SYMGET est expliqué dans cet excellent livre qu'il faudra bien un jour vous procurer... ;-)

et comme le dit Jabdeltif,

avec SAS il y a toujours une alternative...! Et c'est ça qui est bon ;-)

Hors ligne

 

#5 14-01-2010 10:02:19

AHOYO
New member
Date d'inscription: 25-09-2008
Messages: 7

Re: macro variables au niveau de datalines statement

Une autre  astuce très simple  pour avoir tes résultats:


%let t1 = cfg25 ;
%let t2 = iam ;
%let t3 = adh ;


data Inst_Data_wo;
input InstType $ InstID $ Company $ ;
    InstID= resolve(InstID);
    Company= resolve(Company);
    Mkt_P = ("P_" || InstID);
datalines ;
    Stk &t1 &t1
    Stk &t2 &t2 
    Stk &t3 &t3
;run ;
proc print ; run;

Hors ligne

 

#6 14-01-2010 10:09:29

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

Re: macro variables au niveau de datalines statement

et comme le dit Jabdeltif,

avec SAS il y a toujours une alternative...! Et c'est ça qui est bon ;-)

Hors ligne

 

#7 14-01-2010 10:34:19

AHOYO
New member
Date d'inscription: 25-09-2008
Messages: 7

Re: macro variables au niveau de datalines statement

Je suis tout à fait d'accord!!!!!!

Hors ligne

 

#8 14-01-2010 10:55:16

nizarcom
membre extérieur
Date d'inscription: 08-01-2009
Messages: 21

Re: macro variables au niveau de datalines statement

Merci à vous pour votre  collaboration
Pour répondre à la question de monsieur alla eddine ;

Je vous dis que je suis en période de stage de fin d’études, que je suis entrain de le passer dans une banque d’affaire, donc je travaille sur un projet de Risk Management et plus précisément pour la modélisation du Risque de marché.
Ce que j’ai réussi à faire, sous SAS,  jusqu’à présent c’est de calculer  la value at risk avec deux approches : selon la simulation historique, et suivant la simulation MC de la matrice de variance covariance,
Mon objectif principal c’est d’automatiser la majorité des taches de telle manière que :une fois on donne à la moulinette SAS un portefeuille il nous calculera la VaR des valeurs composant le portefeuille, et la VaR totale (bien qu’il ya le problème d’additivité  de la VaR… )

Ça c’est l’objectif, la contrainte c’est que je suis débutant sur l’outil SAS (et surtout le module Risk Dimensions),  ce qui me pose beaucoup de problèmes et à partir de là je vous dérange à chaque fois, je vous prie de me pardonner car j’ai le souci  de réussir cette expérience.

Hors ligne

 

#9 14-01-2010 19:36:44

alaa-eddine
Member
Date d'inscription: 07-03-2007
Messages: 398

Re: macro variables au niveau de datalines statement

Pour une banque d'affaire ?!

- BMCE Capital ??
- Attijari Finance Corp ?? (Je ne pense pas qu'ils ont SAS...)
- CFG ??
- Upline ??
- CDG Capital ?? (SPSS il me semble...)

Vous avez fais quelle école ?

... Si ce n'est pas trop indiscret bien sûr wink

Hors ligne

 

#10 14-01-2010 20:28:26

gang
Member
Lieu: Orleans
Date d'inscription: 05-03-2007
Messages: 324

Re: macro variables au niveau de datalines statement

Lol alaa ca va ? t 'es de la police maintenant!!

Hors ligne

 

#11 14-01-2010 22:02:16

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

Re: macro variables au niveau de datalines statement

mais non, c'est :

1- qu'il est au bled - p'tet qu'il se sent seul
2- c'est devenu un vrai requin - p'tet qu'il prospecte !

Hors ligne

 

#12 14-01-2010 22:15:54

alaa-eddine
Member
Date d'inscription: 07-03-2007
Messages: 398

Re: macro variables au niveau de datalines statement

big_smile ...

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

[ Generated in 0.016 seconds, 8 queries executed ]