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 05/05/2008, 10h50   #1
Membre habitué
 
Inscription : juillet 2006
Messages : 284
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 284
Points : 107
Points : 107
Par défaut Interprétation macro variable date

Bonjour tout le monde,

j'ai crée une macro variable date en globale.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 DATA _NULL_;
  IF &MM = 1 THEN DO;
  JJ = 31; MM = 12;
  AA = &AA - 1;
  DTINV1 = MDY(MM,JJ,AA);
  CALL SYMPUT('DTINV1',DTINV1);
  PUT DTINV1 DDMMYYS10.;
  END;
  ELSE DO;
   MM = &MM - 1; AA = &AA;
   IF MM = 3 THEN JJ = 31; ELSE JJ = 30;
   IF MM = 1 THEN AA = AA - 1; DTINV1 = MDY(MM,JJ,AA);
   CALL SYMPUT('DTINV1',DTINV1);
   PUT DTINV1 DDMMYYS10.;
   END;
RUN;
le problème est qu'ensuite je dois utiliser cette macro variable dans d'autres programmes et là ça ne marche pas - je ne sais pas pourquoi...

Code :
1
2
3
4
DATA _null_;
  format dat = &DTINV1 ddmmyys10.;
  put dat =;
run;
Code :
1
2
3
4
5
6
7
DATA EXTRA (WHERE = (HISTO = '1'));
  SET SAN.AXNEWC 
(
KEEP = NUMCNT AGENTS DTEMIAN DTEMIRES CLGENC1 CLGENC2 HISTO REGIONA 
WHERE = ((DTEMIAN < "&DTINV1") AND (REGIONA = 67))
);
RUN;
merci de votre aide.

ash_rmy.
ash_rmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 10h58   #2
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 810
Points : 4 810
Bonjour,
Qu'est ce que t'affiche:
Juste une remarque : les macro-variables ne peuvent prendre qu'une seule valeur ... dans ton code j'ai l'impression que tu affectes une variable à ta macro ... est-ce normal?
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 11h02   #3
Membre habitué
 
Inscription : juillet 2006
Messages : 284
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 284
Points : 107
Points : 107
salut,

dans ma log DTINV1 = 17805.

merci.
ash_rmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 11h14   #4
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 810
Points : 4 810
Bonjour,
Ton erreur apparaît à quel endroit?
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 12h09   #5
Membre habitué
 
Inscription : juillet 2006
Messages : 284
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 284
Points : 107
Points : 107
l'erreur apparait à l'éxécution du code :

Code :
1
2
3
4
DATA _null_;
  format dat = &DTINV1 ddmmyys10.;
  put dat =;
run;
et du code :

Code :
1
2
3
4
5
6
7
DATA EXTRA (WHERE = (HISTO = '1'));
  SET SAN.AXNEWC 
(
KEEP = NUMCNT AGENTS DTEMIAN DTEMIRES CLGENC1 CLGENC2 HISTO REGIONA 
WHERE = ((DTEMIAN < "&DTINV1") AND (REGIONA = 67))
);
RUN;
ash_rmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 12h51   #6
Membre Expert
 
Inscription : mars 2005
Messages : 1 028
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 028
Points : 1 278
Points : 1 278
Envoyer un message via Yahoo à bahraoui
Code :
1
2
3
4
DATA _null_;
  format dat = &DTINV1 ddmmyys10.;
  put dat =;
run;
ce code est faux syntaxiquement.
la macro variable prend la bonne valeur.

pour vérifier le contenu de ta macro variable utilise le %put

ou
Code :
1
2
3
4
5
 
DATA _t_;
  format dat ddmmyys10.;
   dat =&DTINV1;
run;
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 13h35   #7
Membre habitué
 
Inscription : juillet 2006
Messages : 284
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 284
Points : 107
Points : 107
merci ça marche !
ash_rmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 13h37   #8
Membre confirmé
 
Inscription : avril 2008
Messages : 233
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : avril 2008
Messages : 233
Points : 216
Points : 216
Citation:
Envoyé par ash_rmy Voir le message
skip...
Code :
1
2
3
4
5
6
7
DATA EXTRA (WHERE = (HISTO = '1'));
  SET SAN.AXNEWC 
(
KEEP = NUMCNT AGENTS DTEMIAN DTEMIRES CLGENC1 CLGENC2 HISTO REGIONA 
WHERE = ((DTEMIAN < "&DTINV1") AND (REGIONA = 67))
);
RUN;
Comme tu as dis, DTINV1 = 17805. I.e. tu exécute le code suivant :

Code :
1
2
3
4
5
6
7
DATA EXTRA (WHERE = (HISTO = '1'));
  SET SAN.AXNEWC 
(
KEEP = NUMCNT AGENTS DTEMIAN DTEMIRES CLGENC1 CLGENC2 HISTO REGIONA 
WHERE = ((DTEMIAN < "17805") AND (REGIONA = 67))
);
RUN;
Tu vois le problème ?
green_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web