Solución:
Puedes intentar usar:
put 'ERROR:' '/*customize error text here*/';
Si desea dejar de ejecutar el paso de datos, puede usar stop
declaración, por ejemplo:
DATA _NULL_;
IF prxmatch("/^TBDLZLd{4}_[A-Z]/",&tablename_in) eq 0 then do;
put 'ERROR:' "table name &tablename_in" does not match;
stop;
END;
RUN;
Si tiene macros y desea obtener un mensaje de ERROR en el paso de ejecución de macros, puede usar %put
:
%put ERROR: /*customize error text here*/;
Gracias @Tom
Tenga en cuenta el “truco” de romper la palabra ERROR (
put ‘ERR’ ‘OR:’...
) en dos partes solo es necesario si está utilizando una búsqueda tonta de sus registros en busca de errores. Los mensajes de error SAS normales en el registro siempre aparecen al principio de la línea. SAS / Studio, por ejemplo, no marca falsamente las líneas de programa que contienen ERROR como si fueran errores reales.
Gracias @MichaelKersten
Otro buen truco para NOTAS, ADVERTENCIAS y ERRORES de varias líneas es reemplazar el “:” con un “-” para la segunda línea y las consecutivas. Ejemplo:
%put WARNING: first line of warning; %put WARNING- second line of warning;
Utilizar el ABORT CANCEL
declaración. El paso de datos dejará de ejecutarse y los siguientes pasos del código enviado no se procesarán.
Por ejemplo:
data _null_;
set sashelp.class;
if name = "John" then do;
put 'ERR' 'OR: My error message';
abort cancel;
end;
run;
* This step is not done due to earlier ABORT CANCEL;
data _null_;
set sashelp.class;
where name like 'J%';
run;
De ayuda:
CANCELAR
provoca la cancelación de la ejecución de las declaraciones enviadas. Las acciones dependen del método de operación.
modo por lotes y modo no interactivo
- finaliza todo el programa SAS y el sistema SAS.
- escribe un mensaje de error en el registro SAS.
entorno de ventanas y modo de línea interactiva
- borra solo el programa presentado actualmente.
- no afecta a otros programas enviados posteriormente.
- escribe un error en el registro SAS.
servidor de espacio de trabajo y servidor de proceso almacenado
- borra solo el programa enviado actualmente.
- no afecta a otras llamadas de envío posteriores.
- escribe un mensaje de error en el registro SAS.
Servidor de aplicaciones SAS IntrNet
- crea una ejecución separada para cada solicitud y envía el código de solicitud. Un argumento CANCEL en el código de solicitud borra el código enviado actual pero no termina la ejecución o la sesión SAS.