DATA Step, Macro, Functions and more

MACRO - The macro GRAFICO is still executing and cannot be redefined. A dummy macro will be compiled

Accepted Solution Solved
Reply
Contributor
Posts: 60
Accepted Solution

MACRO - The macro GRAFICO is still executing and cannot be redefined. A dummy macro will be compiled

hi,

why i recive this error ?

 

ERROR: The macro GRAFICO is still executing and cannot be redefined.

ERROR: A dummy macro will be compiled.

 

for this macro:

%macro Grafico (REGION=,LDS=,FUNZIONE=, N_ATM_SOGLIA=);

DATA ATM_EXPO.TOTALE_EXPORT_AC ;
SET  ATM_EXPO.TOTALE_EXPORT_AC_T_&TERM_YM ;
 where REGION = &REGION;
 if &LDS>0.94 then colorvar=1;
RUN;

%mend Grafico;

%Grafico (REGION='REGION CENTRO', LDS=media_lds_prel,FUNZIONE='PRELIEVO',N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);     
%Grafico (REGION='REGION CENTRO', LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI',N_ATM_SOGLIA=_TERM_Sotto_soglia_VER_CO);   

%Grafico (REGION='REGION CENTRO NORD',LDS=media_lds_prel,FUNZIONE='PRELIEVO', N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL;    
%Grafico (REGION='REGION CENTRO NORD',LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI', N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO);  

%Grafico (REGION='REGION LOMBARDIA', LDS=media_lds_prel,FUNZIONE='PRELIEVO', N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);  /*  KO */
%Grafico (REGION='REGION LOMBARDIA', LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI',N_ATM_SOGLIA= N_TERM_Sotto_soglia_VER_CO);    /*  KO */

%Grafico (REGION='REGION NORD OVEST',LDS=media_lds_prel,FUNZIONE='PRELIEVO', N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);    
%Grafico (REGION='REGION NORD OVEST',LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI', N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO); 

%Grafico (REGION='REGION SICILIA', LDS=media_lds_prel,FUNZIONE='PRELIEVO', N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);    
%Grafico (REGION='REGION SICILIA', LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI', N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO); 

%Grafico (REGION='REGION SUD', LDS=media_lds_prel,FUNZIONE='PRELIEVO', N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);    
%Grafico (REGION='REGION SUD', LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI', N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO); 

%Grafico (REGION='REGION NORD EST', LDS=media_lds_prel,FUNZIONE='PRELIEVO', N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);    
%Grafico (REGION='REGION NORD EST',LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI', N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO); 

thank's!!!

 


Accepted Solutions
Highlighted
Solution
2 weeks ago
Super Contributor
Posts: 325

Re: MACRO - The macro GRAFICO is still executing and cannot be redefined. A dummy macro will be comp

Hi,

 

The Log shows no close bracket ')' at the end of line 78:

 

78 %Grafico (REGION='REGION CENTRO NORD',LDS=media_lds_prel,FUNZIONE='PRELIEVO',
78 ! N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL;

 

Could this be your problem?

 

 

Regards,

Amir.

View solution in original post


All Replies
Valued Guide
Posts: 525

Re: MACRO - The macro GRAFICO is still executing and cannot be redefined. A dummy macro will be comp

Each call of %Grafico overwrites TM_EXPO.TOTALE_EXPORT_AC, is this what you want?

 

Without seeing the log with options mprint and symbolgen active, it is hardly possible to tell what went wrong. The variable "term_ym" is not a parameter of the macro. Is it defined elsewhere? 

Super User
Posts: 9,925

Re: MACRO - The macro GRAFICO is still executing and cannot be redefined. A dummy macro will be comp

First of all, remove unnecessary code:

%macro Grafico (REGION=,LDS=);

DATA ATM_EXPO.TOTALE_EXPORT_AC ;
SET  ATM_EXPO.TOTALE_EXPORT_AC_T_&TERM_YM ;
 where REGION = &REGION;
 if &LDS>0.94 then colorvar=1;
RUN;

%mend Grafico;

as the third and fourth parameters are never used in the macro. Keep your code simple.

And, as @andreas_lds already mentioned, only your last macro call will be of effect, as the resulting dataset will be overwritten.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code
Contributor
Posts: 60

Re: MACRO - The macro GRAFICO is still executing and cannot be redefined. A dummy macro will be comp

this code:

 

/* v6:modificato nome colonne tabelle terminali per poter incollare direttamente in excel anche le colonne */
data ATM_EXPO.MOTABCATPRES;
    	set  UNI.MOTABCATPRES;
		length  CO_CAT_PRESSO_ $ 4; 
		CO_CAT_PRESSO_ =  substr(CO_CAT_PRESSO,3,2);
		format CO_CAT_PRESSO_ $4.; 
    	run;


LIBNAME ARCATM  "C:\Users\ui43925\Desktop\Analisi realizzate\SCARICO SAS";
LIBNAME WORKUSI  "C:\Users\ui43925\Desktop\Analisi realizzate\SCARICO SAS";
LIBNAME OPEATM  "C:\Users\ui43925\Desktop\Analisi realizzate\SCARICO SAS"; 
LIBNAME LDS "C:\Users\ui43925\Desktop\Analisi realizzate\SCARICO SAS\LDS";
LIBNAME CCV  "C:\Users\ui43925\Desktop\Analisi realizzate\SCARICO SAS\CCV";
LIBNAME ATM_EXPO "C:\Users\ui43925\Desktop\Analisi realizzate\SCARICO SAS\EXPORT_DATI_ATM";

/*OPERATIVITA'*/
%LET DT_START='30APR2018'D; /*PUNTO DI INIZIO (A RITROSO) */ 
%LET PERIDO=12; /* NUMERO DI MESI (ANDANDO A RITROSO) - 12 UN ANNO */
%LET TERM_YM =201804;  /* NOME FILE */
%LET YM = 042018;/* ANAGRAFE TERMINALI*/
%let STRANA = TGSTRANA;  /*TGSTRANA201707;*/
%let TGERCOM = tggercom;  /*TGSTRANA201707;*/

/*LDS*/
%LET DT_START_LDS='30APR2018'D; /*PUNTO DI INIZIO (A RITROSO) */ 
%LET PERIDO_LDS=12; /* NUMERO DI MESI (ANDANDO A RITROSO) - 12 UN ANNO */
%LET PERIDO_LDS_PRE = 3;  /* CONFRONTO MESI ANNO CONTRO ANNO PRECEDENTE */



/**********I TERMINALI************************************/
 
/* %syslput TERM_YM=&TERM_YM; */
data _null_;
 call symput('YEAR', YEAR(&DT_START) );  
 call symput('MONTH', month(&DT_START));
 run;

data _null_;
 call symput('YEARMONTH',cats( put(&YEAR.,z4.),put(&MONTH.,z2.)));
 call symput('MONTHYEAR',cats( put(&MONTH.,z2.), put(&YEAR.,z4.)));
 call symput('NAME_FILE', cats('ORARIA_', PUT(intnx('month',&DT_START,-11), date9.) ,'_',put(&DT_START.,date9.)) );
 call symput('MONTH', put(&MONTH.,z2.));
run;


/**********LDS************************************/
 
/* %syslput TERM_YM=&TERM_YM; */
data _null_;
 call symput('YEAR_LDS', YEAR(&DT_START_LDS) );  
 call symput('MONTH_LDS', month(&DT_START_LDS));
 run;

data _null_;
 call symput('YEARMONTH_LDS',cats( put(&YEAR_LDS.,z4.),put(&MONTH_LDS.,z2.)));
 call symput('MONTHYEAR_LDS',cats( put(&MONTH_LDS.,z2.), put(&YEAR_LDS.,z4.)));
 call symput('MONTH_LDS', put(&MONTH_LDS.,z2.));
run;



%macro Grafico(REGION=,LDS=,FUNZIONE=, N_ATM_SOGLIA=);
DATA ATM_EXPO.TOTALE_EXPORT_AC ;
SET  ATM_EXPO.TOTALE_EXPORT_AC_T_&TERM_YM ;
 where REGION = &REGION;
 if &LDS>0.94 then colorvar=1;
 	%put NOTE: &FUNZIONE  &REGION; 
RUN;
%mend;

%Grafico (REGION='REGION CENTRO', LDS=media_lds_prel,FUNZIONE='PRELIEVO',N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);     
%Grafico (REGION='REGION CENTRO', LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI',N_ATM_SOGLIA=_TERM_Sotto_soglia_VER_CO);   

%Grafico (REGION='REGION CENTRO NORD',LDS=media_lds_prel,FUNZIONE='PRELIEVO', N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL;    
%Grafico (REGION='REGION CENTRO NORD',LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI', N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO);  

%Grafico (REGION='REGION LOMBARDIA', LDS=media_lds_prel,FUNZIONE='PRELIEVO', N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);  /*  KO */
%Grafico (REGION='REGION LOMBARDIA', LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI',N_ATM_SOGLIA= N_TERM_Sotto_soglia_VER_CO);    /*  KO */

%Grafico (REGION='REGION NORD OVEST',LDS=media_lds_prel,FUNZIONE='PRELIEVO', N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);    
%Grafico (REGION='REGION NORD OVEST',LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI', N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO); 

%Grafico (REGION='REGION SICILIA', LDS=media_lds_prel,FUNZIONE='PRELIEVO', N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);    
%Grafico (REGION='REGION SICILIA', LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI', N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO); 

%Grafico (REGION='REGION SUD', LDS=media_lds_prel,FUNZIONE='PRELIEVO', N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);    
%Grafico (REGION='REGION SUD', LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI', N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO); 

%Grafico (REGION='REGION NORD EST', LDS=media_lds_prel,FUNZIONE='PRELIEVO', N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);    
%Grafico (REGION='REGION NORD EST',LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI', N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO); 

 

 

this is log:



77
78   %Grafico (REGION='REGION CENTRO NORD',LDS=media_lds_prel,FUNZIONE='PRELIEVO',
78 ! N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL;
79   %Grafico (REGION='REGION CENTRO NORD',LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI',
79 ! N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO);
NOTE: 'VERSAMENTO CONTANTI'  'REGION CENTRO NORD'
80
81   %Grafico (REGION='REGION LOMBARDIA', LDS=media_lds_prel,FUNZIONE='PRELIEVO',
81 ! N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);  /*  KO */
NOTE: 'PRELIEVO'  'REGION LOMBARDIA'
82   %Grafico (REGION='REGION LOMBARDIA', LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO
82 ! CONTANTI',N_ATM_SOGLIA= N_TERM_Sotto_soglia_VER_CO);    /*  KO */
NOTE: 'VERSAMENTO CONTANTI'  'REGION LOMBARDIA'
83
84   %Grafico (REGION='REGION NORD OVEST',LDS=media_lds_prel,FUNZIONE='PRELIEVO',
84 ! N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);
NOTE: 'PRELIEVO'  'REGION NORD OVEST'
85   %Grafico (REGION='REGION NORD OVEST',LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI',
85 ! N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO);
NOTE: 'VERSAMENTO CONTANTI'  'REGION NORD OVEST'
86
87   %Grafico (REGION='REGION SICILIA', LDS=media_lds_prel,FUNZIONE='PRELIEVO',
87 ! N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);
NOTE: 'PRELIEVO'  'REGION SICILIA'
88   %Grafico (REGION='REGION SICILIA', LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI',
88 ! N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO);
NOTE: 'VERSAMENTO CONTANTI'  'REGION SICILIA'
89
90   %Grafico (REGION='REGION SUD', LDS=media_lds_prel,FUNZIONE='PRELIEVO',
90 ! N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);
NOTE: 'PRELIEVO'  'REGION SUD'
91   %Grafico (REGION='REGION SUD', LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI',
91 ! N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO);
NOTE: 'VERSAMENTO CONTANTI'  'REGION SUD'
92
93   %Grafico (REGION='REGION NORD EST', LDS=media_lds_prel,FUNZIONE='PRELIEVO',
93 ! N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL);
NOTE: 'PRELIEVO'  'REGION NORD EST'
94   %Grafico (REGION='REGION NORD EST',LDS=media_lds_ver_co,FUNZIONE='VERSAMENTO CONTANTI',
94 ! N_ATM_SOGLIA=N_TERM_Sotto_soglia_VER_CO);
NOTE: 'VERSAMENTO CONTANTI'  'REGION NORD EST'

 

work only the first macro (line 76), create the table,  the others %macro dont have effect (es. line 78 of log).

if run again  i have the error: The macro GRAFICO is still executing and cannot be redefined.

 

 

thank's

Highlighted
Solution
2 weeks ago
Super Contributor
Posts: 325

Re: MACRO - The macro GRAFICO is still executing and cannot be redefined. A dummy macro will be comp

Hi,

 

The Log shows no close bracket ')' at the end of line 78:

 

78 %Grafico (REGION='REGION CENTRO NORD',LDS=media_lds_prel,FUNZIONE='PRELIEVO',
78 ! N_ATM_SOGLIA=N_TERM_Sotto_soglia_PREL;

 

Could this be your problem?

 

 

Regards,

Amir.

Super User
Posts: 9,925

Re: MACRO - The macro GRAFICO is still executing and cannot be redefined. A dummy macro will be comp

Good catch, @Amir!

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code
Contributor
Posts: 60

Re: MACRO - The macro GRAFICO is still executing and cannot be redefined. A dummy macro will be comp

Sorry!!!

Super User
Posts: 23,342

Re: MACRO - The macro GRAFICO is still executing and cannot be redefined. A dummy macro will be comp

You haven’t defined YEAR_TM and are not using the last parameter in the macro call. 

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 7 replies
  • 398 views
  • 9 likes
  • 5 in conversation