Les données sont exclusivement des variables système et macro-variables générées par l'environnement SAS, reflétant l'utilisateur connecté ou le contexte de session. Il n'y a pas de lecture de fichiers externes ou de datasets SAS préexistants.
1 Bloc de code
MACRO mf_getuser
Explication : Ce bloc définit la macro `mf_getuser` qui détermine l'identifiant de l'utilisateur actif. Elle vérifie l'existence de plusieurs macro-variables dans un ordre spécifique : `_sasjs_username`, `SYS_COMPUTE_SESSION_OWNER`, `_metaperson`, et `sysuserid`. Selon l'environnement (SAS Viya Compute, Stored Process, ou Workspace), une de ces variables sera utilisée pour assigner l'ID utilisateur. Une logique spécifique est incluse pour traiter `_metaperson` en retirant les extensions de domaine d'authentification et en gérant les noms d'utilisateur contenant des virgules. La valeur finale est renvoyée par la macro.
Copié !
%macro mf_getuser(
)/*/STORE SOURCE*/;
%local user;
%if %symexist(_sasjs_username) %then %let user=&_sasjs_username;
%else %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %do;
%let user=&SYS_COMPUTE_SESSION_OWNER;
%end;
%else %if %symexist(_metaperson) %then %do;
%if %length(&_metaperson)=0 %then %let user=&sysuserid;
/* sometimes SAS will add @code_sas/DYNAMIC_ASSIGNMENT_OF_AUTHDOMAIN.sas extension - remove for consistency */
/* but be sure to quote in case of usernames with commas */
%else %let user=%unquote(%scan(%quote(&_metaperson),1, @));
%end;
%else %let user=&sysuserid;
%quote(&user)
%mend mf_getuser;
Explication : Ce bloc, provenant du fichier référencé `DYNAMIC_ASSIGNMENT_OF_AUTHDOMAIN.sas`, définit la macro `setenv`. Cette macro est un exemple de script administratif qui utilise `sysuserid` pour déterminer et définir un domaine d'authentification (`access_auth`), le rendant ainsi pertinent pour la gestion des accès et la sécurité du système. Elle démontre comment `sysuserid` peut être utilisé pour adapter les paramètres d'environnement en fonction du type d'utilisateur.
Explication : Cette macro `_version`, référencée par l'entête, est conçue pour vérifier si la version actuelle de SAS est égale ou supérieure à une version spécifiée. Elle compare les numéros de version en utilisant les macro-fonctions `%scan` et `%eval`. Bien qu'elle ne soit pas directement appelée par la macro principale à analyser, sa présence dans les références met en évidence l'importance de la compatibilité de version dans l'environnement SAS.
Copié !
%put NOTE: You have called the macro _VERSION, 2006-02-15.;
%put NOTE: Copyright (c) 2001-2006 Rodney Sparapani;
%put;
/*
Author: Rodney Sparapani <rsparapa@mcw.edu>
Created: 2001-00-00
This file is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this file; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* _VERSION Documentation
Returns a one (true) if the current version of SAS is equal to or
greater than the version requested; zero (false) otherwise.
POSITIONAL Parameters
ARG1 version requested
Specific OPTIONAL Parameters
NOTES= default is to not display the returned value in a NOTE,
if set to something, then do display
VERSION=ARG1 alias
*/
%macro _version(arg1, notes=, version=&arg1);
%local result;
%let result=%eval(%scan(&sysver, 1, .)*100+0%scan(&sysver, 2, .)>=%scan(&version, 1, .)*100+0%scan(&version, 2, .));
%if %length(¬es) %then %put NOTE: _VERSION is returning the value &result;
&result
%mend _version;
%*VALIDATION TEST STREAM;
1
%put NOTE: You have called the macro _VERSION, 2006-02-15.;
%IF %LENGTH(¬es) %THEN %put NOTE: _VERSION is returning the value &RESULT;
46
47
&RESULT
48
49
%mend _version;
50
51
%*VALIDATION TEST STREAM;
4 Bloc de code
MACRO mm_getdetails (référencée)
Explication : Cette macro `mm_getdetails` (référencée par l'entête HELP START) est un outil d'administration qui extrait les attributs et associations de métadonnées pour un URI spécifique. Elle utilise des fonctions de métadonnées SAS comme `metadata_getnasl`, `metadata_getnasn` et `metadata_getattr` pour parcourir et collecter des informations sur les objets de métadonnées, les enregistrant dans des jeux de données de sortie. Son rôle est principalement lié à la gestion et à l'audit des ressources au sein d'un environnement SAS.
Copié !
/*** HELP START ***//**
@file mm_getdetails.sas
@brief extracts metadata attributes and associations for a particular uri
@param [in] uri the metadata object for which to return
attributes / associations
@param [in] sortoptions= Enables sorting of the output datasets, for example,
`SORTSEQ=LINGUISTIC`
@param [out] outattrs= (work.attributes)
The dataset to create that contains the list of attributes
@param [out] outassocs= (work.associations)
The dataset to contain the list of associations
<h4> Related Files </h4>
@li mm_getobjects.sas
@li mm_gettypes.sas
**//*** HELP END ***/
%macro mm_getdetails(uri
,outattrs=work.attributes
,outassocs=work.associations
,sortoptions=
)/*/STORE SOURCE*/;
data &outassocs;
keep assoc assocuri name;
length assoc assocuri name $256;
call missing(of _all_);
rc1=1;n1=1;
do while(rc1>0);
/* Walk through all possible associations of this object. */
rc1=metadata_getnasl("&uri",n1,assoc);
rc2=1;n2=1;
do while(rc2>0);
/* Walk through all the associations on this machine object. */
rc2=metadata_getnasn("&uri",trim(assoc),n2,assocuri);
if (rc2>0) then do;
rc3=metadata_getattr(assocuri,"Name",name);
output;
end;
call missing(name,assocuri);
n2+1;
end;
n1+1;
end;
run;
proc sort &sortoptions;
by assoc name;
run;
data &outattrs;
keep type name value;
length type $4 name $256 value $32767;
rc1=1;n1=1;type='Prop';name='';value='';
do while(rc1>0);
rc1=metadata_getnprp("&uri",n1,name,value);
if rc1>0 then output;
n1+1;
end;
rc1=1;n1=1;type='Attr';
do while(rc1>0);
rc1=metadata_getnatr("&uri",n1,name,value);
if rc1>0 then output;
n1+1;
end;
run;
proc sort &sortoptions;
by type name;
run;
%mend mm_getdetails;
1
/*** HELP START ***//**
2
@file mm_getdetails.sas
3
@brief extracts metadata attributes and associations for a particular uri
4
@param [in] uri the metadata object for which to return
5
attributes / associations
6
@param [in] sortoptions= Enables sorting of the output datasets, for example,
7
`SORTSEQ=LINGUISTIC`
8
@param [out] outattrs= (work.attributes)
9
The dataset to create that contains the list of attributes
10
@param [out] outassocs= (work.associations)
11
The dataset to contain the list of associations
12
13
<h4> Related Files </h4>
14
@li mm_getobjects.sas
15
@li mm_gettypes.sas
16
17
**//*** HELP END ***/
18
19
%macro mm_getdetails(uri
20
,outattrs=work.attributes
21
,outassocs=work.associations
22
,sortoptions=
23
)/*/STORE SOURCE*/;
24
25
DATA &outassocs;
26
keep assoc assocuri name;
27
LENGTH assoc assocuri name $256;
28
call missing(of _all_);
29
rc1=1;n1=1;
30
DO while(rc1>0);
31
/* Walk through all possible associations of this object. */
32
rc1=metadata_getnasl("&uri",n1,assoc);
33
rc2=1;n2=1;
34
DO while(rc2>0);
35
/* Walk through all the associations on this machine object. */
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 : Allan Bowe (mentionné dans l'entête HELP START). Également, Rodney Sparapani (c) 2001-2006 (pour _version.sas) et HMS Analytical Software GmbH (pour macro_without_brief_tag.sas) sont des sources de code référencées qui peuvent avoir influencé le développement ou la logique des macros liées à la gestion des sessions utilisateur.
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.