Tu as demandé que le trigger se déclenche après la
mise à jour (update) et tu testes la valeur du "trigger event" pour une
insertion et ça, ça ne risque pas de marcher.
Si tu testes la valeur '3' dans la zone "Event", ça va aller nettement mieux :
Remarques - Il ne faut plus jamais employer la notation "B 0" pour déclarer des zones en binaire mais toujours la nouvelle notation "I 0" car RPG IV sait désormais gérer les vrais entiers et non ces définitions à la noix du RPG II/RPG III qui faussaient les résultats en les rendant erronés.
- Les pointeurs sont bien pratiques pour programmer "moderne".
Voici un exemple de trigger mis au goût RPG IV ILE:
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
F********************************************************************
F
D
D NulTypePtr S *
D TypeBin4 S 10I 0 Based(NulTypePtr)
D TypeChr S 1A Based(NulTypePtr)
D TypeSysNam S 10A Based(NulTypePtr)
D TypePtr S * Based(NulTypePtr)
D
D TgBufLen S Like(TypeBin4)
D TgBfrPtr S Like(TypePtr)
D TgAftPtr S Like(TypePtr)
D TgBufSiz C Const(%size(TgBufChr))
D
D TgBufDS DS
D TgFile Like(TypeSysNam)
D TgLib Like(TypeSysNam)
D TgMbr Like(TypeSysNam)
D TgTrgEvt Like(TypeChr)
D TgTrgTime Like(TypeChr)
D TgCmtLvl Like(TypeChr)
D TgReserve1 3A
D TgCcsId Like(TypeBin4)
D TgReserve2 8A
D TgBfrOfs Like(TypeBin4)
D TgBfrLen Like(TypeBin4)
D TgBfrNulOf Like(TypeBin4)
D TgBfrNulLn Like(TypeBin4)
D TgAftOfs Like(TypeBin4)
D TgAftLen Like(TypeBin4)
D TgAftNulOf Like(TypeBin4)
D TgAftNulLn Like(TypeBin4)
D TgBufChr 1 32767A
D TgBufAry 1A Overlay(TgBufChr)
D DIM (%size(TgBufChr))
D
D SDS SDS
D WSID 244 253
D USRID 254 263
D PGMID *PROC
D
D
D***********************************************************************
D**>>> On the next two definitions, put the based-on file name <<<
D**>>> in the ExtName parameter <<<
D***********************************************************************
D BfFile E DS ExtName(MBALREP) <- TRIGGER FILE
D Prefix(Bf_)
D Based(TgBfrPtr)
D
D AfFile E DS ExtName(MBALREP) <- TRIGGER FILE
D Prefix(Af_)
D Based(TgAftPtr)
D*****
D
D
C *Entry PList
C TgBufDs Parm TgBufDs
C TgBufLen Parm TgBufLen
C
C Eval TgBfrPtr = %addr(TgBufAry(TgBfrOfs+1))
C Eval TgAftPtr = %addr(TgBufAry(TgAftOfs+1))
C
C*****
C*
C* The based-on-file fields are now prefixed with Bf_ for before values
C* and are now prefixed with Af_ for after values
C*
C*****
C
C* Call insert subroutines
C IF (TgTrgEvt = '1') INSERT
C IF (TgTrgTime = '1') AFTER
C EXSR AfterInsert
C ENDIF
C IF (TgTrgTime = '2') BEFORE
C EXSR BeforeInsert
C ENDIF
C ENDIF
C
C* Call delete subroutines
C IF (TgTrgEvt = '2') DELETE
C IF (TgTrgTime = '1') AFTER
C EXSR AfterDelete
C ENDIF
C IF (TgTrgTime = '2') BEFORE
C EXSR BeforeDelete
C ENDIF
C ENDIF
C
C* Call update subroutines
C IF (TgTrgEvt = '3') UPDATE
C IF (TgTrgTime = '1') AFTER
C EXSR AfterUpdate
C ENDIF
C IF (TgTrgTime = '2') BEFORE
C EXSR BeforeUpdate
C ENDIF
C ENDIF
C
C Eval *INLR = *on
C
C
C********************************************************************
C* After Insert Processing *
C********************************************************************
C AfterInsert BEGSR
C
C ENDSR
C
C
C********************************************************************
C* Before Insert Processing *
C********************************************************************
C BeforeInsert BEGSR
C
C ENDSR
C
C
C
C********************************************************************
C* After Delete Processing *
C********************************************************************
C AfterDelete BEGSR
C
C ENDSR
C
C
C********************************************************************
C* Before Delete Processing *
C********************************************************************
C BeforeDelete BEGSR
C
C ENDSR
C
C
C********************************************************************
C* After Update Processing *
C********************************************************************
C AfterUpdate BEGSR
C
C ENDSR
C
C
C********************************************************************
C* Before Update Processing *
C********************************************************************
C BeforeUpdate BEGSR
C
C ENDSR |