DATA Step, Macro, Functions and more

Macro Variable call in a macro

Reply
Occasional Contributor
Posts: 6

Macro Variable call in a macro

Unable to call macro loadcpddata in macro loading:

 

 

data cpdlogic (sortedby=CPDCOBRS_VAR_NM CPDCOBRS_GRP_T);

set loaddata.cpdlogic;

if CPDCOBRS_CATG_T='CPD_logic' then do;

FieldCounterChar = left(put(_n_,6.));

 

FieldCounter = _n_;

output;

end;

run;

proc sql noprint;

select max(FieldCounter) into :TotalFieldCount

from cpdlogic ;

quit;

%put &TotalFieldCount;

 

%macro LoadCPDData (Group,Field_Num);

 

proc sql noprint;

select CPDCOBRS_VAR_NM into :FieldName

from cpdlogic

where CPDCOBRS_GRP_T=&Group

and FieldCounter=&Field_Num;

quit;

 

%put [&Field_Num];

%global &FieldName;

 

proc sql noprint;

select CPDCOBRS_RTRN_VLU_1 into :&FieldName

from cpdlogic

where CPDCOBRS_GRP_T=&Group;

quit;

%mend LoadCPDData;

 

 

%macro loading;

%if &TotalFieldCount > 1 %then %do;

%do i=1 %to &TotalFieldCount; 

%LoadCPDData(&cpd,&i);

%end;

%end;

%mend loading;

 

 

DATA:

 

CPDCOBRS_CATG_TCPDCOBRS_GRP_TCPDCOBRS_VAR_NMCPDCOBRS_RTRN_VLU_1
CPD_logic4DeanOrnish_paper_practvendY
CPD_logic6DeanOrnish_paper_practvendY
CPD_logic19DeanOrnish_paper_practvendY
CPD_logic47DeanOrnish_paper_practvendY
CPD_logic85DeanOrnish_paper_practvendY
CPD_logic95DeanOrnish_paper_practvendY
Super User
Posts: 6,536

Re: Macro Variable call in a macro

You're not very specific about what happens when you try to run this.  However, here's an issue that stands out.

 

For %LoadCPDData(&cpd,&i) to work, there must be an existing macro variable named CPD.  I don't see how your program creates that.

Ask a Question
Discussion stats
  • 1 reply
  • 50 views
  • 0 likes
  • 2 in conversation