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 18/10/2011, 14h30   #1
Membre habitué
 
Homme
Consultant informatique
Inscription : mars 2002
Messages : 211
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : mars 2002
Messages : 211
Points : 133
Points : 133
Par défaut Test sur des dates - récupérer le mois précédent d'une date donnée :%sysfunc( intnx())

Bonjour,

J'effectue actuellement différents test sur des dates (en Julian Date).

J'ai un soucis pour récupérer le mois précédent de la date donnée.
Cette ligne pose problème:
Code :
1
2
3
 
/* &date_conv contient une date au format SAS [18913]*/
%let lastmonth=%sysfunc(intnx("MONTH",&date_conv, -1));
SAS me donne l'erreur suivante:
Code :
1
2
3
4
WARNING: An argument TO the FUNCTION INTNX referenced BY the %SYSFUNC OR %QSYSFUNC macro FUNCTION
         IS out of range.
NOTE: Mathematical operations could NOT be performed during %SYSFUNC FUNCTION execution. The
      result of the operations have been SET TO a missing value.
Pourriez-vous m'aider?

Ci-dessous le code de test que j'utilise:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
%macro jd;
 
		%let julian=%sysfunc(juldate7("13oct2011"d));
		%put julian date IS: &julian;
 
		%let mydate=2011286;
		%put my date IS : &mydate;
		%let date_conv = %sysfunc(datejul(&mydate));
		%put my date INTO SAS format IS : &date_conv;
		%let daily_file = %substr(&mydate,4);
		%put Daily file number IS : &daily_file;
		%let month = %sysfunc(month(&date_conv));
        %put month IS : &month;
		%let day = %sysfunc(day(&date_conv));
        %put day IS : &day;
		%let lastmonth=%sysfunc(intnx("MONTH",&date_conv, -1));
		%put previous month was : &lastmonth;
 
%mend;
%jd
Merci déjà pour votre aide...
L0007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 14h39   #2
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
Et oui

%let lastmonth=%sysfunc(intnx(MONTH,&date_conv, -1));

Pas de quotes ...
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 14h47   #3
Membre habitué
 
Homme
Consultant informatique
Inscription : mars 2002
Messages : 211
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : mars 2002
Messages : 211
Points : 133
Points : 133


Merci datametric!

C'est une règle générale? avec %sysfunc(), on doit retirer les quotes des paramètres qui en ont?
L0007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 15h01   #4
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
je ne suis pas certain pas mais il me semble.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 15h07   #5
Membre habitué
 
Homme
Consultant informatique
Inscription : mars 2002
Messages : 211
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : mars 2002
Messages : 211
Points : 133
Points : 133
Merci en tout cas
L0007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 15h51   #6
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Je ne suis pas sûr que ce soit une règle générale. Je crois être tombé une fois sur un contre-exemple mais je ne me souviens plus quelle était la fonction (un PRX quelque chose peut-être ?).
olivier.decourt 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 05h27.


 
 
 
 
Partenaires

Hébergement Web