Ho una macro che ho creato sul mio computer locale in un file .sas. Ho anche un set di dati locale che ho usato per testare la macro. Questo set di dati ha gli stessi descrittori di un set di dati remoto, ma solo meno osservazioni. Ora, sto cercando di eseguire la mia macro locale contro il set di dati remoto. Qui è fondamentalmente quello che ho:Chiama la macro SAS locale nel blocco RSUBMIT?
Questo funziona come previsto:
%include "C:\my_sas_macro.sas";
%my_sas_macro(my_data=work.localdata)
ma allora questo genera un errore (errore segue):
%include "C:\my_sas_macro.sas";
rsubmit;
%my_sas_macro(my_data=remotelib.remotedata)
endrsubmit;
Il registro con l'errore:
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.
Sono abbastanza sicuro di aver bisogno di trasferire in qualche modo il blocco% macro /% mend sul server, ma non riesco a capire fuori come Ho visto il %SYSLPUT
ma quello è per le variabili di macro e non pieno.
C'è comunque che posso eseguire la mia macro sul server senza dover solo SSH sul codice e %include
lì?
Grazie!
[Edit] implementato la soluzione
Quindi, sulla base 's @ CarolinaJay65 risposta mi si avvicinò con la seguente macro che sta lavorando abbastanza bene per me finora.
%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;
Questo mi permette di chiamare solo %include_on_server(file="C:\my_file.sas")
e poi è ora incluso nella mia sessione remota.
Grazie, sarò controlla 'Upload proc;' Per completezza, saresti in grado di mostrare il modo corretto di "assegnare l'intera macro a una variabile macro"? –
Grazie, questo funziona per me, ma è una specie di PITA perché devo gestire la struttura delle directory sul server (non creerà automaticamente le directory che non esistono). Terrò questa come risposta accetata a meno che non venga fornita qualche altra soluzione che non mi imponga di gestire i file sul lato server. –
aggiungerei endrsubmit; alla fine per chiarire che tutto è eseguito da remoto. – vasja