Help using Base SAS procedures

ERROR: Expression using addition (+) requires numeric types.

Reply
Occasional Contributor
Posts: 6

ERROR: Expression using addition (+) requires numeric types.

I am trying to read large number of files. Here i am using this variable topfile to add values everytime a file is read and add it as a column in my final dataset.

%if %sysfunc(exist(mv.movers_signals_all))= 0 %then %do;

/*%local topfile; */

%let %topfile=1;

%end;

%else %do;

%let topfile=%eval(&topfile+1)

proc sql;

select max(topfile)  into :topfile

from mv.movers_signals_all;

quit;

%end;

%put &topfile;

proc sql;

create table mv.moversdata2_&filen. as

select "&filen" as filedate, "%topfile" as topfile,*

from mv.moversdata_&filen.;

quit;

I am trying to read large number of files. Each file has about 50k observations. I want to differentiate between files and Here i am using this variable "topfile" to add values everytime a file is read and add it as a column in my final dataset. But while trying to add values in that macro variable, i am getting this error.

ERROR: Expression using addition (+ ) requires numeric types.

Respected Advisor
Posts: 4,927

Re: ERROR: Expression using addition (+) requires numeric types.

Posted in reply to mrajendranvasanthi

Make sure you know when to use & and % in macro expressions. I see two syntax errors. They should be:

%let topfile=1;

and

select "&filen" as filedate, "&topfile" as topfile,*


PG

PG
Super User
Posts: 19,832

Re: ERROR: Expression using addition (+) requires numeric types.

Posted in reply to mrajendranvasanthi

%let topfile=%eval(&topfile. +1)


If your files all have the same structure and are in the same folder you can use something like the following instead:

Ask a Question
Discussion stats
  • 2 replies
  • 611 views
  • 0 likes
  • 3 in conversation