Veröffentlicht am :
Macro CREATION_INTERNE

Monatsanfangs- und Monatsendfunktionen (BeginMonth, EndMonth)

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das bereitgestellte SAS©-Skript erstellt und testet zwei Benutzerfunktionen, BeginMonth und EndMonth, mit PROC FCMP. Die Funktion BeginMonth berechnet den ersten Tag des Monats für ein gegebenes Datum, während EndMonth den letzten Tag berechnet. Diese Funktionen nutzen die SAS©-Funktion INTNX. Das Skript beginnt mit der Generierung eines Testdatensatzes ('test') mit verschiedenen Daten, um ihre Verwendung zu demonstrieren. Anschließend werden diese Funktionen auf den Datensatz 'test' angewendet, um neue Variablen 'FirstDay' und 'LastDay' hinzuzufügen, die als Daten formatiert sind.
Datenanalyse

Type : CREATION_INTERNE


Die verwendeten Daten ('test') werden direkt im Skript über einen DATA-Schritt und die DATALINES-Anweisung erstellt. Es gibt keine Abhängigkeit von externen Datenquellen oder den Standard-SAS-Bibliotheken wie SASHELP für die Eingabedaten.

1 Codeblock
DATA STEP Data
Erklärung :
Dieser DATA STEP-Block erstellt einen Datensatz namens 'test'. Er definiert eine Variable 'date', wendet die INFORMAT- (zum Lesen) und FORMAT-Formate (zur Anzeige) 'date9.' darauf an und füllt sie dann mit Datumsangaben, die über die DATALINES-Anweisung angegeben werden. Dieser Datensatz dient als Beispiel zum Testen der FCMP-Funktionen.
Kopiert!
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 Codeblock
PROC FCMP
Erklärung :
Diese PROC FCMP-Prozedur definiert eine Benutzerfunktion namens 'BeginMonth'. Die Funktion akzeptiert ein Argument 'DateDay' (ein numerisches SAS-Datum) und verwendet die SAS-Funktion INTNX, um das Monatsanfangsdatum ('b') zu berechnen, das 'DateDay' entspricht, ohne Versatz ('0'). Die Funktion wird im Katalog 'work.cat_function.test' gespeichert und gibt den ersten Tag des Monats zurück.
Kopiert!
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 Codeblock
PROC FCMP
Erklärung :
Diese PROC FCMP-Prozedur definiert eine Benutzerfunktion namens 'EndMonth'. Ähnlich wie 'BeginMonth' akzeptiert sie ein Argument 'DateDay' und verwendet INTNX, um das Monatsenddatum ('e') zu berechnen, das 'DateDay' entspricht, ohne Versatz. Die Funktion wird ebenfalls im Katalog 'work.cat_function.test' gespeichert und gibt den letzten Tag des Monats zurück.
Kopiert!
1PROC FCMP outlib=work.cat_function.test;
2 function EndMonth(DateDay);
3 res=intnx('month', DateDay, 0, 'e');
4 return(res);
5 endsub;
6 
7RUN;
4 Codeblock
DATA STEP
Erklärung :
Dieser DATA STEP-Block liest den vorhandenen Datensatz 'test'. Er fügt zwei neue Variablen, 'FirstDay' und 'LastDay', hinzu und wendet das Format 'date9.' auf sie an. Anschließend ruft er die zuvor definierten FCMP-Funktionen 'BeginMonth' und 'EndMonth' auf, wobei er die Variable 'date' übergibt, um den ersten bzw. letzten Tag jedes Monats zu berechnen. Die Ergebnisse werden in den neuen Variablen des Datensatzes 'test' gespeichert.
Kopiert!
1DATA test;
2 SET test;
3 FORMAT FirstDay lastDay DATE9.;
4 FirstDay=BeginMonth(date);
5 LastDay=EndMonth(date);
6RUN;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Creation date : 14/04/2017 (fr) Last update : 14/04/2017 (fr) Author(s) : Nicolas DUPONT