La macro ne manipule pas de données tabulaires directement. Elle interroge le serveur de métadonnées SAS pour récupérer des informations de configuration (le nom de la librairie). Le but est de préparer l'accès aux données, dont la source dépendra de la définition de la librairie dans les métadonnées.
1 Bloc de code
MACRO
Explication : Ce bloc définit l'intégralité de la macro '%assign_metalib'. Elle utilise les fonctions %SYSFUNC et les appels de métadonnées (metadata_getnobj, metadata_getattr) dans un DATA _NULL_ pour trouver le nom d'une librairie à partir de son libref. Ensuite, elle exécute l'instruction LIBNAME avec le moteur META pour l'assigner. C'est une tâche typique d'administration et d'automatisation dans un environnement SAS 9 ou Viya avec des librairies pré-enregistrées.
Copié !
%macro assign_metalib(libref=/* libref that needs to be assigned */
);
%if %sysfunc(libref(&libref)) %then %do;
data _null_;
length lib_uri LibName $200;
call missing(of _all_);
nobj=metadata_getnobj("omsobj:SASLibrary? @Libref='&libref'",1,lib_uri);
if nobj=1 then do;
rc=metadata_getattr(lib_uri,"Name",LibName);
call symputx('libname',libname,'L');
end;
else if nobj>1 then putlog "ERROR: More than one library with libref='&libref'";
else putlog "ERROR: Library '&libref' not found in metadata";
run;
libname &libref meta library="&libname";
%if %sysfunc(libref(&libref)) %then
%put ERROR: assign_metalib macro could not assign &libref;
%end;
%else %put NOTE: Library &libref is already assigned;
%mend;
1
%macro assign_metalib(libref=/* libref that needs to be assigned */
ELSEIF nobj>1THEN putlog "ERROR: More than one library with libref='&libref'";
13
ELSE putlog "ERROR: Library '&libref' not found in metadata";
14
RUN;
15
16
LIBNAME &libref meta library="&libname";
17
%IF %sysfunc(libref(&libref)) %THEN
18
%put ERROR: assign_metalib macro could not assign &libref;
19
%END;
20
%ELSE %put NOTE: Library &libref is already assigned;
21
%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.
« La macro %assign_metalib illustre parfaitement le passage d'une programmation statique à une programmation pilotée par les métadonnées. Au lieu de coder en dur des chemins physiques, on s'appuie sur le "cerveau" du serveur SAS pour configurer l'environnement. »
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.