L'extraction des attributs étendus est une étape cruciale pour auditer ou migrer des environnements SAS 9.4 complexes, particulièrement pour les bibliothèques LASR où des paramètres critiques (comme les ports de serveur ou les options de démarrage) sont stockés sous forme de paires Nom/Valeur dans les métadonnées. L'utilisation des fonctions metadata_getnasn sur l'association "Extensions" permet de descendre dans la hiérarchie de l'objet SASLibrary pour récupérer ces métadonnées non standard. Une bonne pratique consiste à toujours vérifier le code retour (rc) de la fonction metadata_getattr pour s'assurer que l'attribut visé existe bien, évitant ainsi de corrompre votre table de sortie avec des valeurs résiduelles du vecteur de données (PDV).
Type : CREATION_INTERNE
Les données sont générées dynamiquement par interrogation du serveur de métadonnées via des fonctions SAS, sans lecture de fichiers plats ou tables externes.
| 1 | %let LIBNAME='Visual Analytics LASR'; |
| 2 | |
| 3 | options |
| 4 | metaserver="my.sas.server" |
| 5 | metaport=8561 |
| 6 | metauser="sasadm @saspw" |
| 7 | metapass="password" |
| 8 | metarepository=Foundation |
| 9 | metaprotocol=bridge; |
| 1 | DATA extend; |
| 2 | LENGTH type id lib_uri ext_uri ext_name $ 50 ext_val $ 256; |
| 3 | call missing(of _CHARACTER_); |
| 4 | |
| 5 | obj="omsobj:SASLibrary? @Name=&libname"; |
| 6 | |
| 7 | libcount=metadata_resolve(obj,type,id); |
| 8 | IF libcount > 0 THEN DO n=1 to libcount; |
| 9 | rc=metadata_getnobj(obj,n,lib_uri); |
| 10 | ext_count=metadata_getnasn(lib_uri,"Extensions",1,ext_uri); |
| 11 | |
| 12 | IF ext_count > 0 THEN DO m=1 to ext_count; |
| 13 | rc=metadata_getnasn(lib_uri,"Extensions",m,ext_uri); |
| 14 | rc=metadata_getattr(ext_uri,"Name",ext_name); |
| 15 | rc=metadata_getattr(ext_uri,"Value",ext_val); |
| 16 | OUTPUT; |
| 17 | END; ELSE put "NOTE: No Extended Attributes found for library &libname"; |
| 18 | END; |
| 19 | ELSE put "NOTE: No library &libname found."; |
| 20 | |
| 21 | keep ext_name ext_val; |
| 22 | RUN; |