Offensichtlich funktioniert die Zuweisung eines Arrays, welches in einer Subroutine deklariert wurde, zu einem anderen Array nicht!
Das wird den Grund haben, dass man unnötige temporäre Arrays und Kopiervorgänge mit Arrays verhindern will.
Im SmartPart-Script sind alle Variablen global! Auch ein scheinbar "temporäres Array" existiert noch nach dem RETURN!
Statt ein temporäres Array zu erzeugen, die Zuweisungen dort zu machen, und dann am Schluss das temporäre Array in das benötigte Array zu kopieren, sollte man gleich die Zuweisung am globalen Array machen!
Ich sehe da kein Problem, sondern eher eine eingebaute "Hilfe", um zu viele temporäre Arrays und deren unnötiges Kopieren zu vermeiden.
Man könnte die Zuweisung der Ergebnisse nach dem RETURN machen:
!Deklaration der Ergebnis-Arrays
DIM paraa [ ] , parab [ ] [ ]
!Berechnen der Werte : Ergebnisse in para0,para1
GOSUB "SetPara"
!Zuweisung der Ergebnisse
paraa = para0
parab = para1
END
"SetPara":
DIM para0 [ ]
DIM para1 [ ] [ ]
para0 [ 1 ] = 100
para0 [ 2 ] = 200
para0 [ 3 ] = 300
para0 [ 4 ] = 400
para1 [ 1 ] [ 1 ] = 1
para1 [ 2 ] [ 1 ] = 2
para1 [ 3 ] [ 1 ] = 3
para1 [ 4 ] [ 1 ] = 4
para1 [ 1 ] [ 2 ] = 10
para1 [ 2 ] [ 2 ] = 10
para1 [ 3 ] [ 2 ] = 10
para1 [ 4 ] [ 2 ] = 10
RETURN
oder gleich das eigentliche Array zum Setzen der Werte benutzen:
!Deklaration der Ergebnis-Arrays
DIM paraa [ ] , parab [ ] [ ]
!Berechnen der Werte
GOSUB "SetPara"
END
"SetPara":
paraa [ 1 ] = 100
paraa [ 2 ] = 200
paraa [ 3 ] = 300
paraa [ 4 ] = 400
parab [ 1 ] [ 1 ] = 1
parab [ 2 ] [ 1 ] = 2
parab [ 3 ] [ 1 ] = 3
parab [ 4 ] [ 1 ] = 4
parab [ 1 ] [ 2 ] = 10
parab [ 2 ] [ 2 ] = 10
parab [ 3 ] [ 2 ] = 10
parab [ 4 ] [ 2 ] = 10
RETURN
Das produziert ein sehr viel kürzeres Script, und spart zwei Arrays ein!
Die Anzahl der Variablen/Array wirkt sich auch auf das Laufzeitverhalten aus, denn jede Variable muss anhnd ihres Names erst mal im Variablen-Speicher gesucht werden. Das dauert bei steigender Anzahl von Variablen zunehmend länger!