Los datos son exclusivamente variables de sistema y macro-variables generadas por el entorno SAS, que reflejan el usuario conectado o el contexto de la sesión. No hay lectura de archivos externos o datasets SAS preexistentes.
1 Bloque de código
MACRO mf_getuser
Explicación : Este bloque define la macro `mf_getuser` que determina el identificador del usuario activo. Verifica la existencia de varias macro-variables en un orden específico: `_sasjs_username`, `SYS_COMPUTE_SESSION_OWNER`, `_metaperson` y `sysuserid`. Según el entorno (SAS Viya Compute, Stored Process o Workspace), una de estas variables se utilizará para asignar el ID de usuario. Se incluye una lógica específica para procesar `_metaperson` eliminando las extensiones de dominio de autenticación y gestionando los nombres de usuario que contienen comas. El valor final es devuelto por la macro.
¡Copiado!
%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;
Explicación : Este bloque, proveniente del archivo referenciado `DYNAMIC_ASSIGNMENT_OF_AUTHDOMAIN.sas`, define la macro `setenv`. Esta macro es un ejemplo de script administrativo que utiliza `sysuserid` para determinar y definir un dominio de autenticación (`access_auth`), lo que la hace relevante para la gestión de accesos y la seguridad del sistema. Demuestra cómo `sysuserid` puede usarse para adaptar los parámetros del entorno en función del tipo de usuario.
Explicación : Esta macro `_version`, referenciada por el encabezado, está diseñada para verificar si la versión actual de SAS es igual o superior a una versión especificada. Compara los números de versión utilizando las macro-funciones `%scan` y `%eval`. Aunque no es llamada directamente por la macro principal a analizar, su presencia en las referencias destaca la importancia de la compatibilidad de versiones en el entorno SAS.
¡Copiado!
%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 Bloque de código
MACRO mm_getdetails (referenciada)
Explicación : Esta macro `mm_getdetails` (referenciada por el encabezado HELP START) es una herramienta de administración que extrae atributos y asociaciones de metadatos para un URI específico. Utiliza funciones de metadatos de SAS como `metadata_getnasl`, `metadata_getnasn` y `metadata_getattr` para recorrer y recopilar información sobre los objetos de metadatos, guardándolos en conjuntos de datos de salida. Su función está principalmente relacionada con la gestión y auditoría de recursos dentro de un entorno SAS.
¡Copiado!
/*** HELP START ***//**
@code_sas_json_prod_multi/mf_getuniquefileref_de.json mm_getdetails.sas
@code_sas/macro_with_brief_tag.sas extracts metadata attributes and associations for a particular uri
@code_sas_json_prod/print_macro_parameters.json [in] uri the metadata object for which to return
attributes / associations
@code_sas_json_prod/print_macro_parameters.json [in] sortoptions= Enables sorting of the output datasets, for example,
`SORTSEQ=LINGUISTIC`
@code_sas_json_prod/print_macro_parameters.json [out] outattrs= (work.attributes)
The dataset to create that contains the list of attributes
@code_sas_json_prod/print_macro_parameters.json [out] outassocs= (work.associations)
The dataset to contain the list of associations
<h4> Related Files </h4>
@code_sas_json_prod_multi/mf_getuniquelibref.test_de.json mm_getobjects.sas
@code_sas_json_prod_multi/mf_getuniquelibref.test_de.json 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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Allan Bowe (mencionado en el encabezado HELP START). Además, Rodney Sparapani (c) 2001-2006 (para _version.sas) y HMS Analytical Software GmbH (para macro_without_brief_tag.sas) son fuentes de código referenciadas que pueden haber influido en el desarrollo o la lógica de las macros relacionadas con la gestión de sesiones de usuario.
Documentación relacionada
Aucune documentation spécifique pour cette catégorie.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.