Let's say you have a fairly long SAS program and near the top you assign a libref but keyed in the folder incorrectly.
It becomes frustrating to wait for the program to finish only to find out you have a bad library reference or libref. As a result, I wrote the short validlibref() macro that tests for a valid libref ( expecting a zero value ). If the libref is not valid then an ERROR message is written to the SAS log and the %abort cancel statement will stop the program from continuing but will not shut down SAS in interactive mode.
%macro validlibref( libref ) ; %if %sysfunc( libref( &libref. ) ) ne 0 %then %do ; %put %str(E)RROR: Invalid libref: &libref., terminating program. ; %abort cancel ; %end ; %mend ; %validlibref( sashlp ) /* used the invalid libref of SASHLP vs SASHELP */ /* these statements will not execute if there is not a valid libref */ data x ; x = 1 ; run ; 46 %macro validlibref( libref ) ; 47 %if %sysfunc( libref( &libref. ) ) ne 0 %then %do ; 48 %put %str(E)RROR: Invalid libref: &libref., terminating program. ; 49 %abort cancel ; 50 %end ; 51 %mend ; 52 53 %validlibref( sashlp ) ERROR: Invalid libref: sashlp, terminating program. ERROR: Execution canceled by an %ABORT CANCEL statement. NOTE: The SAS System stopped processing due to receiving a CANCEL request.
No comments:
Post a Comment