Help using Base SAS procedures

problem with using %goto in a data step

Reply
Regular Contributor
Posts: 222

problem with using %goto in a data step

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);

Super User
Super User
Posts: 7,039

Re: problem with using %goto in a data step

Posted in reply to Mike_Davis

%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.

Trusted Advisor
Posts: 1,913

Re: problem with using %goto in a data step

Posted in reply to Mike_Davis

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.

New Contributor
Posts: 4

Re: problem with using %goto in a data step

Posted in reply to Mike_Davis

Hello,

You can use goto in a data step but without the percentage at the begining.

Just goto instead of %goto.

Hope this help.

Ask a Question
Discussion stats
  • 3 replies
  • 371 views
  • 0 likes
  • 4 in conversation