[NEWSboard IBMi Forum]

Thema: QMHSNDPM

  1. #1
    Registriert seit
    Feb 2003
    Beiträge
    41

    Post QMHSNDPM

    hallo,
    ich zeige die fehlernachrichten mittels msgsfl an und bis jetzt habe ich mit einem cl unter verwendung von sndpgmmsg die nachrichten in die programm-msgq gesendet un es hat super funktioniert. wenn ich das allerdings mit qmhsndpm probiere,haut's nicht hin. woran kann es liegen? hat das jemand in verwendung?
    vielen dank
    rk

  2. #2
    Registriert seit
    Dec 2000
    Beiträge
    450

    Post

    Hallo Roko,

    hast du überprüft, ob die Parameter

    Message Type
    Program message queue
    Program stack counter

    richtig gefüllt sind?

    Gruß
    Bruno

  3. #3
    Registriert seit
    Feb 2003
    Beiträge
    41

    Post

    vielen dank bruno,
    ich bin zwar bereits gestern darauf gekommen, dass ich irrtümlicherweise msg-type *status verwende (ob wohl ich im meinem alten cl-programm bei sndpgmmsg *diag verwendet habe)

    zu beachten bei qpmsndpm & qpmrcvpm sind die zwei parameter Call Stack Entry und Call Stack counter - es ist nicht so logisch und einfach wie bei rcvmsg und sndpgmmsg.
    noch mal vielen dank
    mfg roko

  4. #4
    Registriert seit
    Apr 2012
    Beiträge
    360
    Hallo,

    ich hätte vor in ein Programm, das im Batch läuft, diverse Dateioperationen mittels Sql abzulösen.
    Im Programm wird ja bei einem Write, bei einem doppelten Schlüssel, eine Nachricht an den Sysopr geschickt.

    Ich hätte nun versucht beim Insert den Sqlstate abzufragen und mit Hilfe der API QMHSNDPM eine Msg zu schicken.

    Ich bekomme aber keine Nachricht auf den SYSOPR.

    Code:
    Der Aufruf an *LIBL/QMHSNDPM wurde fehlerhaft beendet (C G D F).       
    SBMJOB CMD(CALL PGM(EDAVJS235R) PARM('                 '))    
    
    
    DQMHSNDPM         PR                  ExtPgm('QMHSNDPM')           
    D MsgID                          7A   Const                        
    D MsgFile                       20A   Const                        
    D MsgData                      256A   Const                        
    D MsgDtaLen                     10I 0 Const                        
    D MsgType                       10A   Const                        
    D StackEntry                    10A   Const                        
    D StackCount                    10I 0 Const                        
    D MsgKey                         4A   Const                        
    D ErrorCode                     16A   Const                        
    D                                                                  
    D$MsgId           S             10A   Inz('CPF9898   ')            
    D$MsgFile         S             20A   Inz('QCPFMSG   QSYS      ')  
    D$MsgDta          S             80A   Inz                          
    D$MsgDtaLen       S             10I 0 Inz                          
    D                                                                  
    D ErrorCode       ds                                               
    D   BytesProv                   10I 0 inz(0)                       
    D   BytesAvail                  10I 0                              
    
    
    
    
    
    
    $MsgDta    = 'SQL ERROR: '                           
                + %trimr(SDSPGM)                         
                + ' Fehler beim Import aufgetreten';     
                                                         
    QMHSNDPM( $MsgId                                     
            : $MsgFile                                   
            : $MsgDta                                    
            : %len( %trimr($MsgDta))                     
            : '*ESCAPE'                                  
            : '*'                                        
            : 2                                          
            : *blanks                                    
            : ErrorCode );
    Das Programm hat einen *ENTRY Parameter.
    Was mache ich falsch?

    Kann ich eleganter eine exception auf den Sysopr werfen?

    Dank im Voraus

    Tarki

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Warum postest du deine Frage mehrfach?
    Der CALL-Stack "*" sendet eine Nachricht an dich selber.
    Du musst da als Ziel denn doch eine höhere Ebene angeben.
    Außerdem wird nicht automatisch auch an QSYSOPR gesendet, das macht ggf. das Empfänger-Programm mit einem SNDMSG (ggf. mit Antwort) statt SNDPGMMSG.

    Wenn ich im CLP einen MONMSG verwende, erwarte ich ja auch eine Abbruchnachricht an mein Programm und nicht erst an eine MSGQ. Dies ist dann eher unüblich.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Apr 2012
    Beiträge
    360
    Morgen,

    Verzeihung den doppelten Post, dachte mir beim Forum Programmierung trifft das eher zu.

    Danke für die Antwort.

Similar Threads

  1. Dateigröße ermitteln und anzeigen
    By Bratmaxxe in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 08-01-07, 09:50
  2. CMD / CL / RTNVAL(*YES)
    By V_P in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 14-11-06, 10:42
  3. sndpgmmsg als API
    By Robi in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 14-12-04, 10:01
  4. Trigger / ILE RPG
    By Frank Pusch in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 17-05-01, 09:34

Berechtigungen

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