Nice post, thanks. Implicit libref becomes all the more important with the latest 'Big Data' engines like Hadoop or in-memory (LASR) where SASWORK becomes almost irrelevant _ in my opinion. Here is a short macro-code which can be invoked directly to expand conditionnaly the table name. I have only recoded your data step logic into macro :

/* Tablename Expansion %TE() */

%MACRO TE(ds) ;
/* If data set name includes . character (= two-level name) */

/*then do nothing */
/* else ( = one-level name ) then */

/* if option USER is set */

/* then expand with USER libref : result = . */
/* else expand with WORK libref : result = WORK. */

%sysfunc( IFC( %sysfunc(findc(&ds,%STR(.))) GT 0,&ds,%sysfunc(IFC(%sysfunc(getoption(USER)) EQ %STR( ),WORK,%sysfunc(getoption(USER)))).&DS.))
%MEND;

/* example */
DATA %TE(TempData);
run;

The best way, maybe, to deal with it would be to add a specific 'expansion operator' like 1. ("1." prefix) or ( ) ("parentheses") for instance.