54%macro mp_filtervalidate(inref,targetds,abort=YES,outds=work.mp_filtervalidate);
56%mp_abort(iftrue= (&syscc ne 0 or &syserr ne 0)
58 ,msg=%str(syscc=&syscc / syserr=&syserr - on macro entry)
61%local fref1 flt_clause flt_msg;
62%let fref1=%mf_getuniquefileref();
66 infile &inref end=eof;
67 length flt_clause $4000;
71 put
"validate select * from &targetds";
79 flt_clause=cats(flt_clause,ifc(_n_>1,
' ',
''),strip(_infile_));
82 call symputx(
'flt_clause',flt_clause,
'l');
89 if &sqlrc or &syscc or &syserr then
do;
90 REASON_CD=
'VALIDATION_ERR'!!
'OR: '!!
91 coalescec(symget(
'SYSERRORTEXT'),symget(
'SYSWARNINGTEXT'));
99%
if %mf_nobs(&outds)>0 %then %
do;
100 %
if &abort=YES %then %
do;
103 length flt_msg $4000;
104 call symputx(
'REASON_CD',reason_cd,
'l');
107 flt_msg=catx(
' ',
'Filter validation issues:',reason_cd
108 ,catx(
' ',
'Clause: where',symget(
'flt_clause')));
109 call symputx(
'flt_msg',flt_msg,
'l');
120%mend mp_filtervalidate;