Hello everyone,
It seems in the SAS code below ,%goto statement doesn't work properly in a data step.
please advise.
Thanks!.
Mike
%macro testgoto(aaa);
data one;
x=symget('aaa');
put x=;
if x='ok' then do;
put ''x=ok;
%goto exit;
end;
else
do;
put 'x ^=ok';
end;
run;
%put Before exit;
%exit:
%put after exit;
%mend testgoto;
%testgoto(aaa=ok);
%GOTO doesn't have anything to do with a data step. It is part of SAS macro language. SAS macro language is just used to generate text strings that SAS can then try to interpret as a program.
Your macro has no macro logic in it. So the generated code will always be:
data one;
x=symget('aaa');
put x=;
if x='ok' then do;
put ''x=ok;
That is not even a complete data step. So if you call this macro you will need too at least add an END; statement to close the DO loop that the code generated by the macro started.
This is not an appropriate use of Macro statements. You can accomplish everything you need in a data step, without ever using a macro. See the documentation for the LINK statement for examples on how to branch to specific code.
Hello,
You can use goto in a data step but without the percentage at the begining.
Just goto instead of %goto.
Hope this help.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.