-
Dein aufgerufenes Programm ist QDBUDR und das rufende Programm must Du ermitteln.
Also übergibst Du im Parameter CALLED QDBUDR und bekommts in CALLED das Programm, das den Trigger aktiviert hat.
Birgitta
-
Wir brauchen diese Funktion auch ab und zu.
Dafür haben wir einen Trigger, (der nur angehängt wird wenn wir das brauchen), der mit dem Dateinamen in einer Datei nachsieht ob er protokollieren soll. Wenn ja schreibt er den gesammten Pgm Stack und einige zus. Infos (Datum Zeit, User, ...) in eine Datei mit 30 Programm-Namen Feldern.
Häufig ist nämlich nicht nur das Pgm, sondern auch der Aufruf von Interesse.
Allerdings haben bei uns alle Dateien einer allg. Trigger, der den eigentlichen Trigger aus einer Datei ausliest und per Call ruft.
Das hat den Vorteil, das wir zu jeder Zeit Trigger "runter" / "rauf" schalten können.
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
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).
-
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.
-
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.
-
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.
-
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)?
-
QSQISE ist STRSQL.
Es gibt auch noch embedded SQL und dynamisches SQL (ODBC-Jobs).
Wie ist es bei CPYF?
Similar Threads
-
By froehlich in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 06-02-03, 14:37
-
By Robi in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 28-05-02, 16:45
-
By lorenzen in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 11-01-02, 13:49
-
By Liebhoff in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 20-11-01, 19:52
-
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
-
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