-
Großes Problem mit dem Aufrufstapel
Liebe Leute, ich bin am Verzweifeln.
Folgendes Problem liegt mir schwer im Magen.
Ich habe ein Menüprogramm MEN001, in welchen je nach Auswahl weitere Programme gecallt werden.
Stapel nach Auswahl AFA210:
Programm
Rqs oder
Lvl Prozedur Bibliothek Anweisung Instruktion
QCMD QSYS 0476
STARTST1 STGOBJ 15400 01AF
< PEP_MEN001 STGOBJ
MEN001 STGOBJ 0000000263
AFA210 STGOBJ .DRVRX01 4EA4
QWSGET QSYS 05A4
QT3REQIO QSYS 018B
Nun Verlasse ich das Programm AFA210
und stelle eine geänderte Version von AFA210 in eine Bibliothek AAA000000, die lt. Bibliotheksliste vor der STGOBJ eingetragen ist, und
Wähle erneut AFA210 zur Verarbeitung aus:
Programm
Rqs oder
Lvl Prozedur Bibliothek Anweisung Instruktion
QCMD QSYS 0476
STARTST1 STGOBJ 15400 01AF
< PEP_MEN001 STGOBJ
MEN001 STGOBJ 0000000263
AFA210 STGOBJ .DRVRX01 613A
QWSGET QSYS 05A4
QT3REQIO QSYS 018B
Wie man sieht, wird immer noch das alte Objekt aus der STGOBJ herangezogen.
Und nun zur allgemeinen Verwirrung noch der Oberhammer...
Wähle ich nun in meinem Menüprogramm ein anderes Programm aus, beende dieses und Rufe wieder AFA210 auf, wird jetzt das Objekt aus der richtigen Bibliothek gezogen:
Programm
Rqs oder
Lvl Prozedur Bibliothek Anweisung Instruktion
QCMD QSYS 0476
STARTST1 STGOBJ 15400 01AF
< PEP_MEN001 STGOBJ
MEN001 STGOBJ 0000000263
AFA210 AAA000000 .DRVRX01 613A
QWSGET QSYS 05A4
QT3REQIO QSYS 018B
.. jetzt verlasse ich wieder AFA210 und benenne das Objekt AFA210 in AFA210XY in der Bibliothek AAA000000 um!
Danach rufe ich wieder AFA210 auf:
Programm
Rqs oder
Lvl Prozedur Bibliothek Anweisung Instruktion
QCMD QSYS 0476
STARTST1 STGOBJ 15400 01AF
< PEP_MEN001 STGOBJ
MEN001 STGOBJ 0000000263
AFA210XY AAA000000 .DRVRX01 613A
QWSGET QSYS 05A4
QT3REQIO QSYS 018B
Im Menüprogramm MEN001 wird aber immer AFA210 gecallt?????
Wer weis, wie ich vor jedem Call den Aufrufstapel sauberkriege?
RCLRSC funktioniert nicht! Auch ein Call auf ein Dummy-Programm im Menüprogramm nach Call auf das Ausgewählte PGM bringt nichts.
Das Problem tritt sowohl unter V4R4 wie auch unter V5R2 auf.
Wer weis Rat?
-
Wenn du ein Programm aus RPG aufrufst, merkt sich das Programm die Adresse. Solange also das Hauptprogramm nicht beendet wird, wird immer die zuletzt aufgerufene Version verwendet.
Um dieses zu umgehen gibt es 2 Möglichkeitn:
a) CANCEL 'MYPROG'
b) Aufruf eines CLP's mit Parameter, dieses ruft dann das Programm auf (kann auch per TFRCTL erfolgen).
Dieses "Problem" gibt es seit ich die AS/400 kenne.
-
Wenn ich zwischenzeitlich ein anderes PGM aus dem Menüeprogramm aufrufe, funktioniert es ja. Wenn ich aber in mein Menüprogramm folgenden Abschnitt reinbaue füntioniert es trotzdem nicht??
C move *blanks #CALL 10
C movel SFPGM #CALL
C call #CALL 50
C move *blanks #CALL
C movel 'Dummy' #CALL
C call #CALL 50
SFPGM = Programmname aus dem Subfile.In konkreten Fall AFA210.
DUMMY = Ein Programm, das nur nen Chain auf ne x-Belibige datei Macht(zwegs Test)
-
Dies ist korrekt !
Der Variablen wird intern ein Systemzeiger auf das Programmobjekt zugewiesen. Erst wenn tatsächlich ein CALL auf die Variable durchgeführt wird, prüft RPG ob sich der Inhalt zum letzten CALL geändert hat. Ist dies der Fall wird der Systemzeiger erneuert.
Nur durch das Init der Variablen wird der interne Zeiger nicht zerstört.
Dein Weg eines Dummy-Calls kann durchaus so bleiben. Das Programm braucht nichts zu tun ausser einem RETRN.
Der Zeiger wird auch zurückgesetzt per "FREE MYVAR" (CANCEL gilt für COBOL).
-
Der Dummy-Call funktiniert! Ich hatte leider im RPG-Programm den Movel 'Dummy' eingebaut, das Programm heisst aber DUMMY.
*sick*
Gruß
Winni
Similar Threads
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 10-01-07, 10:58
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 26-10-06, 10:07
-
By Flappes in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 06-10-06, 08:39
-
By Marsman in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 11-07-06, 10:50
-
By Etherion in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 19-05-06, 13:31
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks