-
MSGQ als PGM Schalter
Hi
ich versuche gerade eine MSGQ die ich erstellt habe als Programm Schalter zu verwenden.
Also ich habe eine Queue Namens xyz erstellt und dann CHGMSGQ angepasst
CHGMSGQ MSGQ(XYZ) DLVRY(*BREAK) SEV(0) PGM(LIB/PGM)
Jetzt habe ich gedacht, dass sobald eine Nachricht in die MSGQ xyz eigeht das Programm PGM in der Bibliothek Lib ausgeführt wird. Aber das klappt nicht. Liege ich da falsch?
-
das sollte wohl funzen, kriegst du da eine Fehlermeldung, oder wie stellst du das fest?
D*B
Zitat von Techniker
Hi
ich versuche gerade eine MSGQ die ich erstellt habe als Programm Schalter zu verwenden.
Also ich habe eine Queue Namens xyz erstellt und dann CHGMSGQ angepasst
CHGMSGQ MSGQ(XYZ) DLVRY(*BREAK) SEV(0) PGM(LIB/PGM)
Jetzt habe ich gedacht, dass sobald eine Nachricht in die MSGQ xyz eigeht das Programm PGM in der Bibliothek Lib ausgeführt wird. Aber das klappt nicht. Liege ich da falsch?
-
Also ich bin schon etwas schlauer.
Mann Benötigt ein CL welches die MSGq Alocated in etwa so:
PGM
DLTMSGQ MSGQ(lib/msgq)
MONMSG MSGID(CPF2105)
CRTMSGQ MSGQ(lib/msgq)
CHGMSGQ MSGQ(lib/msgq) DLVRY(*BREAK) +
SEV(0) PGM(lib/pgm *ALWRPY)
ALCOBJ OBJ((lib/pgm *MSGQ *EXCL))
DLYJOB RSMTIME(220000)
ENDPGM
und wenn man dann etwas in die MSGQ schickt wird das CL ausgelöst welches mann hinterlegt hat.
Soweit die Theorie.
Aber wenn ich eine Nachricht in die Que schicke meldet mir das PGM vollgendes:
Anzahl Parameter bei Programm für Durchbruchnachrichten pgm in
lib Nachrichtenwarteschlange msgq in lib nicht
gültig.
-
Ursache . . . . : Bei allen Programmen für Durchbruchnachrichten müssen drei
Parameter angegeben werden: Warteschlange, Warteschlangenbibliothek und
Nachrichtenmarkierung.
Fehlerbeseitigung: Die richtige Anzahl Parameter angeben, umwandeln und
Anforderung wiederholen.
-
den ALCOBJ brauchts nicht, Parameter müsssen freilich stimmen; ein Beispiel findest du hier:
http://www.bender-dv.de/Sourcen/QCLSRC.M
Zitat von Techniker
Also ich bin schon etwas schlauer.
Mann Benötigt ein CL welches die MSGq Alocated in etwa so:
PGM
DLTMSGQ MSGQ(lib/msgq)
MONMSG MSGID(CPF2105)
CRTMSGQ MSGQ(lib/msgq)
CHGMSGQ MSGQ(lib/msgq) DLVRY(*BREAK) +
SEV(0) PGM(lib/pgm *ALWRPY)
ALCOBJ OBJ((lib/pgm *MSGQ *EXCL))
DLYJOB RSMTIME(220000)
ENDPGM
und wenn man dann etwas in die MSGQ schickt wird das CL ausgelöst welches mann hinterlegt hat.
Soweit die Theorie.
Aber wenn ich eine Nachricht in die Que schicke meldet mir das PGM vollgendes:
Anzahl Parameter bei Programm für Durchbruchnachrichten pgm in
lib Nachrichtenwarteschlange msgq in lib nicht
gültig.
-
Aus der Hilfe zum Parameter "Programm für Durchbruchnachr." des Befehls CHGMSGQ:
Die folgenden Parameter werden an das Programm übergeben:
o Die Nachrichtenwarteschlange (10 Zeichen lang). Der Name der
Nachrichtenwarteschlange, an die die Nachricht gesendet wurde.
o Die Bibliothek (10 Zeichen lang). Der Name der Bibliothek, in der
sich die Nachrichtenwarteschlange befindet.
o Der Nachrichtenreferenzschlüssel (4 Zeichen lang). Der
Referenzschlüssel der Nachricht, die an die Nachrichtenwarteschlange
gesendet wird.
-
Hallovielen lieben Dank!!!!!Ich habe gestern noch weiter gemacht und einfach ein CL erstellt welches sollange auf eine Nachricht wartet bis sie kommt und dann eine Aktion auslöst. Also mit RCVMSG ....Das klappt auch alles wunderbar. Aber ich glaube mit einem Exitprogramm ist das ganze performanter. Ich teste das mal mit den Richtigen Parametern. Die habe ich nicht benutzt.
-
Hier gibt's noch eine weitere Beschreibung.
-
hier gehts nicht um Performance, der Unterschied liegt darin in welchem Job die Aktion erfolgt.
CHGMSGQ ordnet die MessageQ einem Job zu (der ALCOBJ, den du irgendwo gefunden hast, soll verhindern, dass sich jemand anderes diese Zuordnung wegholt), nach dem CHGMSGQ macht dieser Job lustig weiter. Wenn dann eine Message in die Q gestellt wird, wird der gerade laufende Vorgang indem Job, der irgendwann mal CHGMSGQ gesagt hat, unterbrochen und der Break Handler aufgerufen (wenn der an den Inhalt der Nachricht dran will, muss er sich den mit RCVMSG holen). Wenn der Job zu dieser Zeit beendet ist, wird nix aufgerufen, bis zum ende des Breakhandlers kann keine weitere Unterbrechung erfolgen.
Bei der RCVMSG Variante only, hängt der wartende Job ohne Aktivität auf der MessageQ und wird erst tätig, wenn eine Message kommt.
Breakhandler kann also ein laufender Job sein, der gerade was anderes macht, im anderen Fall wartet einer untätig darauf tätig zu werden.
D*B
Zitat von Techniker
Hallovielen lieben Dank!!!!!Ich habe gestern noch weiter gemacht und einfach ein CL erstellt welches sollange auf eine Nachricht wartet bis sie kommt und dann eine Aktion auslöst. Also mit RCVMSG ....Das klappt auch alles wunderbar. Aber ich glaube mit einem Exitprogramm ist das ganze performanter. Ich teste das mal mit den Richtigen Parametern. Die habe ich nicht benutzt.
Similar Threads
-
By alexander may in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 18-05-06, 20:16
-
By pcfan in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 12-11-05, 19:30
-
By mk in forum NEWSboard Java
Antworten: 2
Letzter Beitrag: 29-08-05, 08:58
-
By Ina in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 29-05-02, 08:38
-
By Dana in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 14-12-01, 09:35
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