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

%syslput and %sysrput assign a global macro variable as a result.

/*remote access*/
%let wrds=wrds.wharton.upenn.edu 4016;
signon wrds username=_prompt_;

/*pass local macro ONE to remote*/
%macro one(one);
%syslput one=&one;
rsubmit;
%put &one;
endrsubmit;
%mend;

/*prints 1234 remotely*/
%one(1234)

/*ONE works globally*/
rsubmit;
%sysrput one=&one;
endrsubmit;

/*prints 1234 here*/
%put &one;

Can I assign a local macro variable in this case?

1 ACCEPTED SOLUTION

Accepted Solutions
ChrisNZ
Tourmaline | Level 20

> I want to create a server-side local (rather than global) macro variable from a local-side local macro variable.

 I understand you mean local as in in macro-local, not host-local.

You can't since %syslput sends the value to the remote host outside of a remote macro environment.

%macro have(local_var_at_local);
  %syslput local_var_at_server=&local_var_at_local;  /* sending a host-local macro-local variable to the remote host, no macro-local environment on that host */
  rsubmit;                                                                          /* connecting to the remote host macro-global environment */
    %put &local_var_at_server is NOT a local macro variable at the server session.; /* nothing local here */
  endrsubmit;
%mend;
%have

 The only way would be to pull (rather than push/send) macro variables from the remote host from within a macro. There is no command to execute such a pull.

View solution in original post

3 REPLIES 3
ChrisNZ
Tourmaline | Level 20

Your question is confusing.

%SYSLPUT is submitted in a (most likely local) session and creates/copies macro variables to the server session.

%SYSRPUT is remote-submitted to retrieve the value of a macro variable stored on the remote host and creates/updates macro variables on the calling (most likely local) session.

So they copy macro variable values from a SAS session to another.

What do you want to do?

Junyong
Pyrite | Level 9

%SYSLPUT is submitted in a (most likely local) session and creates/copies macro variables to the server session—here %SYSLPUT passes either local or global macro variables from the local session to the server session only as global macro variables.

%macro have(local_var_at_local);
%syslput local_var_at_server=&local_var_at_local;
rsubmit;
%put &local_var_at_server is a local macro variable at the server session.
endrsubmit;
%mend;
%have

rsubmit;
%put &local_var_at_server is available though was local inside have macro;
endrsubmit;

I want to create a server-side local (rather than global) macro variable from a local-side local macro variable.

ChrisNZ
Tourmaline | Level 20

> I want to create a server-side local (rather than global) macro variable from a local-side local macro variable.

 I understand you mean local as in in macro-local, not host-local.

You can't since %syslput sends the value to the remote host outside of a remote macro environment.

%macro have(local_var_at_local);
  %syslput local_var_at_server=&local_var_at_local;  /* sending a host-local macro-local variable to the remote host, no macro-local environment on that host */
  rsubmit;                                                                          /* connecting to the remote host macro-global environment */
    %put &local_var_at_server is NOT a local macro variable at the server session.; /* nothing local here */
  endrsubmit;
%mend;
%have

 The only way would be to pull (rather than push/send) macro variables from the remote host from within a macro. There is no command to execute such a pull.

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

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
  • 3 replies
  • 1772 views
  • 0 likes
  • 2 in conversation