Hi All, Can anyone please help me on below code. %macro check (sdt , edt ,dif); %if &sdt ne . and &edt ne . %then %do; &dif=&edt - &sdt; %end; %if &sdt ne . and &edt eq . %then %do; &dif= &sdt; %end; %if &sdt eq . and &edt ne . %then %do; &dif=&edt ; %end; %mend; data x; infile datalines missover; input a b ; datalines; 10200 10300 10300 . . 10200 ; options mlogic; data y; set x; %check(a , b ,new); run; Issue i am getting with this code is that only first condition is getting true while as per data provided and macro, all three conditions should get true for either records. I am pasting below snippet from log. 65 ; 66 options mlogic; 67 data y; 68 set x; 69 %check(a , b ,new); MLOGIC(CHECK): Beginning execution. MLOGIC(CHECK): Parameter SDT has value a MLOGIC(CHECK): Parameter EDT has value b MLOGIC(CHECK): Parameter DIF has value new MLOGIC(CHECK): %IF condition &sdt ne . and &edt ne . is TRUE MLOGIC(CHECK): %IF condition &sdt ne . and &edt eq . is FALSE MLOGIC(CHECK): %IF condition &sdt eq . and &edt ne . is FALSE MLOGIC(CHECK): Ending execution. 70 run; Please help me to modify the macro in a way that all three condtions will be resolved. Regards, Rajesh
... View more