El script no lee ningún dato fuente. Su finalidad es crear una función reutilizable que, a su vez, escribe datos textuales proporcionados como parámetro en un archivo del sistema de archivos. El origen de los datos procesados por la función es, por lo tanto, externo a este script pero interno a su propia llamada.
1 Bloque de código
PROC FCMP
Explicación : Este bloque se ejecuta si `wrap=YES`. Utiliza `PROC FCMP` para definir y compilar una nueva función `mcf_string2file`. La función utiliza las funciones de archivo de SAS (`filename`, `fopen`, `fput`, `fwrite`, `fclose`) para escribir una cadena de caracteres en un archivo. Devuelve 0 en caso de éxito y -1 en caso de error (ej: imposible abrir el archivo).
¡Copiado!
proc fcmp outlib=&lib..&cat..&pkg;
function mcf_string2file(filepath $, string $, mode $);
if mode='APPEND' then fmode='a';
else fmode='o';
length fref $8;
rc=filename(fref,filepath);
if (rc ne 0) then return( -1 );
fid = fopen(fref,fmode);
if (fid = 0) then return( -1 );
rc=fput(fid, string);
rc=fwrite(fid);
rc=fclose(fid);
rc=filename(fref);
return(0);
endsub;
quit;
1
PROC FCMP outlib=&lib..&cat..&pkg;
2
3
function mcf_string2file(filepath $, string $, mode $);
4
IF mode='APPEND'THEN fmode='a';
5
ELSE fmode='o';
6
LENGTH fref $8;
7
rc=filename(fref,filepath);
8
IF (rc ne 0) THEN return( -1 );
9
fid = fopen(fref,fmode);
10
IF (fid = 0) THEN return( -1 );
11
rc=fput(fid, string);
12
rc=fwrite(fid);
13
rc=fclose(fid);
14
rc=filename(fref);
15
return(0);
16
endsub;
17
18
19
QUIT;
2 Bloque de código
OPTIONS
Explicación : Este bloque de código macro verifica si la biblioteca de funciones (`&lib..&cat`) ya está presente en la opción del sistema `CMPLIB`. Si no la encuentra, la añade dinámicamente a través de `options insert=(CMPLIB=...)`. Esto garantiza que la función FCMP recién creada sea inmediatamente accesible en la sesión SAS.
¡Copiado!
/* insert the CMPLIB if not already there */
%let cmpval=%sysfunc(getoption(cmplib));
%let found=0;
%do i=1 %to %sysfunc(countw(&cmpval,%str( %(%))));
%let var=%scan(&cmpval,&i,%str( %(%)));
%if &var=&lib..&cat %then %let found=1;
%end;
%if &found=0 %then %do;
options insert=(CMPLIB=(&lib..&cat));
%end;
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.
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.