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 :

Interprétation macro variable date


Sujet :

Macro

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 163
    Points
    163
    Par défaut Interprétation macro variable date
    Bonjour tout le monde,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data _null_;
      format dat = &DTINV1 ddmmyys10.;
      put dat =;
    run;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    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?

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 163
    Points
    163
    Par défaut
    salut,

    dans ma log DTINV1 = 17805.

    merci.

  4. #4
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Bonjour,
    Ton erreur apparaît à quel endroit?

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 163
    Points
    163
    Par défaut
    l'erreur apparait à l'éxécution du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DATA _null_;
      format dat = &DTINV1 ddmmyys10.;
      put dat =;
    run;
    et du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;

  6. #6
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DATA _t_;
      format dat ddmmyys10.;
       dat =&DTINV1;
    run;

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 163
    Points
    163
    Par défaut
    merci ça marche !

  8. #8
    Membre actif

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 233
    Points : 254
    Points
    254
    Par défaut
    Citation Envoyé par ash_rmy Voir le message
    skip...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

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

Discussions similaires

  1. Macro Variable date en cours
    Par majajoue dans le forum Macro
    Réponses: 2
    Dernier message: 29/06/2015, 11h48
  2. Comparaison macro-variable en format date
    Par jogin38 dans le forum Macro
    Réponses: 1
    Dernier message: 07/12/2010, 09h08
  3. Macro variable &sysdate affiche la date d'hier
    Par SAS_ERIC dans le forum Macro
    Réponses: 2
    Dernier message: 01/12/2010, 17h08
  4. Macro variable format date
    Par alejandro27 dans le forum Macro
    Réponses: 5
    Dernier message: 11/03/2010, 17h22
  5. Interprétation de macro-variable
    Par ash_rmy dans le forum Macro
    Réponses: 4
    Dernier message: 14/06/2008, 14h42

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