Hallo!
ich beschäftige mich gerade mit dem Thema den Speicher für eine Feldgruppe zur Laufzeit des Programms dynamisch festzulegen.
Ich habe mir dazu ein kurzes Programm geschrieben, um das Ganze mal zu testen. Das Programm läuft einwandfrei (auch wenn der Quellcode sicher optimiert werden könnte).
Ich habe also den Speicher zugewiesen und in das Array geschrieben. Funktioniert soweit alles gut. Nun wollte ich die Gegenprobe als Beweis machen und habe keinen Speicher zugewiesen und dann in das Array geschrieben. Im Debug konnte ich sehen, dass die Werte im Array vorhanden sind. Auch gab es keine Meldung im Joblog.
Mich interessiert, ob es eine Methode gibt, um zu prüfen, dass alles so funktioniert wie ich es mir denke. Kann ich irgendwie die Speicherzuweisung bzw. -nutzung verfolgen oder das System zu einem Fehler "zwingen"?
Unten findet ihr das funktionierende Programm.
Danke und Gruß
Matthias
PHP-Code:
D Arrayptr S * Inz(*Null)
D cArray DS Based(Arrayptr)
D aArray dim(1000)
D aField1 10 overlay(aArray)
D Value S 10A INZ('Test01')
D X S 10P 0 INZ(1)
D Y S 10P 0
/Free
// Allocate memory X + 10 elements
Y = X + 10;
Arrayptr = %Alloc(%Size(cArray) * Y);
DOU X > 100;
IF X < Y;
// Fill array and increase counter
aField1(X) = Value;
X = X + 1;
ENDIF;
IF X = Y;
// Increase allocated memory
Y = X + 10;
Arrayptr = %Realloc(Arrayptr: %Size(cArray) * Y);
// Fill array and increase counter
aField1(X) = Value;
X = X + 1;
ENDIF;
ENDDO;
*INLR = *ON;
/End-Free
Bookmarks