Anmelden

View Full Version : Variablenname in Variable



Seiten : 1 [2]

Fuerchau
15-07-20, 12:31
Aber nicht typsicher. Klar kann ich ein Array bis max. 16MB per Based-Pointer definieren und per Alloc Speicher zuweisen. Allerdings liefert mir %elem() die Anzahl definierter Elemente und nicht der Anzahl allokierter Elemente. Man muss also genau wissen, wieviele Elemente gerade angelegt sind, sonst liefern %lookup und andere Funktionen Speicherfehler oder liefern Schrott.
Das ist dann eher Halbdynamic.
Un dann wäre da noch die Grenze von 16MB für Arrays (Dim).

Novus
15-07-20, 12:32
Vielen Dank für die ganzen Antworten.

Habe mich jett dazu entschieden mit einem Parameter abzufragen und dann mit Select die Operation durchzuführen. Klappt wie gewünscht. Das andere wäre nur eleganter gewesen :)

Viele Grüße

camouflage
15-07-20, 13:05
@Novus
Das was Du meinst, wäre eine Pointer-Lösung gewesen. Leider lassen sich diese nicht durch Feldinhalte setzen. Aber so wie es Du jetzt gelöst hast, auch gut und vor allem verständlich.

@Baldur
Guckst Du hier: https://ibmsystemsmag.com/Power-Systems/06/2019/varying-dimension-arrays-rpg

Fuerchau
15-07-20, 16:03
Mal sehen, wann meine Kunden so ihre Updates machen. Im Schnitt hinke ich da ca. 2-5 Jahre hinterher.
Hast du schon mal ausprobiert, wenn ein Array wächst, ob der Speicherbedarf sich dadurch ändert;-)?

camouflage
15-07-20, 16:35
@Baldur,
Schlaumeier ;-)
Aber ich lass es dich wissen. Bis jetzt hab ich's noch nicht eingesetzt, aus den bekannten Gründen seitens der Kunden. Ich sehe aber durchaus einen Verwendungszweck bei XML-INTO, wenn die Anzahl der XML-Tags nicht bekannt ist.

Fuerchau
15-07-20, 16:43
Gerade dafür gehts ja eben nicht. Der variable Teil beschränkt sich auf die Ebene 0, also die DS selber.
Für XML-INTO habe ich aber variable Arrays auf der 2., 3., ... Ebene.
Und die Einschränkung auf 16MB des Gesamtarrays bleibt ja.
Allerdings hatte ich noch nicht die Möglichkeit, *TERASPACE auszuprobieren. Laut Birgitta lehnt der RPG-Compiler bereits Variablen/DS größer 16MB ab.

camouflage
15-07-20, 17:55
Du hast recht, jetzt wo Du's sagst. Die dynamische Array-Erweiterung als solche, fand ich spannend, dass diese allerdings nur auf Ebene 0 angewendet werden kann weniger.
Ok, nested Arrays können auch mit der mit der "path" Option abgefangen werden. Doch der "In einem Rutsch XML-INTO" ist dann dahin. Bis jetzt habe ich die ZUGFeRD extended Datenstruktur jedenfalls immer noch kompilieren können. Vllt. weiss Birgitta noch mehr dazu.

holgerscherer
16-07-20, 09:08
Habe mich jett dazu entschieden mit einem Parameter abzufragen und dann mit Select die Operation durchzuführen. Klappt wie gewünscht. Das andere wäre nur eleganter gewesen :)


Eleganz ist immer eine Frage des Betrachters. Möglichst kompakten und flexiblen Code zu haben, ist gewiss nett, aber nicht elegant.

Die Eleganz erschließt sich erst, wenn man ein Jahr später im Debugger schnell eine Problemursache finden muss. Da sind solche Schweinereien gerne mal kontraproduktiv.