software - sas wikipedia
Condicionalmente terminar SAS (2)
Estoy tratando de detener el procesamiento de un programa SAS si se ha cumplido una determinada condición. Tengo una macrovariable creada y si esa variable es> 0.5 entonces quiero una parada del programa.
El programa actual se ve como
data a1;
set Server.a2;
run;
%macro1(a1);
%macro2(_t1); /* _t1 generated from %macro1.
data _null_;
if %stopit(_t2) > 0.5 then `?????`; /* _t2 generated from %macro2.
run;
%macro3;
%macro4;
Si %macro(_t2) > 0.5
, quiero detener todo el programa sin ejecutar el resto (% macro3 y% macro4)
Personalmente tiendo a usar siempre abort cancel;
(o %abort cancel;
) ya que ofrece flexibilidad cuando se ejecuta en modo interactivo y en modo por lotes.
Interactivamente, simplemente cancelará el código enviado (pero deje su sesión abierta).
En el modo por lotes, detendrá todo el trabajo.
También hay opciones adicionales. Puede encontrar una lista completa en la documentación aquí .
También está el comando endsas
pero no me gusta, ya que cierra la sesión interactiva actual (y es más difícil de ejecutar condicionalmente).
Aquí hay un ejemplo:
%let x = 1;
data _null_;
if &x then abort cancel;
put "This won''t print";
run;
%put This won''t print either;
Los resultados en el registro mostrarán:
ERROR: Execution terminated by an ABORT CANCEL statement at line 4 column 14.
_ERROR_=1 _N_=1
Use la siguiente declaración:
abort abend;