DATA Step, Macro, Functions and more

&syserr macro not working in PROC DATASETS

Reply
Contributor
Posts: 41

&syserr macro not working in PROC DATASETS

Hi I'm using Proc datasets moving option to moving data from one library to another if datasets not available I need to capture Warning/error from code. Same&syserr macro working in data step but not working in proc datasets. pls advise me how to capture error.

/*1-WORKING*/

data NULL;

set doesnotexist;

run;

%put &syserr;

/*2-NOT WORKING*/

PROC DATASETS;

COPY IN=Source OUT=Target MOVE MEMTYPE=DATA;

RUN;

%put &syserr;

Contributor
Posts: 60

Re: &syserr macro not working in PROC DATASETS

Hi Chirumalla,

PROC DATASETS is part of run group processing, which means that the step doesn't actually finish until it encounters a QUIT statement or the start of a new step. A plain old run statement just executes your COPY statement but does not terminate PROC DATASETS and SYSERR only gets updated correctly when the step has terminated. Simply add a quit statement before checking the value of SYSERR. 

 

/*1-WORKING*/
data NULL;
set doesnotexist;
run;
%put error is &syserr;
/*2-ALSO WORKING*/
PROC DATASETS;
COPY IN=Source OUT=Target MOVE MEMTYPE=DATA;
RUN;
quit;
%put error is &syserr;

Michelle
Ask a Question
Discussion stats
  • 1 reply
  • 211 views
  • 0 likes
  • 2 in conversation