Hallo,
ich bin auf eine Merkwürdigkeit gestoßen und möchte nur wissen, ob ich das richtig verstanden habe:
Ich habe ein RPG-Programm, das auch eine Procedure enthält. Z.B:
Code:
       
dcl-s i packed(5) inz(23);

i+=1;
dsply %char(i);

test2();

*inlr = *on;
//================================
dcl-proc test2;

dcl-s wert2 packed(2) static;

wert2 +=1;

dsply %char(wert2);

end-proc;
Wenn ich das Programm mehrfach aufrufe, wird die globale Variable i bei jedem Aufruf immer wieder mit dem INZ-Wert 23 initialisiert. Das funktioniert (ist ja klar, da das Programm mit *INLR=*ON verlassen wird). In der Procedure test2 wird die Variable wert2 als static definiert. Diese Variable behält allerdings ihren Wert auch über das Verlassen des Programms hinaus! Dieses Verhalten hätte ich nur erwartet, wenn ich das Programm ohne LR verlassen hätte.

Das heißt, dass lokale static Variablen länger leben als globale Variablen! Das finde ich sehr merkwürdig.

Im Handbuch steht "If the keyword STATIC is specified, the item will be initialized at module initialization time."

Wann ist denn die "module initialization time" ?

Dieter