Anmelden

View Full Version : MSGSFL mit RPGIII / IV



Seiten : 1 [2]

ebschubert
16-10-08, 08:04
Hallo,

es ist zwar schon eine Weile her, dass ich mich mit MSGSFLs auseinandergesetzt habe, da ich die Nachrichten immer direkt an die externe Message Queue schicke und mir damit keine Gedanken um einen Aufrufstapel machen muss.

Wenn ich micht recht erinnere ist es bei ILE 1 Stufe mehr als bei OPM, da die Funktion gewrappt wird.
Langer Rede kurzer Sinn versuch's doch einfach mal mit:


SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFL/&MSGF) +
MSGDTA(&PARM) TOPGMQ(* (2)) +
MSGTYPE(*NOTIFY) KEYVAR(&MSGNBR)
Birgitta

Vielen Dank

.... aber es geht noch einfacher !!!!!

aus dem Link
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=/rzakc/rzakcmstdfsfpmq.htm

Special value

The SFLPGMQ field can contain a special value, * (asterisk), instead of a program message queue name. If the program moves an asterisk to the SFLPGMQ field, the i5/OS operating system uses the message queue of the program issuing the output operation. You cannot use an asterisk if your program is a CL program.

Habe den SDS *PROC-Bereich wie folgt definiert

D PGMDS SDS
d ZZPGM 1 276
d ZZPG1 1 256
d ZZPG2 257 266
d ZZPG3 267 276
** ZZPGM *proc
und dann einfach folgendes gemacht


c movel(p) '*' zzpg1
c move *blanks zzpg2
c move *blanks zzpg3
... und es funxt!!!!!!!!!!
;)

Trotzdem vielen Dank...

Grüsse
Andreas

B.Hauser
16-10-08, 08:17
Ich wollte Dir gerade noch die folgende Lösung vorschlagen:

Der Programm-Name in Deinem Anzeige-Programm ist bekannt (Programm-Status-Datenstruktur Stelle 1-10).
Übergib diesen Programm-Namen an Dein CL-Programm und schicke die Message direkt an diese Programm-Queue.


SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFL/&MSGF) +
MSGDTA(&PARM) TOPGMQ(&MYPGM) +
MSGTYPE(*NOTIFY) KEYVAR(&MSGNBR)


Ich würde von der Programm-Status-Datenstruktur die Finger lassen und NICHT verändern.

Birgitta

ebschubert
16-10-08, 08:32
Ich wollte Dir gerade noch die folgende Lösung vorschlagen:

Der Programm-Name in Deinem Anzeige-Programm ist bekannt (Programm-Status-Datenstruktur Stelle 1-10).
Übergib diesen Programm-Namen an Dein CL-Programm und schicke die Message direkt an diese Programm-Queue.


SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFL/&MSGF) +
MSGDTA(&PARM) TOPGMQ(&MYPGM) +
MSGTYPE(*NOTIFY) KEYVAR(&MSGNBR)
Ich würde von der Programm-Status-Datenstruktur die Finger lassen und NICHT verändern.

Birgitta

Danke Brigitta

ich habe mittlerweile auf API MHSNDPM und QMHRMVPM umgestellt.

Ich denke, es ist ausreichend, wenn ich ein x-beliebiges Feld mit der Länge 276 definiere und dieses als Referenzfeld für meine SFLMSQ verwende.
Habe es ausprobiert und es geht auch so.

Grüsse und Danke :)
Andreas