-
CPF2479 bei der Anzeige einer MSG Subfile
Guten Tag zusammen,
bei dem Versuch, eine MSG Subfile anzuzeigen, erhalte ich den Fehler CPF2479 (Aufrufstapeleintrag nicht gefunden.)
Die DDS Definition:
Code:
A R MSGSFL SFL
A SFLMSGRCD(24)
A MSGKEY SFLMSGKEY
A PGMQ SFLPGMQ
A*
A R MSGCTL SFLCTL(MSGSFL)
A OVERLAY
A SFLDSP
A SFLDSPCTL
A SFLINZ
A
A 30 SFLEND
A SFLSIZ(0003)
A SFLPAG(0001)
A PGMQ SFLPGMQ
Die Prozedurdefinition:
Code:
D sndpgmmsg PR ExtPgm('QMHSNDPM')
D MsgID 7A Const
D MsgFile 20A Const
D MsgData 256A Const
D MsgDtaLen 10I 0 Const
D MsgType 10A Const
D StackEntr 10A Const
D StackCoun 10I 0 Const
D MsgKey 4A Const
D ErrorCode 16A Const
der Aufruf:
Code:
sndpgmmsg( $MsgId
: $MsgFile
: $MsgDta
: %len( %trimr($MsgDta))
: '*INFO'
: '*'
: 1
: *blanks
: ErrorCode );
msg_sflend = *on;
write msgctl;
Im Joblog sind zu der gesendeten Nachricht diese Details zu finden:
Code:
Von Programm . . . . . . . . . : Q98924A551
Von Bibliothek . . . . . . . : QRPLOBJ
Von Modul . . . . . . . . . : SSTMON100R
Von Prozedur . . . . . . . . : SNDCSV
Von Anweisung . . . . . . . : 129900
An Programm . . . . . . . . . : Q98924A551
An Bibliothek . . . . . . . : QRPLOBJ
An Modul . . . . . . . . . . : SSTMON100R
An Prozedur . . . . . . . . : FAKDET_SFLPROCESS
An Anweisung . . . . . . . . : 109800
Vor dem Senden der Nachricht sieht der Aufrufstapel so aus:
Code:
Von Programm . . . . . . . . . : Q98924A551
Von Bibliothek . . . . . . . : QRPLOBJ
Von Modul . . . . . . . . . : SSTMON100R
Von Prozedur . . . . . . . . : SNDCSV
Von Anweisung . . . . . . . : 129900
An Programm . . . . . . . . . : Q98924A551
An Bibliothek . . . . . . . : QRPLOBJ
An Modul . . . . . . . . . . : SSTMON100R
An Prozedur . . . . . . . . : FAKDET_SFLPROCESS
An Anweisung . . . . . . . . : 109800
SSTMON100R WINTEST 129800 SNDCSV
QTEVIREF QSYS /0475
QTESTOPH QSYS _C_pep
QTESTOPH QSYS 200 main
QTENPTS QSYS 20 qtescren
QTENPTS QSYS 36 ProgramSource
QUIDSPP QSYS /00E4
QUIMGFLW QSYS /03C3
QUIEXFMT QSYS /0099
QUIINMGR QSYS /05C4
QWSGET QSYS /0667
QT3REQIO QSYS /0256
Wo habe ich da den Denkfehler?
Vielen Dank im Voraus für die Unterstützung.
Hubert
-
Das Problem bei ILE ist, dass jede Prozedur ein Stapelaufruf ist.
Du musst also beim Senden der Nachricht schauen, an welcher Stapelposition du deine Displayfile behandelst.
Ich würde i.Ü. nicht mit QRPLOBJ testen. Dies deutet auf ein ersetztes Programm hin und nicht auf das Aktive.
-
Dein PGM läuft aus der QRPLOBJ ...
einfach mal alles beenden, und neu starten.
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Nach einem Neustart sieht der Aufrufstapel jetzt so aus:
Code:
Art Programm Anweisung Prozedur
QCMD QSYS /04FA
STARTCL ALGM _CL_PEP
STARTCL ALGM 23700 STARTCL
1 QCMD QSYS /01C8
PDM LUEBBERS 1200 /0028
QUOCPP QPDA /075E
QUOMAIN QPDA /1158
2 QUOCMD QSYS /03B3
SSTMON100R WINTEST _QRNP_PEP_SSTMON100R
SSTMON100R WINTEST 20700 MAIN
SSTMON100R WINTEST 31200 VERARBEITUNG
SSTMON100R WINTEST 66900 TIME_SFLPROCESS
SSTMON100R WINTEST 110100 FAKDET_SFLPROCESS
SSTMON100R WINTEST 130100 SNDCSV
QTEVIREF QSYS /0475
QTESTOPH QSYS _C_pep
QTESTOPH QSYS 200 main
QTENPTS QSYS 20 qtescren
QTENPTS QSYS 36 ProgramSource
QUIDSPP QSYS /00E4
QUIMGFLW QSYS /03C3
QUIEXFMT QSYS /0099
QUIINMGR QSYS /05C4
QWSGET QSYS /0667
QT3REQIO QSYS /0256
Der Fehler bleibt der gleiche.
Die Prozedur, in der das Displayfile verarbeitet wird ist FAKDET_SFLPROCESS. Das sollte doch eigentlich gefunden werden.
-
Was ist die Prozedur SNDCSV? Diese zeigt den Bildschirm doch erst an.
Wenn du also an FAKDET_SFLPROCESS etwas sendest, ist das 1 Ebene zu hoch.
Allerdings nehme ich mal an, dass du in dieser Prozedur den SNDMSG machst und somit die Routine SNDCSV noch gar nicht aktiv ist.
Wenn du unbeding mit MSGSFL arbeiten möchstest, musst du deine Ebenen der Funktionsaufrufe Austauschen:
dcl-proc SNDDST
FAKDET_SFLPROCESS(..);
EXFMT ...
dcl-proc FAKDET_SFLPROCESS
// tuwas
SNDMSG
-
Die Prozedur SNDCSV wird aus FAKDET_SFLPROCESS aufgerufen, wenn dort F9 gedrückt wurde. Hier wird dann aus der angezeigten Subfile eine CSV Datei ins IFS geschrieben und per Email verschickt. Der Erfolg oder Misserfolg des Sendens soll dem Benutzer dann in der Prozedur FAKDET_SFLPROCESS angezeigt werden.
Im SNDCSV ist also keine Bildschirmaktivität.
-
Es sollte eigentlich genügen, wenn Du den StackCount um 1 (also auf 2) erhöhst.
Birgitta
-
Ich vergaß noch zu schreiben, dass die Fehlermeldung beim WRITE MSGCTL ausgegeben wird. Das Senden der Nachricht funktioniert ja.
-
Und auf welcher Ebene führst du WRITE MSGCTL aus?
Wird an diese Ebene die Nachricht gesendet?
Wenn du das wieder in einer Unterprozedur machst, können die Nachrichten da nicht ankommen.
Siehe noch mal in der Doku:
https://www.ibm.com/docs/en/i/7.2?to...s/QMHSNDPM.htm
Du musst die Nachricht an den Callstack-Eintrag schicken, der dann die nachricht verarbeiten soll.
-
Ich habe beides versucht. Wenn ich den Stackcount auf 0 setze, geht die Nachricht an SNDCSV. Mit 1 geht sie an FAKDET_SFLPROCESS. Das WRITE MSGCTL habe in die entsprechende Prozedur gesetzt, was aber keinen Erfolg brachte.
-
Lies auch diese Doku mal durch:
https://www.ibm.com/docs/en/i/7.4?to...-display-files
Benutze das 276-Byte-Feld und scheibe da den Namen "FAKDET_SFLPROCESS" rein, an die Nachricht ja korrekt gesendet wird.
-
Nachdem ich im DSPF die Länge für SFLPGMQ auf 276 geändert habe bekam ich in CPF2479 gemeldet Aufrufstapeleintrag FAKDET_SFL,
Dann habe ich auch den Parameter in der Prozedurdefinition geändert und erhielt die gleiche Fehlermeldung. Es wurden nur die ersten 10 Stellen für das Senden der Nachricht berücksichtigt.
Similar Threads
-
By Hubert in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 14-05-20, 08:05
-
By AK1 in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 02-12-15, 16:54
-
By Creedem in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 19-05-15, 10:21
-
By skywalker in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 12-02-14, 13:16
-
By it-wolf in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 19-07-02, 16:27
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