Issue in Customizing code to run the jobs irrespective of regions

Reply
Contributor
Posts: 43

Issue in Customizing code to run the jobs irrespective of regions

HI Team,

 

I am customizing the code to run the job in all environments. Below is sample code existing today.

 

%macro DATA_CONN_DEV;

%PUT "It's a DEV ";

%mend DATA_CONN_DEV;

 

Now I have modified the code to customize.

%let reg=dev;

 

%macro DATA_CONN_&reg.; ---> Here macro name should contain environment name like dev,uat or prod

%PUT "It's a &reg,";

%mend DATA_CONN_&reg.;

%DATA_CONN_&reg.;

 

If I mention environment values in %let statement above code should work for all DEV,UAT,PROD.

But I am getting below error. Please suggest me what is the better way to customize this code.

 

ERROR: Expected semicolon not found. The macro will not be compiled.

ERROR: A dummy macro will be compiled.

Super User
Posts: 8,590

Re: Issue in Customizing code to run the jobs irrespective of regions

Just use a macro parameter:

%macro data_conn_dev(reg);
%put "It's a &reg.";
%mend data_conn_dev;

%let reg=DEV;

%data_conn_dev(&reg.);

Note that &reg. is local within the macro, so it's safe to use the same name in the global macro context.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Super User
Super User
Posts: 8,634

Re: Issue in Customizing code to run the jobs irrespective of regions

You would not do it like that.  The line:

%macro DATA_CONN_&reg.; 

This is the macro signature, it needs to be fixed, you cannot macrotize macro!

 

What you want is a macro parameter:

%macro data_conn (env=);
  %put Its a &env.;
%mend data_conn;

%data_conn (env=dev);
%data_conn (env=prod);
Ask a Question
Discussion stats
  • 2 replies
  • 77 views
  • 0 likes
  • 3 in conversation