The -SYSPARM option adds flexibility when invoking a SAS program in batch mode. According to SAS documentation, the quoted string can be up to 200 characters in length and can obtained by using the &sysparm macro variable, or sysparm() function.
The below macro was created to parse comma seperated name=value pairs passed to SAS via a SYSPARM string such as the following batch job example:
"sas.exe" -sysin "myprog.sas" -sysparm "mode=dev,date=20130625"
%macro sysparmpairs() ; %local i pair name ; %let i = 1 ; %do %while( %scan( %bquote( &sysparm. ), &i ) ne %str() ) ; %let pair = %scan( %bquote(&sysparm.), &i ) ; %let name = %scan(&pair,1,=) ; %global &name ; %let &name = %scan( &pair, 2, = ) ; %let i = %eval( &i + 1 ) ; %end ; %mend ; %sysparmpairs() %put _user_ ; GLOBAL DATE 20130625 GLOBAL MODE dev
The more recnetly supported %sysget function is an alternative - perhaps easier.
ReplyDelete