Explication : Étape DATA principale qui interroge les métadonnées pour trouver les objets 'StoredProcess' ayant un code source de type 'File'. Elle itère sur les résultats pour extraire les attributs de nom et de chemin d'accès, concaténant le répertoire et le nom de fichier.
Copié !
data source;
keep stp_name source; /* Retain only the stored process name and it's source code full path. */
/* Initialize variables. */
length type id stp_uri stp_name file_uri file_name dir_uri path $ 50;
call missing (of _character_);
obj="omsobj:ClassifierMap?ClassifierMap[ @PublicType='StoredProcess'][SourceCode/File]"; /* Search critera for Stored Processes that have an external file source. */
stp_count=metadata_resolve(obj,type,id); /* Count all stored processes that meet our criteria. Only run loop if at least one exists. */
if stp_count > 0 then do i=1 to stp_count; /* Loop: For each stp found, get attributes and associations. */
rc=metadata_getnobj(obj,i,stp_uri);
rc=metadata_getattr(stp_uri,"Name",stp_name); /* Get stp name. */
rc=metadata_getnasn(stp_uri,"SourceCode",1,file_uri); /* Get file Metadata object id. */
rc=metadata_getattr(file_uri,"FileName",file_name); /* Get file name. */
rc=metadata_getnasn(file_uri,"Directories",1,dir_uri); /* Get directory Metadata object id. */
rc=metadata_getattr(dir_uri,"DirectoryName",path); /* Get path to directory. */
source=catx('/',path,file_name); /* combine directory path and file name to create full path to file.*/
output;
end; /* End loop. */
else put "WARN: No Stored Processes with external source code files found in Metadata."; /* If no jobs are found, write a message to the log. */
run;
1
DATASOURCE;
2
3
keep stp_name SOURCE; /* Retain only the stored process name and it's source code full path. */
4
5
/* Initialize variables. */
6
7
LENGTH type id stp_uri stp_name file_uri file_name dir_uri path $ 50;
8
call missing (of _character_);
9
10
obj="omsobj:ClassifierMap?ClassifierMap[ @PublicType='StoredProcess'][SourceCode/File]"; /* Search critera for Stored Processes that have an external file source. */
11
12
stp_count=metadata_resolve(obj,type,id); /* Count all stored processes that meet our criteria. Only run loop if at least one exists. */
13
14
IF stp_count > 0 THENDO i=1 to stp_count; /* Loop: For each stp found, get attributes and associations. */
15
rc=metadata_getnobj(obj,i,stp_uri);
16
rc=metadata_getattr(stp_uri,"Name",stp_name); /* Get stp name. */
17
rc=metadata_getnasn(stp_uri,"SourceCode",1,file_uri); /* Get file Metadata object id. */
18
rc=metadata_getattr(file_uri,"FileName",file_name); /* Get file name. */
19
rc=metadata_getnasn(file_uri,"Directories",1,dir_uri); /* Get directory Metadata object id. */
20
rc=metadata_getattr(dir_uri,"DirectoryName",path); /* Get path to directory. */
21
SOURCE=catx('/',path,file_name); /* combine directory path and file name to create full path to file.*/
22
OUTPUT;
23
END; /* End loop. */
24
ELSE put "WARN: No Stored Processes with external source code files found in Metadata."; /* If no jobs are found, write a message to the log. */
25
RUN;
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.
« L'utilisation des fonctions METADATA_* pour extraire les chemins physiques des Stored Processes (STP) est une pratique d'audit indispensable. Dans une architecture SAS 9, la métadonnée ne contient pas toujours le code lui-même, mais souvent un pointeur vers un fichier .sas sur le serveur. Ce script permet de réconcilier l'objet logique (vu dans la console) avec la réalité physique du système de fichiers. »
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.