DATA Step, Macro, Functions and more

Resolve psoitional paramters with macro variable variables

Reply
Super Contributor
Posts: 702

Resolve psoitional paramters with macro variable variables

I tried the following to resolve the three keyword parameters libname, dname and ordby.

 

so libname is passed &source is where the dataset(dname) events is present,I want to sort them in the order age,event_name,event_date.

I;m getting the following error:

ERROR: All positional parameters must precede keyword parameters.

MLOGIC(DERIVE_SEQNUM): Ending execution.

180: LINE and COLUMN cannot be determined.

NOTE: NOSPOOL is on. Rerunning with OPTION SPOOL might allow recovery of the LINE and COLUMN

where the error has occurred.

ERROR 180-322: Statement is not valid or it is used out of proper order.

 

%macro derive_seqnum(libname=,dname=,ordby=);

proc sql;

create table &dname. as

select *

from &libname..&dname.

order by &ordby.

quit;

%mend derive_seqnum;

%derive_seqnum(libname=&source,dname=events,ordby=age,event_name,event_date);

 

Super User
Posts: 22,874

Re: Resolve psoitional paramters with macro variable variables

ordby=age,event_name,event_date -> this is your issue.

 

The answer (from a decade ago) is here:

http://support.sas.com/kb/31/012.html

 

Super User
Super User
Posts: 9,227

Re: Resolve psoitional paramters with macro variable variables

Sorry, its not entirely clear to me what this code is even to achieve?  It seems like you could simplfiy this down to:

proc sort data=&source..events;
  by age event_name event_date;
run;

The rest of it is just wasted characters.  Then you "could" - although I see no benefit and lots of pitfalls - of macro'ing the code;

%macro Do_Sort (lib=,mem=,ord=);
proc sort data=&lib..&mem.; by &ord.; run;
%mend Do_Sort;

%Do_Sort (lib=&source.,mem=events,ord=age event_name event_date);

 

 

Ask a Question
Discussion stats
  • 2 replies
  • 59 views
  • 0 likes
  • 3 in conversation