Publié le :
Reporting CREATION_INTERNE

Appel à la Génération de Rapports

Ce code est également disponible en : Deutsch English Español
En attente de validation
La macro `call_create_report` est conçue pour être invoquée depuis un script shell. Elle récupère une chaîne de caractères via la variable système `SYSPARM`, qu'elle parse pour extraire un `id_report_control` et une `rundate`. Ensuite, elle calcule un `datestamp` (date du jour) et un `timestamp` (heure de la minute actuelle) à l'aide de fonctions SAS©. Enfin, elle transfère tous ces paramètres à une macro `create_report` (dont le code n'est pas inclus ici) qui est chargée de la logique de création effective des rapports. Des options globales SAS© sont définies pour améliorer le débogage et la gestion des variables macro.
Analyse des données

Type : CREATION_INTERNE


Les données utilisées sont principalement des paramètres d'entrée (`SYSPARM`) traités en variables macro, et des variables de date/heure générées dynamiquement par SAS (`DATE()`, `DATETIME()`). Il n'y a pas de lecture explicite de données issues de tables SASHELP ou de sources externes dans ce fragment de code, à l'exception de ce qui pourrait être géré par la macro `create_report` non fournie.

1 Bloc de code
MACRO
Explication :
Définit le début de la macro `call_create_report` et initialise la variable macro `SYSPARM` avec la valeur passée à SAS via la ligne de commande, puis l'affiche dans le log.
Copié !
1%macro call_create_report();
2%let SYSPARM=&SYSPARM ;
3%put SYSPARM=&SYSPARM;
4 
2 Bloc de code
DATA STEP Data
Explication :
Ce bloc `DATA _NULL_` est utilisé pour extraire des valeurs de la variable macro `SYSPARM`. La fonction `SCAN` permet de séparer les éléments par des virgules, et `CALL SYMPUT` les assigne à de nouvelles variables macro (`id_report_control` et `rundate`).
Copié !
1 DATA _null_ ;
2 call symput('id_report_control',trim(left(scan("&SYSPARM",1,',')))) ;
3 call symput('rundate',trim(left(scan("&SYSPARM",2,',')))) ;
4 RUN ;
3 Bloc de code
MACRO Data
Explication :
Ce bloc utilise les fonctions macro `%SYSFUNC` pour manipuler et formater les dates et heures. `rundate` est convertie en format de date SAS, `datestamp` obtient la date du système au format AAMMJJ, et `timestamp` extrait l'heure de l'horodatage système au format HH0000. Une variable `zip_counter` est initialisée à 0.
Copié !
1 /* rundate is the date variable of the extraction*/
2 %let rundate = %SYSFUNC(INPUTN(&rundate,yymmdd8.));
3 %put rundate=%sysfunc(putn(&rundate,yymmdd10.));
4
5 /*datestamp is the wariable for the ZIP file*/
6 %let datestamp = %sysfunc(DATE(),yymmdd6.);
7 %put datestamp=&datestamp.;
8 %let zip_counter = 0;
9 /*timestamp is the wariable for the ZIP file*/
10 %let timestamp = %sysfunc(substr(%sysfunc(DATETIME(),datetime19.),11,2))0000;
11 %put timestamp=×tamp.;
4 Bloc de code
MACRO
Explication :
Affiche les valeurs finales des variables macro `id_report_control` et `datestamp` dans le log. Ensuite, elle appelle la macro `create_report` (non définie dans ce code) en lui passant toutes les variables macro préparées comme paramètres. `ABSOLUTE` est une erreur de frappe et n'est pas valide. Enfin, `ABSOLUTE` termine la définition de la macro `call_create_report`.
Copié !
1
2 %put id_report_control = &id_report_control. ;
3 %put datestamp = &datestamp. ;
4 %create_report(&id_report_control.,&datestamp.,×tamp.,&rundate.);
5%mend call_create_report;
5 Bloc de code
OPTIONS / EXECUTION
Explication :
Définit des options globales SAS : `MPRINT` pour afficher les lignes de code générées par les macros, `MVARSIZE=MAX` pour autoriser des variables macro de grande taille, et `NOQUOTELENMAX` pour désactiver la troncature des chaînes entre guillemets. Enfin, exécute la macro `call_create_report`.
Copié !
1options mprint;
2options MVARSIZE=MAX;
3options noquotelenmax;
4%call_create_report();
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 : ykxjlau 27.02.2013: Created.