[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Apr 2012
    Beiträge
    360
    Habe es jetzt umgesetzt und bekomme aber einen Fehler.

    Mein Rpg-Code
    Code:
    D PRVPGM          PR                  EXTPGM('PRVPGM')     
    D  CALLER_                      10A   Options( *Omit )     
    D  CALLED_                      10A   Options( *Omit )     
    D*                                                         
    D  CALLER_ID      S             10A                        
    D  CALLED_ID      S             10A                        
          :
          :
    IF CHGPGM = 'QDBUDR';                              
      CALLER_ID = 'QDBUDR';                            
      CALLED_ID = *BLANKS;                             
      CALLP(E) PRVPGM(CALLER_ID : CALLED_ID);          
      IF CALLED_ID <> *BLANKS AND %ERROR = *OFF;       
        CHGPGM = CALLED_ID;                            
      ELSE;                                            
        IF %ERROR;                                     
          CHGPGM = 'ERR:PRVPGM';                       
        ENDIF;                                         
      ENDIF;                                           
    ENDIF;

    Joblog
    Code:
                                  Modulquelle anzeigen                              
                                                                                    
     Programm:   PRVPGM         Bibliothek:   SRCTST         Modul:   PRVPGM        
         14               DCL        VAR(&SENDER)   TYPE(*CHAR) LEN(80)             
         15  /* ---------------------------------------------------------------*/   
         16               SNDPGMMSG  MSG('TEST') TOPGMQ(*PRV (&CALLED)) MSGTYPE(*RQ 
         17                                                                         
         18               RCVMSG     PGMQ(*PRV (&CALLED)) MSGKEY(&MSGKEY) SENDER(&S 
         19                                                                         
         20               CHGVAR     VAR(&CALLER) VALUE(%SST(&SENDER 56 10))        
         21                                                                         
         22   ENDE:       ENDPGM                                                    
                                                                                   
     
     
                            Weitere Nachrichteninformationen                        
                                                                                   
     Nachrichten-ID . . . . :   CPA0702       Bewertung  . . . . . . :   99         
     Nachrichtenart . . . . :   Anfrage                                             
     Sendedatum . . . . . . :   17.08.10      Sendezeit  . . . . . . :   11:12:50   
                                                                                   
     Nachricht . . . :   (C D I R) CPF2469 von Prozedur PRVPGM empfangen.           
     Ursache  . . . . :  Die ILE CL-Prozedur PRVPGM in Modul PRVPGM in Programm     
       PRVPGM in Bibliothek SRCTST stellte einen Fehler bei Anweisungsnummer        
       0000000116 fest. Der Nachrichtentext für CPF2469 ist: Fehler aufgetreten     
       beim Senden der Nachricht .  Die Taste F10 (falls verfügbar) oder den Befehl 
       DSPJOBLOG (Jobprotokoll anzeigen) verwenden, um die Nachrichten im           
       Jobprotokoll aufzulisten und eine ausführlichere Beschreibung der            
       Fehlerursache zu erhalten. Kann das Problem trotzdem nicht gelöst werden,    
       den technischen Dienst verständigen.                                         
     Fehlerbeseitigung:  Diese Abfragenachricht kann vermieden werden, indem die    
       Prozedur geändert wird. Nachrichten auf den Fehler hin überwachen (Befehl    
       MONMSG) und den Fehler in der Prozedur beheben. Um fortzufahren, einen       
                                                                       Weitere ...  
     Eingabetaste --> Weiter                                                        
     
       Öffnen von Teildatei ZPG001P in SEQONLY(*NO) geändert.               
       Abfrageoptionsdatei kann nicht abgerufen werden.                     
       Aufrufstapeleintrag nicht gefunden.                                  
       Fehler aufgetreten beim Senden der Nachricht .                       
       Funktionsprüfung. CPF2469 nicht überwacht durch PRVPGM bei Anweisung 
         0000000116, Instruktion X'0000'.                                   
       (C D I R) CPF2469 von Prozedur PRVPGM empfangen.                     
     ? I                                                                    
       Teildatei oder Kennsatz in Ausgangsdatei nicht gefunden oder         
         zurückgestellt.                                                    
       Wegen eines Fehlers Kopierbefehl beendet.                            
       Abfrageoptionsdatei kann nicht abgerufen werden.                     
       Abfrageoptionsdatei kann nicht abgerufen werden.                     
       1 Sätze aus Teildatei QDEFAULT kopiert.
    Was habe ich falsch gemacht?
    Feld CHGPGM wird über ein Srv-Pgm befüllt(Stackaufruf).

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Halte den Prozess mal auf dem SNDPGMMSG an und schaue dir die CALL-Stack mal genau an.
    Wenn das Programm im Stack nicht gefunden wird, gibts was auf die Finger.
    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

  3. #3
    Registriert seit
    Apr 2012
    Beiträge
    360
    Aufrufstappel ist:
    Code:
    Art   Programm                 Anweisung         Prozedur         
          QCMD       QSYS                     /04FA                   
          ADDLIBLE   TSTPGM        2100       /0034                   
          QUOCPP     QPDA                     /07A0                   
          QUOMAIN    QPDA                     /011E                   
       1  QUOCMD     QSYS                     /01EA                   
          MNU01C     TSTPGM        6900       /008F                   
          MNU01R     T_TSTOBJ                        _QRNP_PEP_MNU01R 
          MNU01R     T_TSTOBJ      457               MNU01R           
          TPGM03     T_TSTOBJ                        _QRNP_PEP_TPGM03 
          TPGM03     T_TSTOBJ      2495              TPGM03           
          QRNXIO     QSYS          49                _QRNX_DB_UPDATE  
          QDBUDR     QSYS                     /0853
    Update wurde vom Testprogramm TPGM03 gemacht.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Wie du siehst gibts noch eine Runtimeebene dazwischen, QRNXIO.
    Aus OPM wird aber QDBUDR direkt aufgerufen.
    Und wie siehts bei SQL oder UPDDTA aus?

    Ich habe mir dafür mal eine kleine Routine geschrieben, die den CALL-Stack (API) nach oben durchläuft und das 1. Programm sucht, dass nicht in einer Q-Lib liegt und nicht mit Q beginnt.
    Denn dein SNDPGMMSG kann da nicht alle Varianten durchtesten, denn man muss wirklich mit der höchsten Variante anfangen. Aber wer sagt dir denn, dass nicht durch mehrere Trigger und diversen Zwischenstufen nicht das QRNXIO sehr viel höher liegt als der aktuelle Verursacher?
    Ohne eine Stackuntersuchung ist das SNDPGMMSG-Verfahren nur noch für OPM ohne SQL gültigt.

    Und noch eine Variante:
    Die Anwendung benutzt Filehandler-Programme. Wenn nun jedesmal der Filehandler auftaucht ist der tatsächliche Verursacher nur zu finden, wenn man den Aufrufer des Filehandlers ermittelt.
    Deshalb habe ich die CALL-Stackanalyse auch in jedem Trigger individualisiert.
    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

  5. #5
    Registriert seit
    Apr 2012
    Beiträge
    360
    Habe die von dir angegeben Variante getestet.

    Hätte noch eine Frage:
    Updates mit:
    UPDDTA = QDZTD00001
    SQL = QSQISE

    gibt es sonst noch andere Ausnahmen die Updates machen können(außer Programme)?

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    QSQISE ist STRSQL.
    Es gibt auch noch embedded SQL und dynamisches SQL (ODBC-Jobs).
    Wie ist es bei CPYF?
    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

Similar Threads

  1. Grundkonzept Trigger
    By froehlich in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 06-02-03, 14:37
  2. Trigger mit Servicepgm
    By Robi in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 28-05-02, 16:45
  3. Trigger ab 5.1
    By lorenzen in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 11-01-02, 13:49
  4. Trigger Programme
    By Liebhoff in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 20-11-01, 19:52
  5. 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
  •