Hi all,
I am trying to get a macro call to output each new set of conditions in a datastep (not sure if im explaining that right!), but it's outing observations meeting the first condition. I think it has something to do with where I'm calling the macro or macro can't override another...I have no idea. So right now, I only get 4 observations meeting the first conditons (the 'PRE'). Here is my code, would appreciate any help!
%macro zg (t, zgvar, stat,test, cd, orres, unit);
if LBJTPT&t ^='' and &zgvar ^='' then do;
zgtpt=strip(LBJTPT&t);
zgtptnum=&t;
LBJPHc= strip(put(LBJPH&t,best.));
LBJTEMPc=strip(put(LBJTEMP&t,best.));
zgstat=&stat;
zgtest= &test;
zgtestcd=&cd;
zgorres= &orres;
zgorresu= &unit;
if lbjdat ^=. then ZGDTC=put(lbjdat, is8601da.);
output;
end;
%mend zg;
data tpt1;
length usubjid $19 zgtest zgtestcd zgorres zgtpt zgstat zgtpt $100 zgdtc zgorresu $50 ;
set db.lbj (where=(lbjperf_display='Yes' and formname ^= 'BLANK'));
if not missing(subject) then usubjid = 'PVP101-01-' || Strip(subject);
%zg (1,LBJND1_DISPLAY, 'NOT DONE', 'Not Done Pre', 'ZGPRE', '','' );
%zg (1,LBJPHc, '', 'pH', 'pH', LBJPHc,'' );
%zg (1,LBJTEMPc, '', 'Temperature', 'TEMP', LBJTEMPc, LBJTEMPU1_DISPLAY);
keep usubjid zgtest zgtestcd zgorres zgtpt zgstat zgtpt zgdtc zgorresu zgtptnum;
run;
And to REAAALLLY help me out, I trying to figure out how to loop this macro to output as each timepoint 't' changes
%macro zg (t, zgvar, stat,test, cd, orres, unit);
if LBJTPT&t ^='' and &zgvar ^='' then do;
zgtpt=strip(LBJTPT&t);
zgtptnum=&t;
LBJPHc= strip(put(LBJPH&t,best.));
LBJTEMPc=strip(put(LBJTEMP&t,best.));
zgstat=&stat;
zgtest= &test;
zgtestcd=&cd;
zgorres= &orres;
zgorresu= &unit;
if lbjdat ^=. then ZGDTC=put(lbjdat, is8601da.);
output;
end;
%mend zg;
data tpt1;
length usubjid $19 zgtest zgtestcd zgorres zgtpt zgstat zgtpt $100 zgdtc zgorresu $50 ;
set db.lbj (where=(lbjperf_display='Yes' and formname ^= 'BLANK'));
if not missing(subject) then usubjid = 'PVP101-01-' || Strip(subject);
%zg (1,LBJND1_DISPLAY, 'NOT DONE', 'Not Done Pre', 'ZGPRE', '','' );
%zg (1,LBJPHc, '', 'pH', 'pH', LBJPHc,'' );
%zg (1,LBJTEMPc, '', 'Temperature', 'TEMP', LBJTEMPc, LBJTEMPU1_DISPLAY);
keep usubjid zgtest zgtestcd zgorres zgtpt zgstat zgtpt zgdtc zgorresu zgtptnum;
run;
/***NEED TO GET THESE TO OUTPUT WITH EACH TIMEPOINT CHANGE***/
%zg (2,LBJND2_DISPLAY, 'NOT DONE', 'Not Done Post 15', 'ZGPOST15', '','' );
%zg (2,LBJPHc, '', 'pH', 'pH', LBJPHc,'' );
%zg (2,LBJTEMPc, '', 'Temperature', 'TEMP', LBJTEMPc, LBJTEMPU2_DISPLAY);
%zg (3,LBJND3_DISPLAY, 'NOT DONE', 'Not Done Post 20', 'ZGPOST20', '','' );
%zg (3,LBJPHc, '', 'pH', 'pH', LBJPHc,'' );
%zg (3,LBJTEMPc, '', 'Temperature', 'TEMP', LBJTEMPc, LBJTEMPU3_DISPLAY);
... View more