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.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.
Ready to level-up your skills? Choose your own adventure.