PDA

View Full Version : Trigger-Problem CPF5032



alexander may
19-06-06, 13:36
Hallo allerseits,

ich habe ein kleines Problem: Ich habe einen Trigger in RPG IV geschrieben, welcher beim Insert eines Satzes diesen in Abhängigkeit von anderen Parametern ergänzen soll. Rein technisch funktioniert das Programm, nur wenn ich es mittels ADDPFTRG ( *After *Insert) an die Datei hänge, und danach einen Satz zufügen möchte, kommt ein Fehler CPF5032 - Satz XXX ist bereits für diesen Job gesperrt.
Was kann ich tun??? Steh ich total auf dem Schlauch, oder weiss jemand Rat???

Danke und Grüße

Alexander May

BenderD
19-06-06, 13:44
Hallo,

normalerweise macht man das als Before Insert Trigger mit ALWRPTCHG(*YES) beim ADDPFTRG und modifiziert den Buffer im Trigger et voila es steht drin.

mfg

Dieter Bender


Hallo allerseits,

ich habe ein kleines Problem: Ich habe einen Trigger in RPG IV geschrieben, welcher beim Insert eines Satzes diesen in Abhängigkeit von anderen Parametern ergänzen soll. Rein technisch funktioniert das Programm, nur wenn ich es mittels ADDPFTRG ( *After *Insert) an die Datei hänge, und danach einen Satz zufügen möchte, kommt ein Fehler CPF5032 - Satz XXX ist bereits für diesen Job gesperrt.
Was kann ich tun??? Steh ich total auf dem Schlauch, oder weiss jemand Rat???

Danke und Grüße

Alexander May

alexander may
19-06-06, 14:04
hmmmmm, danke erstmal, das klingt schon nach dem, was ich suche.... aber: wie modifiziere ich den buffer???
ich habe folgendes codiert:



0008.28 DTrgBuffer DS
0008.29 DTFileName 10
0008.30 DTLibraryName 10
0008.31 DTMemberName 10
0008.32 DTEvent 1
0008.33 DTTime 1
0008.34 DTCommitLock 1
0008.35 DTFill01 3
0008.36 DTCCSID 10I 0
0008.37 DTRRN 10I 0
0008.38 DTFill02 10I 0
0008.39 DTOldOffSet 10I 0
0008.40 DTOldLength 10I 0
0008.41 DTOldNullOff 10I 0
0008.42 DTOldNullLen 10I 0
0008.43 DTNewOffSet 10I 0
0008.44 DTNewLength 10I 0
0008.45 DTNewNullOff 10I 0
0008.46 DTNewNullLen 10I 0
0008.47 D*
0008.48 DTrgBufferLen S 10I 0
0008.49 D*
0008.50 DOldRecord E DS EXTNAME(LGLM) PREFIX(O_)
0008.51 D BASED(OldRecPtr)
0008.52 DNewRecord E DS EXTNAME(LGLM) PREFIX(N_)
0008.53 D BASED(NewRecPtr)
0022.00 C*
0022.01 C*ANFANG PROGRAMMZYKLUS
0022.02 C*
0022.02 C*
0022.03 C *ENTRY PLIST
0022.04 C*
0022.05 C PARM TRGBUFFER
0022.06 C PARM TRGBUFFERLEN
0022.07 C*
0022.08 C EVAL OldRecPtr = %ADDR(TrgBuffer)+TOldOffSet
0022.09 C EVAL NewRecPtr = %ADDR(TrgBuffer)+TNewOffSet
0022.10 C*

danach folgt die verarbeitung....

bitte um kleine Hilfestellung.....

Danke und Gruss

Alexander May

BenderD
19-06-06, 14:18
Hallo,

Ewald ist dein Freund, in deinem Fall:

EVAL N_VORNAME = 'Hugo'
EVAL N_NAME = 'Hühnerkopf'

und schon heißt er Hugo Hühnerkopf, da du ja über Pointer mappst

mfg

Dieter Bender


hmmmmm, danke erstmal, das klingt schon nach dem, was ich suche.... aber: wie modifiziere ich den buffer???
ich habe folgendes codiert:



0008.28 DTrgBuffer DS
0008.29 DTFileName 10
0008.30 DTLibraryName 10
0008.31 DTMemberName 10
0008.32 DTEvent 1
0008.33 DTTime 1
0008.34 DTCommitLock 1
0008.35 DTFill01 3
0008.36 DTCCSID 10I 0
0008.37 DTRRN 10I 0
0008.38 DTFill02 10I 0
0008.39 DTOldOffSet 10I 0
0008.40 DTOldLength 10I 0
0008.41 DTOldNullOff 10I 0
0008.42 DTOldNullLen 10I 0
0008.43 DTNewOffSet 10I 0
0008.44 DTNewLength 10I 0
0008.45 DTNewNullOff 10I 0
0008.46 DTNewNullLen 10I 0
0008.47 D*
0008.48 DTrgBufferLen S 10I 0
0008.49 D*
0008.50 DOldRecord E DS EXTNAME(LGLM) PREFIX(O_)
0008.51 D BASED(OldRecPtr)
0008.52 DNewRecord E DS EXTNAME(LGLM) PREFIX(N_)
0008.53 D BASED(NewRecPtr)
0022.00 C*
0022.01 C*ANFANG PROGRAMMZYKLUS
0022.02 C*
0022.02 C*
0022.03 C *ENTRY PLIST
0022.04 C*
0022.05 C PARM TRGBUFFER
0022.06 C PARM TRGBUFFERLEN
0022.07 C*
0022.08 C EVAL OldRecPtr = %ADDR(TrgBuffer)+TOldOffSet
0022.09 C EVAL NewRecPtr = %ADDR(TrgBuffer)+TNewOffSet
0022.10 C*

danach folgt die verarbeitung....

bitte um kleine Hilfestellung.....

Danke und Gruss

Alexander May

alexander may
19-06-06, 15:03
Vielen Dank.....
wieder was gelernt.....

Wenn ich Dir mal was gutes tun kann...

Grüße

Alexander May