[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Dec 2005
    Beiträge
    111

    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?


  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    das sollte wohl funzen, kriegst du da eine Fehlermeldung, oder wie stellst du das fest?

    D*B

    Zitat Zitat von Techniker Beitrag anzeigen
    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?

    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Dec 2005
    Beiträge
    111
    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.

  4. #4
    Registriert seit
    Dec 2005
    Beiträge
    111
    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.

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    den ALCOBJ brauchts nicht, Parameter müsssen freilich stimmen; ein Beispiel findest du hier:
    http://www.bender-dv.de/Sourcen/QCLSRC.M


    Zitat Zitat von Techniker Beitrag anzeigen
    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.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    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.

  7. #7
    Registriert seit
    Dec 2005
    Beiträge
    111
    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.

  8. #8
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Hier gibt's noch eine weitere Beschreibung.

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    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 Zitat von Techniker Beitrag anzeigen
    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.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. CALL PGM schlägt fehl
    By alexander may in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 18-05-06, 20:16
  2. MSGQ von QSYSOPR mittels VB überwachen
    By pcfan in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 12-11-05, 19:30
  3. Java uns Qsysopr Msgq
    By mk in forum NEWSboard Java
    Antworten: 2
    Letzter Beitrag: 29-08-05, 08:58
  4. MSGQ QSYSMSG
    By Ina in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 29-05-02, 08:38
  5. QSYSOPR msg an meine MSGQ??
    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
  •