D*B CRTRPGMOD TRIGGER D*B+ DBGVIEW(*SOURCE) D*B+ REPLACE(*YES) D*B CRTPGM TRIGGER D*B+ ACTGRP(*CALLER) /*********************************************************************/ /* Include Header Dateien */ /*===================================================================*/ /COPY QRPGLEH,TRIGGER /COPY QRPGLEH,QMHSNDPM /*===================================================================*/ D Trigger PI D BufHeader 96 D BufLength 10I 0 CONST *========================================================================* D BufHeaderP S * DTrigBufRecord DS BASED(BufHeaderP) D File 10A Name PF D Library 10A Name Lib D Member 10A Member D TrigEvent 1A Trigger Event D TrigTime 1A Trigger Time D LockLevel 1A Commit Lock Level D Filler1 3A reserviert D Ccsid 10I 0 CCSID D Filler2 8A reserviert D OldOffset 10I 0 Beginn alter Satz D OldLength 10I 0 Länge alter Satz D OldNullOffset 10I 0 Beginn Null Map alt D OldNullLength 10I 0 Länge Null Map alt D NewOffset 10I 0 Beginn neuer Satz D NewLength 10I 0 Länge neuer Satz D NewNullOffset 10I 0 Beginn Null Map neu D NewNullLength 10I 0 Länge Null Map neu D Filler3 16A reserviert *========================================================================* D OldRecordP S * D OldRecord E DS BASED(OldRecordP) D PREFIX(O) Satzstruktur D EXTNAME(#KUNDE) *========================================================================* D NewRecordP S * D NewRecord E DS BASED(NewRecordP) D EXTNAME(#KUNDE) D PREFIX(N) Satzstruktur *========================================================================* * Records über Pointer mappen * *========================================================================* C EVAL BufHeaderP = %ADDR(BufHeader) C EVAL OldRecordP = BufHeaderP + OldOffset C EVAL NewRecordP = BufHeaderP + NewOffset *========================================================================* * Prüfung auf Satzänderung seit lesen * *========================================================================* C***** ADD 1 OVERSNR C**** OVERSNR IFEQ NVERSNR C EXSR EXIT C**** ELSE C EXSR BREAK C***** ENDIF * ************************************************************************** * *========================================================================* * Abbruch des Trigger Programms kein Update * *========================================================================* C BREAK BEGSR C callp SendSysMsg C ( C 'CPF0002' C : 'QCPFMSG ' C + '*LIBL ' C : ' ' C : 25 C : '*ESCAPE ' C : '*PGMBDY ' C : 1 C : QMHSNDPM_MSGKEY C : QMHSNDPM_MSGERR C ) C ENDSR *========================================================================* * reguläres Programmende mit Update * *========================================================================* C EXIT BEGSR C RETURN C ENDSR