PDA

View Full Version : Rekursiver Programmaufruf?



mott
24-04-03, 06:34
Hallo!

Kann sich ein RPG-Programm selbst aufrufen?
Wenn ja, was muss ich tun, damit es klappt? Ich bekomme immer eine Fehlermeldung.

Vielen Dank im voraus für eure Antwort!
Michi

eifert
24-04-03, 07:29
Hallo Michi,

sprichst du über ILE RPG oder RPG/III ?

Robert

mott
24-04-03, 08:18
Hallo Robert!

Ich programmiere in ILE-RPG!
Kannst du mir weiterhelfen?
Danke!
Michi

eifert
24-04-03, 08:22
Michi,

versuch's mal mit der Activierungsgruppe *NEW ( Kompilierungsparameter ACTGRP).

Ich hoffe es klappt.

Robert

B.Hauser
24-04-03, 08:47
Hallo,

Frage wie wandelst Du um?
1. Auswahl 14 = CRTBNDRPG oder
2. Auswahl 15 = CRTRPGMOD und CRTPGM

Bei 1.:
Änderung in den H-Bestimmungen
DftActGrp(*No) Actgrp(*NEW)
Alternativ kannst Du diese Angaben auch beim Umwandeln angeben
Bei 2.:
ActGrp(*NEW)
Alternativ kannst Du diese Angabe auch beim CRTPGM angeben.

Achtung, wenn mit Aktivierungs-Gruppe *NEW und OVR... bzw. Commitment Control gearbeitet wird.

Der Unterlassungs-Wert bei Parameter OVRSCOPE is *ACTGRPDFN!
--> vorgelagerte OVR... gelten nicht!

Der Unterlassungs-Wert bei Parameter CMTSCOPE ist *ACTGRP
--> Für die neue Aktivierungs-Gruppe ist die Commitment-Steuerung nicht gestartet!

Birgitta

Fuerchau
24-04-03, 09:26
Trotz allem, RPG als Hauptprogramm ist für rekursiven Aufruf nicht gedacht, da alle Variablen im statischen Speicher abgelegt werden.

Anders sieht es aus bei Prozeduren !
Diese Variablen sind im temporären Speicher und die Prozedur ist dann rekursiv aufrufbar.
Man kann eine Prozedur auch in einem eigenen Modul schreiben, wichtig ist dabei aber die Angabe von NOMAIN in den H-Bestimmungen.
Dies unterdrückt den Prüfcode für Rekursiv-Aufrufe.