Dies ist soweit korrekt.
Eine Funktion/Prozedur kann keine Werte auf temporären Speicher zurückgeben.
Allerdings kannst das Array als Ergebnis zurückgeben, was hier aber ggf. keinen Sinn macht da du mit dem globalen Array (ohne "based") arbeiten kannst.