BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
manya92
Fluorite | Level 6

Thank You

 

Tom
Super User Tom
Super User

If you want to make the macro more flexible add parameters.  You can include logic to add a default value. 

You can have SAS add the default value for you if you make the parameters non-positional.

%macro patient_obs(dsn=&syslast);
....
  from &dsn 
....
%mend ;

Or you can add your own logic.

%macro patient_obs(dsnt);
%if 0=%length(&dsn) %then %let dsn=&syslast;
%if not %sysfunc(exist(&dsn)) %then %do;
  %put &=dsn not found.;
%end;
....
  from &dsn 
....
%mend ;
manya92
Fluorite | Level 6

in this code  :- what is INTO:npatients trimmed nobs trimmed for ? i dont know what trimmed means in this case

%macro patient_obs() ;
%global nobs npatients ;
proc sql noprint;
  select
         count(enrolid) format=32.
       , count(N) format=32.
    into 
         :npatients trimmed 
       , :nobs trimmed
  from &syslast. 
  ;
quit ;
%put Dataset &syslast. has &nobs. observations and &npatients. patients ;
%mend patient_obs;
Tom
Super User Tom
Super User

Apparently the new SAS 9.4 documentation is defective.

Look at the SAs 9.3 documentation instead.

 

INTO clause

CFC_SAS_Communities_400x225.jpg

Call for content now open!

It's your turn to help shape SAS Innovate 2027. Share your expertise and inspire the SAS community.

Submit your proposal →

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 18 replies
  • 8092 views
  • 3 likes
  • 5 in conversation