Hi,
I have wrote a code to illustrate the use of %sysfunc in a open code. The first code is not using %sysfunc, instead I use macro functions :
%let test=a/b/c.sas;
%let nsys=%substr ( &test,1,%length (%scan ( &test,-1,/) ) );
%put &nsys;
Now I would like to use the same logic but this time I will use %sysfunc with sas function ( not macro function)
%let test=a/b/c.sas;
%let ysys=%sysfunc ( substr ( &test,1,length (scan ( &test,-1,/) ) ) );
%put &ysys;
But I get an error : ERROR: Argument 3 to function SUBSTR referenced by the %SYSFUNC or %QSYSFUNC macro function is not a number. ERROR: Invalid arguments detected in %SYSCALL, %SYSFUNC, or %QSYSFUNC argument list. Execution of %SYSCALL statement or %SYSFUNC or %QSYSFUNC function reference is terminated.
It looks like the type of value returned by length() is not numeric. What is the difference between the codes that make my %sysfunc version not working properly ?
Another question/advice, is it possible to use %sysfunc with a macro function ? example %sysfunc(%scan(&alpha,1)) or should we only use %sysfunc with non macro sas function like %sysfunc(scan(&alpha,1))
Thanks in advance
saskap
... View more