Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Macro
Macro Forum d'entraide sur le langage Macro de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/12/2010, 10h40   #1
Invité régulier
 
Inscription : juin 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 44
Points : 9
Points : 9
Par défaut Définition macro-variable

Bonjour,

J'ai une petite question dont la réponse doit etre très simple pour certain!

J'ai une table qui contient une variable date. Je fais alors:

Code :
1
2
3
4
5
6
7
8
9
10
11
 
DATA TABLE1;
  SET TABLE1;
  mois=month(date);
  jour =day(date);
run;
 
DATA TABLE1;
  SET TABLE1;
  %calcul(mois, jours);
run;
La macro calcul se comporte comme ceci.
Code :
1
2
3
4
5
6
 
%macro calcul(mois, jours);
DATA test;
  SET lib.TABLE_&mois._&jours;
run;
%mend;
Or j'ai une erreur puisque dans le log j'obtiens une erreur car sazs cherche
lib.TABLE_mois_jour;
au lieu de
lib.TABLE_1_1;

Merci à celui qui me résoudra ce petit problème du aux variables.
Alexis
alexis0587 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 11h42   #2
Membre du Club
 
Isabelle
Inscription : novembre 2007
Messages : 44
Détails du profil
Informations personnelles :
Nom : Isabelle
Âge : 34
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2007
Messages : 44
Points : 57
Points : 57
Bonjour,

Il faut que tu passes tes variables mois et jours en macro variables, puis que tu lances ta macro mais pas à l'intérieur d'une autre étape data (sinon tu te retrouves avec une étape data dans une autre étape data). Le code suivant devrait résoudre ton problème.

Code :
1
2
3
4
5
6
7
8
 
DATA TABLE1;
  SET table1;
  call symput ("mois",month(date));
  call symput ("jour",day(date));
run;
 
%calcul(mois=&mois, jours=&jour);
Isabelle
bab22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h14   #3
Invité régulier
 
Inscription : juin 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 44
Points : 9
Points : 9
Merci de ta réponse bab22.
Pour autant, dans mon cas, je suis obligé d'appeller un data dans un data puisqu'en lisant le premier data ligne a ligne, je dois appeller un autre data dont le titre est contenu dans le premier data
alexis0587 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h28   #4
Invité régulier
 
Inscription : juin 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 44
Points : 9
Points : 9
En fait, dans une première table, j'ai des dates. On suppose vouloir générer une variable aléatoire pour chaque date, suivant une fonction de répartition contenue dans la table JJ_MM.
Aussi, a chaque avancement dans ma première table, je dois ouvrir la table contenant la fonction de répartition correspondante puis générer ma va.

J'essaie depuis hier mais sans avancé majeure!!
alexis0587 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h49.


 
 
 
 
Partenaires

Hébergement Web