DATA Step, Macro, Functions and more

macro variables

Reply
Regular Contributor
Posts: 237

macro variables

Hello, i'm running a stored process which includes the following code: First i look in which of the three tables my col_ins_id is situated in. Afterwards i use the variables in a macro. This works nice but now i want to gain some time.

For example if I Find my ID in the first table, i don't want to count the other 2?
For example if I Find my ID in the second table, i don't want to count the third..

Greets

proc sql noprint;
select count(*) into:NumberEdcCd from RF300L3.edc_cd where col_ins_id = "&sel_col_ins_id";quit;
%put &NumberEdcCd;

proc sql noprint; select count(*) into:NumberEdcThick from RF300L3.edc_thick where col_ins_id = "&sel_col_ins_id";quit;
%put &NumberEdcThick;

proc sql noprint; select count(*) into:NumberEdcTxrF from RF300L3.edc_txrf where col_ins_id = "&sel_col_ins_id";quit;
%put &NumberEdcTxrF;



%macro getData;
%if &NumberEdcCd > 0 %then %do;
data out_table;
set RF300L3.edc_cd;
where col_ins_id = "&sel_col_ins_id";
run;
%end;
%else %if &NumberEdcThick > 0 %then %do;
data out_table;
set RF300L3.edc_thick;
where col_ins_id = "&sel_col_ins_id";
run;
%end;
%else %if &NumberEdcTxrF > 0 %then %do;
data out_table;
set RF300L3.edc_txrf;
where col_ins_id = "&sel_col_ins_id";
run;
%end;
%else %extract_edc_full(pInProcess WaferId User_id State Slot ROW_ID ProcessRecipe ProcessPlan PmProcedure MeasRecipe
MeasKey MainTool LotId LimitsKey InspectionTool Facility DuploWaferId Datim CustomKey
ChecklistActivityId CSIM_TIMESTAMP COL_INS_ID, out_table);
%mend;
%getData;
SAS Employee
Posts: 58

Re: macro variables

Not sure what you're asking here....???
Super User
Posts: 11,343

Re: macro variables

I think you want to move the SQL bit into the GETDATA macro.

%macro getdata;

proc sql noprint;
select count(*) into:NumberEdcCd from RF300L3.edc_cd where col_ins_id = "&sel_col_ins_id";quit;
%if &NumberEdcCd = 0 %then %do:

proc sql noprint; select count(*) into:NumberEdcThick from RF300L3.edc_thick where col_ins_id = "&sel_col_ins_id";quit;

%if &NumberEdcThick >0 %then %do;

proc sql noprint; select count(*) into:NumberEdcTxrF from RF300L3.edc_txrf where col_ins_id = "&sel_col_ins_id";quit;
%end;/*NumberEdcThick*/
%end;/*NumberEdcCd */

/* rest of code*/
Ask a Question
Discussion stats
  • 2 replies
  • 139 views
  • 0 likes
  • 3 in conversation