2012-02-27 17 views
5

Estoy usando una macro para detener mi programa SAS en caso de error, pero siempre se desconecta del servidor y luego ya no puedo recuperar mis conjuntos de datos temporales.Detener el programa SAS Error

I han intentado:

OPTIONS ERRORABEND; 

Aquí es la macro que he intentado:

%macro errchk; 
%if &syserr >0 and &syserr ne 4 %then %abort; 
%mend errchk; 

Éste mantiene el procesamiento de los pasos siguientes de datos después de alcanzar un error.

No puedo encontrar la manera de detener la ejecución del resto del programa, pero NO desconectarme del servidor SAS. ¿Algunas ideas?

+0

Así se está conectando a un servidor remoto para ejecutar su programa? –

+0

Me estoy conectando en el trabajo, así que creo que sí –

+0

Tal vez te ayude si configuras algunos interruptores goto para permitir que el procesamiento llegue al final de los códigos después de detectar errores. –

Respuesta

1

¿Has probado a usar% goto? En lugar de desencadenar un aborto, puede redirigir su macro a un punto de salida e imprimir algo en el registro para indicar qué parte de su código falló.

se da un ejemplo de la sintaxis aquí:

http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000209058.htm

Creo que el problema con errchk% anterior es, probablemente, que la declaración% de aborto sólo se aplica a sí mismo errchk%. Si coloca% aborta llamadas en medio de su código de macro sin envolverlas en otra macro, puede tener más éxito con ese enfoque. O puede hacer algo para retrasar la ejecución del% de aborto hasta que% errchk ya se haya completado, tal vez enviándolo en un% nrstr()? Avíseme si funciona: podré probarlo mañana.

Cuestiones relacionadas