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 = ®ION;
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!!!
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.
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?
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 = ®ION;
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.
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 = ®ION;
if &LDS>0.94 then colorvar=1;
%put NOTE: &FUNZIONE ®ION;
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
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.
Sorry!!!
You haven’t defined YEAR_TM and are not using the last parameter in the macro call.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.