I would still suggest to use transpose, and get the periods from the labels (as these contain the original column names from the Excel):
proc sort data=ret;
by name ticker;
run;
proc transpose
data=ret (where=(name ne ''))
out=trans (rename=(col1=return))
;
var _:;
by name ticker;
run;
data want;
retain period name ticker return;
set trans;
format period mmyys7.;
period = input(cats('01/',_label_),ddmmyy10.);
keep period name ticker return;
run;
proc sort data=want;
by descending period name ticker;
run;
proc print data=want (obs=10) noobs;
run;
Result:
period name ticker return
07/2019 361 Global Equity Absolute Return I AGRZX 0.81384
07/2019 361 Global Equity Absolute Return Inv AGRQX 0.81466
07/2019 361 Global Equity Absolute Return Y AGRWX 0.71138
07/2019 Calvert Absolute Return Bond A CUBAX 0.32992
07/2019 Calvert Absolute Return Bond C CUBCX 0.33157
07/2019 Calvert Absolute Return Bond I CUBIX 0.34951
07/2019 Causeway Global Absolute Return Instl CGAIX -2.01511
07/2019 Causeway Global Absolute Return Inv CGAVX -2.03822
07/2019 Eaton Vance Glbl Macr Absolute Return A EAGMX 1.44828
07/2019 Eaton Vance Glbl Macr Absolute Return C ECGMX 1.38488
... View more