Publicado el :
Administración CREATION_INTERNE

Actualización de la biblioteca de macros Lilly

Este código también está disponible en: Deutsch English Français
Attention : Este código requiere privilegios de administrador.
La macro AHGrefreshlilly realiza varias operaciones clave. Primero, utiliza pasos DATA con el comando `filename pip pipe 'dir ...'` para listar todos los archivos '.sas©' presentes en los subdirectorios 'core' e 'inter' de una ruta definida por la variable `kanbox`. Filtra los archivos para excluir 'refreshmac.sas©' y, si se especifica, para incluir solo los archivos listados en el parámetro 'files'. Cada archivo SAS© encontrado se incluye dinámicamente en la sesión SAS© a través de `%include`. Segundo, la macro inicializa rutas de red (`SAdrive`, `macbackup`) y define una libname `netmac` que apunta al directorio de respaldo de las macros. Luego utiliza comandos del sistema (`x mkdir`, `x copy`) para crear un directorio con marca de tiempo y copiar todos los archivos existentes de la biblioteca de macros a este nuevo directorio de respaldo. Finalmente, copia los catálogos (probablemente conteniendo las macros compiladas) del catálogo temporal `work` a la libname `netmac` (el directorio de respaldo), asegurando así que la biblioteca de macros esté actualizada y respaldada.
Análisis de datos

Type : CREATION_INTERNE


El script no utiliza conjuntos de datos SAS externos directamente. Los dos 'DATA _NULL_' se utilizan para ejecutar comandos del sistema y manipular rutas de archivos, sin crear conjuntos de datos persistentes. Los datos procesados son principalmente metadatos de archivos (nombres de archivos SAS) y rutas de acceso.

1 Bloque de código
DATA STEP
Explicación :
Este bloque de paso de datos SAS, que no crea un conjunto de datos persistente ('_NULL_'), utiliza la función `filename pip pipe 'dir ...'` para ejecutar el comando del sistema 'dir' y listar los nombres de archivos '.sas' en el directorio 'core' definido por `kanbox`. Los nombres de archivo se leen uno por uno. Incluye una lógica para excluir 'refreshmac.sas' y para filtrar archivos si se proporciona el parámetro `&files`. Para cada archivo relevante, construye un comando `%include` y lo ejecuta dinámicamente a través de `call execute`, lo que permite incluir otras macros o códigos SAS.
¡Copiado!
1 DATA _null_;
2 filename pip pipe "dir "&kanbox\core\*.sas " /b";
3 INFILE pip;
4 LENGTH file $100 com $300;
5 INPUT file ;
6 IF index(file,'refreshmac.sas') THEN return;
7 IF ("&files" ne '') and (not index(upcase("&files"),trim(upcase(file)))) THEN return;
8 com=("%include "&kanbox\core\"||file||"';");
9 put com=;
10 call execute(com);
11 RUN;
2 Bloque de código
DATA STEP
Explicación :
Similar al bloque anterior, este segundo paso de datos también utiliza un 'DATA _NULL_' para listar e incluir dinámicamente archivos '.sas'. La única diferencia es que se dirige al directorio 'inter' en lugar de 'core' en la ruta `kanbox`, realizando la misma lógica de filtrado e inclusión dinámica para las macros o códigos ubicados en este directorio.
¡Copiado!
1 DATA _null_;
2 filename pip pipe "dir "&kanbox\inter\*.sas " /b";
3 INFILE pip;
4 LENGTH file $100 com $300;
5 INPUT file ;
6 IF index(file,'refreshmac.sas') THEN return;
7 IF ("&files" ne '') and (not index(upcase("&files"),trim(upcase(file)))) THEN return;
8 com=("%include "&kanbox\inter\"||file||"';");
9 put com=;
10 call execute(com);
11 RUN;
3 Bloque de código
Macro et commandes système
Explicación :
Este bloque define variables locales para las rutas de red (`SAdrive`, `macbackup`) y asigna una libname `netmac` al directorio de respaldo de las macros. Luego utiliza dos macros (`%AHGdateandtime`, `%AHGpm`) para generar una fecha/hora en la variable `mydt` (no proporcionadas, se supone que existen en otro lugar). Crucialmente, ejecuta comandos del sistema a través de la instrucción `x`: `x mkdir` para crear un nuevo directorio con marca de tiempo para la copia de seguridad, y `x copy` para copiar los archivos existentes de la biblioteca a este nuevo directorio. Finalmente, se utiliza `PROC DATASETS` para copiar todos los catálogos (que contienen las macros compiladas) de la biblioteca temporal 'work' a la libname 'netmac', asegurando así la copia de seguridad y la actualización de la biblioteca de macros.
¡Copiado!
1 %local macbackup;
2 %let SAdrive=\\gh3nas01\gh3nas_sales.grp\LCDDMAC\STATS\SA;
3 %let macbackup=&sadrive\Macro library\Macro learning tool\sas7bcat\mac;
4
5 LIBNAME netmac "&macbackup";
6 %local mydt;
7 %AHGdateandtime(mydt);
8 %AHGpm(mydt);
9
10 x mkdir "&macbackup&mydt";
11 x copy "&macbackup\*.*" "&macbackup&mydt";
12 PROC DATASETS lib=work;
13 copy out=netmac memtype=catalog;
14 RUN;
15 QUIT;
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.