Hi Rick,
It's a great post! I love user-defined functions and use PROC FCMP fairly often. However, I still struggle to understand significance of the third level in outlib=, e.g.
proc fcmp outlib=libref.dataset_name.package_name;

In order to use user-defined function in a data step, we specify only 2-level data set name:
options cmplib=libref.dataset_name;

Why do we need to specify the 3-rd level (package_name) in the first place when we define that function in proc fcmp?