Not pretty, but this is a single statement:
data _null_;
current_date=mdy(3,7,2019);
last_bus_day=intnx('month',current_date,0,'E') - (weekday(intnx('month',current_date,0,'E'))=1);
put (_all_) (=weekdate20.);
run;
It might make sense for other users of the program to see two lines:
data _null_;
current_date=mdy(3,7,2019);
last_bus_day=intnx('month',current_date,0,'E');
if weekday(intnx('month',current_date,0,'E'))=1 then last_bus_day=last_bus_day-1;
put (_all_) (=weekdate20.);
run;
Editted note:
In the second block of code, I should have put:
if weekday(last_bus_day)=1 then last_bus_day=last_bus_day-1;
instead of the long IF statement I entered.