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

Hi folks - it could seems a silly question.

 

I have a varlist as a result of macroA.

%macroA;

...

%put &varlist;

%mend;

 

I need to use the created varlist in macroA in macroB as input.

but SAS errors me that &varlist is not recognised.

 

please help me in this regard....

1 ACCEPTED SOLUTION

Accepted Solutions
Reeza
Super User

The issue is variable scope. 

A macro variable created within a macro, is local, it only exists within the macro. To use the macro variable outside of the macro you need to change the scope to global, as someone has already indicated.

 

%global varlist;

 

If you're creating a macro variable using call symput, change to call symputx and use the -g option.

 

 

View solution in original post

5 REPLIES 5
Jagadishkatam
Amethyst | Level 16
Could you please let us know how you are using the &varlist in macro B. Is the macro variable &varlist resolving
Thanks,
Jag
Astounding
PROC Star

Within %macroA, add this statement early:

 

%global varlist;

 

That will keep it around after %macroA ends.

 

 

Reeza
Super User

The issue is variable scope. 

A macro variable created within a macro, is local, it only exists within the macro. To use the macro variable outside of the macro you need to change the scope to global, as someone has already indicated.

 

%global varlist;

 

If you're creating a macro variable using call symput, change to call symputx and use the -g option.

 

 

gamotte
Rhodochrosite | Level 12

Apart from using globals, you can make each call of the macro to be substituted

by the variables list as follows :

 

%macro macroA;

     /* Code to generate the list */

     [...]

 

     &varlist

 

%mend macroA;

 

%macro macroB;

 

    %let variables=%macroA;

    [...]

%mend macroB;

 

Moh
Obsidian | Level 7 Moh
Obsidian | Level 7

thanks...

sas-innovate-white.png

Missed SAS Innovate in Orlando?

Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.

 

Register now

What is Bayesian Analysis?

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.

SAS Training: Just a Click Away

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

Browse our catalog!

Discussion stats
  • 5 replies
  • 2174 views
  • 0 likes
  • 5 in conversation