Publicado el :
Macro EXTERNE

Verificación de existencia de archivo SASHDAT en CAS

Este código también está disponible en: Deutsch English Français
En espera de validación
Esta macro permite verificar la existencia de un archivo `.sashdat` en una CASLIB. Utiliza la acción CAS `table.fileinfo` ejecutada a través de `dosubl()` para recuperar la lista de archivos. Para optimizar el rendimiento en llamadas múltiples, el resultado se almacena en caché en una tabla WORK local (definida por `outprefix`). La macro devuelve 1 si el archivo existe, 0 si no.
Análisis de datos

Type : EXTERNE


Los datos provienen de la información del sistema del servidor CAS (lista de archivos en una CASLIB) recuperados a través de `PROC CAS`.

1 Bloque de código
PROC CAS Data
Explicación :
Este bloque condicional verifica si el caché existe. Si no, utiliza `dosubl` para ejecutar `PROC CAS` y la acción `table.fileinfo` para listar los archivos de la librería, luego un paso DATA para filtrar solo los archivos `.sashdat` y crear la tabla de caché.
¡Copiado!
1%IF %sysfunc(exist(&outprefix._&lib)) ne 1 %THEN %DO;
2 %let rc=%sysfunc(dosubl(%nrstr(
3 /* Read in table list (once per &lib per session) */
4 PROC CAS;
5 TABLE.fileinfo RESULT=source_list /caslib="&lib";
6 val=findtable(source_list);
7 saveresult val dataout=&outprefix._&lib;
8 QUIT;
9 /* Only keep name, without file extension */
10 DATA &outprefix._&lib;
11 SET &outprefix._&lib(where=(Name like '%.sashdat') keep=Name);
12 Name=upcase(scan(Name,1,'.'));
13 RUN;
14 )));
15%END;
2 Bloque de código
SAS Functions
Explicación :
Este bloque consulta la tabla de caché local a través de las funciones `open` y `fetch` para verificar si el nombre de la tabla solicitada (`&ds`) está presente, y devuelve el resultado booleano (1 o 0).
¡Copiado!
1/* Scan table for hdat existence */
2%let dsid=%sysfunc(open(&outprefix._&lib(where=(name="&ds"))));
3%syscall SET(dsid);
4%let rc = %sysfunc(fetch(&dsid));
5%let rc = %sysfunc(close(&dsid));
6 
7/* Return result */
8%IF "%trim(&name)"="%trim(&ds)" %THEN 1;
9%ELSE 0;
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 : Mathieu Blauw