[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    sndpgmmsg als API

    Hi *all
    Wir machen per CLP ein sbmrmtcmt auf ein CLP, das ein sndpgmmsg *escape macht.

    SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Test') TOPGMQ(*PRV) MSGTYPE(*ESCAPE)

    Diese CPF kann vom Rufenden System abgefragt und somit beachtet werden.

    Anstatt eines CLP Programms will ich aber ein RPG rufen.
    Alle versuche mit dem API QMHSNDPM die CPFMSG an den remoten Job zu bekommen schlugen bisher fehl.

    Wer kann helfen?

    C EVAL QMHMSGID = 'CPF9898'
    C EVAL %SUBST(QMHMSGF:1:10) = 'MI_MSGMS '
    C EVAL QMHMSGDTA = ##DATA
    C EVAL QMHMSGLEN = %LEN(%TRIM(QMHMSGDTA))
    C EVAL QMHMSGTYP = '*ESCAPE'
    C EVAL QMHMSGENT = '*'
    C EVAL QMHMSGCTR = 0
    C CLEAR QUSEC
    C CALL(E) 'QMHSNDPM'
    * ==== ============
    C PARM QMHMSGID
    C PARM QMHMSGF
    C PARM QMHMSGDTA
    C PARM QMHMSGLEN
    C PARM QMHMSGTYP
    C PARM QMHMSGENT
    C PARM QMHMSGCTR
    C PARM QMHMSGKEY
    C PARM QUSEC
    *

    Gruß Robi

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Robi,

    wenn ich das so mit bloßem Auge sehe, müsste statt an * 0 (MSGENT MSGCNTR) an *PGMBNDY 1 gesendet werden. Ich habe da auch ein Beispiel (CRTCPP) auf meiner Open Source Seite.

    mfg

    Dieter Bender

    Zitat Zitat von Robi
    Hi *all
    Wir machen per CLP ein sbmrmtcmt auf ein CLP, das ein sndpgmmsg *escape macht.

    SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Test') TOPGMQ(*PRV) MSGTYPE(*ESCAPE)

    Diese CPF kann vom Rufenden System abgefragt und somit beachtet werden.

    Anstatt eines CLP Programms will ich aber ein RPG rufen.
    Alle versuche mit dem API QMHSNDPM die CPFMSG an den remoten Job zu bekommen schlugen bisher fehl.

    Wer kann helfen?

    C EVAL QMHMSGID = 'CPF9898'
    C EVAL %SUBST(QMHMSGF:1:10) = 'MI_MSGMS '
    C EVAL QMHMSGDTA = ##DATA
    C EVAL QMHMSGLEN = %LEN(%TRIM(QMHMSGDTA))
    C EVAL QMHMSGTYP = '*ESCAPE'
    C EVAL QMHMSGENT = '*'
    C EVAL QMHMSGCTR = 0
    C CLEAR QUSEC
    C CALL(E) 'QMHSNDPM'
    * ==== ============
    C PARM QMHMSGID
    C PARM QMHMSGF
    C PARM QMHMSGDTA
    C PARM QMHMSGLEN
    C PARM QMHMSGTYP
    C PARM QMHMSGENT
    C PARM QMHMSGCTR
    C PARM QMHMSGKEY
    C PARM QUSEC
    *

    Gruß Robi
    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
    Aug 2001
    Beiträge
    2.928

    Call Stack Counter

    Hallo Robi,

    versuch's mal mit call stack counter 1. (QMHMSGCTR = 1)
    Wenn Du den Call Stack Counter auf 0 lässt, wird die Meldung an das rufende Programm geschickt.
    Die 1 bewirkt, dass die Meldung an das im Call Stack vorgelagerte Programm (oder Prozedur) geschickt wird.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  4. #4
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    So gehts

    Vielen dank für eure Antworten,
    wir haben nun folgende Lösung

    AS400_1 :
    ----------
    CLLE PGM
    __pgmstack holen
    __sbmrmtcmd call callprog parm(..., ..., Pgmstack)

    AS400_2 :
    ----------
    RPGPGM callprog
    __ruft CLLEPGM callprog1
    ________________stellt Fehler fest und sendet per
    ________________sndpgmmsg eine *excape msg
    __ruft API wie unten

    AS400_1 :
    ----------
    wertet per monmsg die fehlermeldung aus

    Callprog muß zwingend gerufen werden, da das die Libblist setzt.

    C EVAL QMHMSGID = 'CPF9898'
    C EVAL %SUBST(QMHMSGF:1:10) = 'MI_MSGMS '
    C EVAL QMHMSGDTA = %substr(##DATA:4)
    C EVAL QMHMSGLEN = %LEN(%TRIM(QMHMSGDTA))
    C EVAL QMHMSGTYP = '*ESCAPE'
    C EVAL QMHMSGENT = '*'
    C EVAL QMHMSGCTR = PStackCtr
    C CLEAR QUSEC
    C CALL(E) 'QMHSNDPM'
    * ==== ============
    C PARM QMHMSGID
    C PARM QMHMSGF
    C PARM QMHMSGDTA
    C PARM QMHMSGLEN
    C PARM QMHMSGTYP
    C PARM QMHMSGENT
    C PARM QMHMSGCTR
    C PARM QMHMSGKEY
    C PARM QUSEC
    *
    Robi

Similar Threads

  1. Probleme API QUSLJOB aufzurufen
    By TMusolf in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 25-01-07, 12:42
  2. SNDPGMMSG und SBMJOB
    By Dominik Meyer in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 13-01-07, 15:16
  3. javamail api
    By jogisarge in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 22-11-06, 16:02
  4. Eingabe sperren bei Fehlermeldung über API
    By ExAzubi in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 17-10-06, 16:48
  5. API für die Ermittlung aktiver Jobs
    By lyrics in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 29-08-06, 09:03

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •