Publié le :
Macro CREATION_INTERNE

Fonctions de Début et Fin de Mois (BeginMonth, EndMonth)

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script SAS© fourni crée et teste deux fonctions utilisateur, BeginMonth et EndMonth, à l'aide de PROC FCMP. La fonction BeginMonth calcule le premier jour du mois pour une date donnée, tandis que EndMonth calcule le dernier jour. Ces fonctions exploitent la fonction INTNX de SAS©. Le script commence par générer un jeu de données de test ('test') avec diverses dates pour illustrer leur utilisation. Ensuite, il applique ces fonctions au jeu de données 'test' pour ajouter de nouvelles variables 'FirstDay' et 'LastDay', formatées en tant que dates.
Analyse des données

Type : CREATION_INTERNE


Les données utilisées ('test') sont créées directement dans le script via une étape DATA et l'instruction DATALINES. Il n'y a pas de dépendance à des sources de données externes ou aux bibliothèques SAS par défaut comme SASHELP pour les données d'entrée.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc DATA STEP crée un jeu de données nommé 'test'. Il définit une variable 'date', lui applique les formats INFORMAT (pour la lecture) et FORMAT (pour l'affichage) 'date9.', puis la peuple avec des valeurs de date spécifiées via l'instruction DATALINES. Ce jeu de données sert d'exemple pour tester les fonctions FCMP.
Copié !
1DATA test;
2 INPUT date;
3 informat date date9.;
4 FORMAT date date9.;
5 DATALINES;
6 31DEC2016
7 01JAN2017
8 15FEB2017
9 15FEB2016
10 08JAN2017
11 09JAN2017
12 25DEC2017
13 31DEC2017
14 01JAN2018
15 05JAN2017
16 05APR2017
17 09JUL2017
18 10NOV2017
19 31DEC2017
20 15MAR2017
21 ;
22RUN;
2 Bloc de code
PROC FCMP
Explication :
Cette procédure PROC FCMP définit une fonction utilisateur nommée 'BeginMonth'. La fonction prend un argument 'DateDay' (une date SAS numérique) et utilise la fonction INTNX de SAS pour calculer la date du début du mois ('b') correspondant à 'DateDay', sans décalage ('0'). La fonction est stockée dans le catalogue 'work.cat_function.test' et renvoie le premier jour du mois.
Copié !
1PROC FCMP outlib=work.cat_function.test;
2 function BeginMonth(DateDay);
3 res=intnx('month', DateDay, 0, 'b');
4 return(res);
5 endsub;
6RUN;
3 Bloc de code
PROC FCMP
Explication :
Cette procédure PROC FCMP définit une fonction utilisateur nommée 'EndMonth'. Similaire à 'BeginMonth', elle prend un argument 'DateDay' et utilise INTNX pour calculer la date de fin du mois ('e') correspondant à 'DateDay', sans décalage. La fonction est également stockée dans le catalogue 'work.cat_function.test' et renvoie le dernier jour du mois.
Copié !
1PROC FCMP outlib=work.cat_function.test;
2 function EndMonth(DateDay);
3 res=intnx('month', DateDay, 0, 'e');
4 return(res);
5 endsub;
6RUN;
4 Bloc de code
DATA STEP
Explication :
Ce bloc DATA STEP lit le jeu de données 'test' existant. Il ajoute deux nouvelles variables, 'FirstDay' et 'LastDay', et leur applique le format 'date9.'. Ensuite, il appelle les fonctions FCMP 'BeginMonth' et 'EndMonth' définies précédemment, en leur passant la variable 'date' pour calculer le premier et le dernier jour de chaque mois, respectivement. Les résultats sont stockés dans les nouvelles variables du jeu de données 'test'.
Copié !
1DATA test;
2 SET test;
3 FORMAT FirstDay lastDay DATE9.;
4 FirstDay=BeginMonth(date);
5 LastDay=EndMonth(date);
6RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Creation date : 14/04/2017 (fr) Last update : 14/04/2017 (fr) Author(s) : Nicolas DUPONT