Les données sont obtenues en interrogeant la table système `dictionary.tables` de SAS, qui fournit des métadonnées sur toutes les tables enregistrées dans l'environnement SAS. Il s'agit d'une source d'information interne au système SAS et non de données externes ou créées par l'utilisateur directement dans ce script.
1 Bloc de code
Macro SAS
Explication : Ce bloc marque le début de l'exécution de la macro et de sa définition. Il annonce l'appel de la macro et initialise la variable macro globale `_dslist_` à vide. Il contient la logique pour attribuer une valeur par défaut au paramètre `libref` si celui-ci n'est pas renseigné (utilisant l'option système 'user' ou 'work') et s'assure que le `libref` est en majuscules.
%IF not %LENGTH(&libref) %THEN %let libref=%sysfunc(getoption(user));
7
%IF not %LENGTH(&libref) %THEN %let libref=work;
8
%let libref=%upcase(&libref);
2 Bloc de code
PROC SQL
Explication : Ce segment utilise `PROC SQL` en mode silencieux (`noprint`) pour interroger la table de métadonnées `dictionary.tables`. Il sélectionne tous les noms de membres (`memname`) distincts qui sont de type 'DATA' et qui appartiennent à la librairie spécifiée par `&libref`. Les noms récupérés sont stockés dans la variable macro `_dslist_`, avec un séparateur conditionnel : soit un espace, soit `&libref..` si le paramètre `prefix` est activé.
Copié !
proc sql noprint;
select distinct memname into :_dslist_ separated by
%if %length(&prefix) %then %do;
" &libref.."
%end;
%else %do;
' '
%end;
from dictionary.tables
where memtype='DATA'
and libname="&libref";
quit;
1
PROC SQL noprint;
2
select distinct memname into :_dslist_ separated BY
3
%IF %LENGTH(&prefix) %THEN %DO;
4
" &libref.."
5
%END;
6
%ELSE %DO;
7
' '
8
%END;
9
from dictionary.tables
10
where memtype='DATA'
11
and LIBNAME="&libref";
12
QUIT;
3 Bloc de code
Macro SAS
Explication : Ce dernier bloc ajuste la variable macro `_dslist_` si le `prefix` était utilisé, car le 'separated by' dans `PROC SQL` ne s'applique qu'entre les éléments, pas au premier. Il termine la `PROC SQL` avec `run;` et conclut la définition de la macro `dslist` avec `%mend`.
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 : This is public domain software. No guarantee as to suitability or accuracy is given or implied. User uses this code entirely at their own risk.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.