fTOTOSAV o a e disk dRecord e ds extname(TOTO) dBuffer ds 4000 dTrgFile 1 10 Fichier dTrgLib 11 20 Bibliotèque dTrgMbr 21 30 Membre dTrgEvent 31 31 Evènement dTrgTime 32 32 Occurrence dOldOffset 49 52b00 Offset viel enreg. dOldLength 53 56b00 Longueur du viel enreg. dNewOffset 65 68b00 Offset Nouvel enreg. dNewLength 69 72b00 Longueur du nouvel enreg. d sds dUserId 254 263 dPos s 4 0 dTimStp s 14 0 c *entry plist c parm Buffer c parm BufferLen 4 * Init des nouveaux champs de TOTOSAV c eval SAVUSR=UserId c time TimStp c move TimStp SAVDAT c movel TimStp SAVHOR * Détermination de l'évènement c if TrgEvent='1' Création d'enreg. c movel 'C' SAVEVE c endif c if TrgEvent='2' Suppression d'enreg. c movel 'S' SAVEVE c endif c if TrgEvent='3' Modification d'enreg. c movel 'M' SAVEVE c endif * execution avant ou après l'évènement c if TrgTime='1' Avant c endif c if TrgTime='2' Après c endif * Ajout/modif : on conserve les données nouvelles c* if TrgEvent<>'2' c* eval Pos=NewOffset+1 c* eval Record=%subst(Buffer:Pos:NewLength) * suppression : on conserve les "vieilles" données c* else c eval Pos=OldOffset+1 c eval Record=%subst(Buffer:Pos:OldLength) c* endif * écriture de la copie c write TOTOSAVF c eval *inlr=*on