Anmelden

View Full Version : Nachrichten aus MSGSFL werden nicht gelöscht



Bitverdreher
19-05-09, 07:06
Hallo zusammen,

ich habe ein Problem mit dem Löschen von Nachrichten aus dem MSGSFL.

Im DDS ist das MSGSFL wie folgt definiert:

A R MSGSFL SFL
A SFLMSGRCD(24)
A #MKEY SFLMSGKEY
A #MPGMQ SFLPGMQ

A R MSGCTL SFLCTL(MSGSFL)
A LOCK
A OVERLAY
A 82 ERASE(MSGSFL)
A 81N82 SFLDSP
A 81 SFLDSPCTL
A N81 SFLCLR
A 81 SFLEND
A 81 SFLINZ
A SFLSIZ(0002)
A SFLPAG(0001)
A #MPGMQ SFLPGMQ
A #RMSG 4S 0H SFLRCDNBR

Das Anzeigen von Nachrichten über das API QMHSNDPM funktioniert problemlos, allerdings werden die Nachrichten nach Ausführung des API QMHRMVPM immer noch angezeigt.

call 'QMHRMVPM'
parm ##pgnm
parm cstkc
parm #mkey
parm MSGRMV
parm ApiError

##pgnm wird aus der Programmstatus-Datenstruktur (mit dem Programmnamen, das das MSGSFL enthält) gefüllt, MSGRMV = *ALL. Für cstkc haben ich schon die Werte 0, 1, 2, usw. durchprobiert, hat aber keinen Erfolg gebracht.

Im Joblog steht immer die Meldung, daß die Subdateianforderung für Datei <DSPF-NAME>nicht verarbeitet werden kann.

Vielen Dank für die Hilfe

Bitverdreher
19-05-09, 07:40
wenn allerdings *IN81 = '1' und *IN82 = '1' ist und vor Ausgabe des Bildschirmformats ein WRITE MSGCTL erfolgt, dann sind die Nachrichten gelöscht.
Wozu brauche ich dann eigentlich noch das API QMHRMVPM???

Fuerchau
19-05-09, 08:09
QMHRMVPM löscht die Nachrichten aus der MSG-Queue.

Die MSGSFL liest aber die Daten und stellt sie als Kopie ab, daher benötigst du einen separaten SFLCLR um die Kopien zu löschen (ERASE ist unnötig).

Mit einer normalen SFL machst du doch auch nichts anderes.