Publicado el :
Utilidad CREATION_INTERNE

Verificación de la existencia de una carpeta en SAS Drive

Este código también está disponible en: Deutsch English Français
Attention : Este código requiere privilegios de administrador.
La macro `mfv_existfolder` toma una ruta de carpeta como parámetro (`path`). Utiliza la función `filename` con el motor `filesrvc` para probar la presencia de la carpeta en SAS© Drive. El comportamiento estándar de la función `filename` es modificar el valor de `&syscc` en caso de falla (carpeta no encontrada). Para controlar este comportamiento, la macro incluye un restablecimiento explícito de `&syscc` a 0 si la carpeta no se encuentra. Se realizan llamadas a la macro `mf_abort` al principio y al final para gestionar las condiciones de error y asegurar una salida limpia si `&syscc` indica un problema antes o después de la ejecución del cuerpo principal de la macro. El uso de una referencia de archivo única (`%mf_getuniquefileref()`) garantiza que no haya conflicto con otras referencias de archivo. La interacción con SAS© Drive y el motor `filesrvc` puede implicar operaciones que requieran privilegios administrativos, de ahí la clasificación 'admin: 1'.
Análisis de datos

Type : CREATION_INTERNE


La macro no procesa datos en sí, sino que interactúa con el sistema de archivos de SAS Drive (metadatos de existencia de carpeta). No se leen ni se crean datos externos dentro de la propia macro para su procesamiento analítico.

1 Bloque de código
MACRO (mf_abort)
Explicación :
Este bloque verifica el valor de la variable de sistema `&syscc`. Si `&syscc` no es cero (indicando un error previo), se llama a la macro `mf_abort` para detener la ejecución y mostrar un mensaje de error. Esto garantiza que la macro `mfv_existfolder` no se ejecute si el entorno ya está en un estado de error.
¡Copiado!
1%mf_abort(
2 iftrue=(&syscc ne 0),
3 msg=Cannot enter mfv_existfolder.sas with syscc=&syscc
4 )
2 Bloque de código
MACRO
Explicación :
Declara las variables macro locales `fref`, `rc` y `var`. La variable `fref` se asigna luego a una referencia de archivo única a través de la macro `mf_getuniquefileref` para evitar conflictos y asegurar la unicidad de la referencia de archivo temporal.
¡Copiado!
1%local fref rc var;
2%let fref=%mf_getuniquefileref();
3 
3 Bloque de código
MACRO
Explicación :
Este bloque es el núcleo de la macro. Intenta asignar una referencia de archivo (`fref`) a una ruta de carpeta (`&path`) en SAS Drive utilizando el motor `filesrvc`. La función `filename` devuelve 0 si la asignación tiene éxito (lo que indica que la carpeta existe). Si la carpeta existe, la macro devuelve el valor '1'. Si la carpeta no existe, la función `filename` establece `&syscc` en un valor distinto de cero; la macro luego restablece `&syscc` a 0 en el bloque `%else` para evitar que este fallo afecte futuras operaciones. La variable `var` y la referencia de archivo se limpian después de su uso.
¡Copiado!
1%IF %sysfunc(filename(fref,,filesrvc,folderPath="&path"))=0 %THEN %DO;
2 1
3 %let var=_FILESRVC_&fref._URI;
4 %let rc=%sysfunc(filename(fref));
5 %symdel &var;
6 %END;
7 %ELSE %DO;
8 0
9 %let syscc=0;
10 %END;
4 Bloque de código
MACRO (mf_abort)
Explicación :
Este bloque verifica nuevamente el valor de `&syscc` antes de salir de la macro. Si `&syscc` no es nulo, se llama a la macro `mf_abort` para señalar un error, indicando un problema ocurrido durante la ejecución del cuerpo de la macro `mfv_existfolder`.
¡Copiado!
1%mf_abort(
2 iftrue=(&syscc ne 0),
3 msg=Cannot leave mfv_existfolder.sas with syscc=&syscc
4 )
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