Help using Base SAS procedures

Why this macro is not working?

Reply
Super Contributor
Posts: 338

Why this macro is not working?

Hi SAS Forum,

Could you please help me to find out the reason for the error messege (highlighted in red below) when I have called the macro?

%macro newname (MTH_YR=, ym=) ;

proc sql;

create table out.cccc_&mth_yr._v2 as

select     min(a.var1    )        as var1      ,

           min(a.custno  )        as cif       ,

           min(b.cif     )        as cif       ,

          min(b.yearmonth)        as yearmonth       

          

from   out.cccc_&mth_yr._v1                  a,

        extra.age_profile                     b

                    

              where  a.custno= b.cif

               and  b.yearmonth = 201104

                         group  by b.cif

                     ;

                            quit;

%mend newname;

/*macro call*/

%newname(MTH_YR=Apr11, ym=201104) ;

 

ERROR: Expression using equals (=) has components that are of different data types.

Thanks

Mirisage

Frequent Contributor
Posts: 97

Re: Why this macro is not working?

hi

Since you have not provided the data sets' strucure..

please check the line......

where a.custno=b.cif 

i guess ...these are different data  types !!

Regards

ALLU

Super Contributor
Posts: 543

Re: Why this macro is not working?

HI.

I believe your problem may be here:

where  a.custno= b.cif

               and b.yearmonth = 201104


I think you should replace it with: (Please note the quotations around the 2011104)

where  a.custno= b.cif

               and  b.yearmonth = "201104"




Let me know.

Good luck!

Anca.

PS: Also, in your macro, shouldn't your line ...

where  a.custno= b.cif

               and b.yearmonth = 201104

actually read:

where  a.custno= b.cif

               and b.yearmonth = "&ym."

Ask a Question
Discussion stats
  • 2 replies
  • 168 views
  • 1 like
  • 3 in conversation