Tengo una macro que he creado en mi máquina local en un archivo .sas. También tengo un conjunto de datos locales que he estado usando para probar la macro. Este conjunto de datos tiene las mismas descripciones que un conjunto de datos remoto, pero solo menos observaciones. Ahora, estoy tratando de ejecutar mi macro local contra el conjunto de datos remoto. Aquí es básicamente lo que tengo:¿Llamar macro SAS local en el bloque RSUBMIT?
Esto funciona como se esperaba:
%include "C:\my_sas_macro.sas";
%my_sas_macro(my_data=work.localdata)
pero entonces esto genera un error (sigue de error):
%include "C:\my_sas_macro.sas";
rsubmit;
%my_sas_macro(my_data=remotelib.remotedata)
endrsubmit;
El registro con error:
125 %include "C:\my_sas_macro.sas";
136
137 rsubmit;
NOTE: Remote submit to REMOTEID.__7551 commencing.
WARNING: Apparent invocation of macro MY_SAS_MACRO not resolved.
83 %my_sas_macro(my_data=remotelib.remotedata)
-
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
84 endrsubmit;
NOTE: Remote submit to REMOTEID.__7551 complete.
Estoy bastante seguro de que necesito transferir de alguna manera el bloque% macro /% remendar al servidor, pero no me puedo imaginar cómo. He visto el %SYSLPUT
pero eso es para macro variables y no macros completos.
de todos modos hay que puedo dirigir mi macro en el servidor sin tener que acaba de SSH sobre el código y %include
allí?
Gracias!
[Editar] implementado la solución
Así basa en respuesta @ CarolinaJay65 's me ocurrió con la siguiente macro que está funcionando bastante bien para mí hasta ahora.
%macro include_on_server(file=);
%let server_file = ~/temp.sas;
%SYSLPUT macro_file=&file;
%SYSLPUT server_file = &server_file;
rsubmit;
proc upload
infile= "¯o_file."
outfile= "&server_file."
; run;
%include "&server_file.";
endrsubmit;
%mend include_on_server;
Esto me permite a llamar %include_on_server(file="C:\my_file.sas")
y luego se incluye ahora en mi sesión remota.
Gracias, me quedo echa un vistazo a 'Proc Upload;' Para completar, ¿podrías mostrar la forma correcta de "asignar la macro completa a una variable macro"? –
Gracias, esto funciona para mí, pero es una especie de PITA porque tengo que administrar la estructura del directorio en el servidor (no creará automáticamente directorios que no existen). Lo mantendré como la respuesta acceccionada a menos que surja alguna otra solución que no requiera que administre archivos del lado del servidor. –
Agregaría endrsubmit; al final para dejar en claro que todo se ejecuta de forma remota. – vasja