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
       
10;
       
Arrayptr = %Alloc(%Size(cArray) * Y);


       
DOU X 100;
       IF 
Y;
       
// Fill array and increase counter
       
aField1(X) = Value;
       
1;
       ENDIF;

       IF 
Y;
       
// Increase allocated memory
       
10;
       
Arrayptr = %Realloc(Arrayptr: %Size(cArray) * Y);
       
// Fill array and increase counter
       
aField1(X) = Value;
       
1;
       ENDIF;
       
ENDDO;

       *
INLR = *ON;

      /
End-Free