AS400 Trigger

                R TRG01R
                  T01F          10          TEXT('text')
                  T02F           4  0       TEXT('num')

TRG01F@.txt

                                            REF(TRG01F)
                R TRG01R1
                  TRDATE        14          TEXT('Trigger Date')
                                            COLHDG('Trg Date')
                  TRUSER        10          TEXT('Trigger User')
                                            COLHDG('Trg User')
                  TRSEQ          3          TEXT('Trigger Seq')
                                            COLHDG('Trg' 'Seq')
                  TRACT          1          TEXT('Trigger Action;A/C/D')
                                            COLHDG('Trg' 'Act')
                  T01F      R
                  T02F      R

TRGCTL@.txt

     HDATFMT(*YMD) DATEDIT(*YMD)
     D*
     D* PROGRAM STATUS DATA STRUCTURE
     D SDS            SDS
     D  WSID                 244    253
     D  USER                 254    263
     D*
     D Buffer          DS         32767
     D  FileName               1     10
     D  LibraryName           11     20
     D  MemberName            21     30
     D  TrgEvent              31     31
     D  TrgTime               32     32
     D  CommitLckLvl          33     33
     D  Filler1               34     36
     D  CCSID                 37     40B 0
     D  Filler2               41     48
     D  OldOff                49     52B 0
     D  OldLen                53     56B 0
     D  OldNullOffset         57     60B 0
     D  OldNullLength         61     64B 0
     D  NewOff                65     68B 0
     D  NewLen                69     72B 0
     D  NewNullOffset         73     76B 0
     D  NewNullLength         77     80B 0
     D  Resv3                 81     96
      *----------------------------------------------------------------
      * Total Buffer length
     D BufLen          DS
     D  Leng                   1      4B 0
      *----------------------------------------------------------------
      * Date and Time
     D TimeDate        DS
     D TimeDate14              1     14  0
     D CurrTime                1      6  0
     D CurrDate                7     14  0
     D CurrMonth               7      8  0
     D CurrDay                 9     10  0
     D CurrYear               11     14  0
     D CYMD            DS
     D CYMDDate                1      8  0
     D CYMDYear                1      4  0
     D CYMDMonth               5      6  0
     D CYMDDay                 7      8  0
      *----------------------------------------------------------------
      * Map the fields from the DB file
      *  to take the before/after images apart.
      *----------------------------------------------------------------
      *  Work fields
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C*                  M A I N  L I N E
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C*
     C* Trigger Selection
     C*
     C                   CALL      'TRGCTP@'
     C                   PARM                    FileName
     C                   PARM      '0'           TrgSts            1
     C                   PARM                    Buffer
     C                   PARM                    BufLen
     C*
     C                   Eval      *Inlr = *On
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C* *INZSR - Initial one time run subroutine
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C*
     CSR   *Inzsr        Begsr
     C*
     C     *Entry        Plist
     C     Buffer        Parm                    Buffer
     C     BufLen        Parm                    BufLen
     C*
     C                   Endsr
TRGCTP@.txt

     HDATFMT(*YMD) DATEDIT(*YMD)
     D*
     D* PROGRAM STATUS DATA STRUCTURE
     D SDS            SDS
     D  WSID                 244    253
     D  USER                 254    263
     D*
     D Buffer          DS         32767
     D  FileName               1     10
     D  LibraryName           11     20
     D  MemberName            21     30
     D  TrgEvent              31     31
     D  TrgTime               32     32
     D  CommitLckLvl          33     33
     D  Filler1               34     36
     D  CCSID                 37     40B 0
     D  Filler2               41     48
     D  OldOff                49     52B 0
     D  OldLen                53     56B 0
     D  OldNullOffset         57     60B 0
     D  OldNullLength         61     64B 0
     D  NewOff                65     68B 0
     D  NewLen                69     72B 0
     D  NewNullOffset         73     76B 0
     D  NewNullLength         77     80B 0
     D  Resv3                 81     96
      *----------------------------------------------------------------
      * Total Buffer length
     D BufLen          DS
     D  Leng                   1      4B 0
      *----------------------------------------------------------------
      * Date and Time
     D TimeDate        DS
     D TimeDate14              1     14  0
     D CurrTime                1      6  0
     D CurrDate                7     14  0
     D CurrMonth               7      8  0
     D CurrDay                 9     10  0
     D CurrYear               11     14  0
     D CYMD            DS
     D CYMDDate                1      8  0
     D CYMDYear                1      4  0
     D CYMDMonth               5      6  0
     D CYMDDay                 7      8  0
      *----------------------------------------------------------------
      *----------------------------------------------------------------
      *  Work fields
     D Start           s              5P 0
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C*                  M A I N  L I N E
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C
     C     *ENTRY        PLIST
     C                   PARM                    FName            10
     C                   PARM                    TrgSts            1
     C                   PARM                    Buffer
     C                   PARM                    BufLen
     C*
     C* '0' - Normal Operation
     C                   If        TrgSts = '0'
     C                   IF        FILENAME = 'TRG01F'
     C                   CALL      'TRG01R'
     C                   PARM                    Buffer
     C                   PARM                    BufLen
     C                   ENDIF
     C                   endif
     C*
     C*
     C                   Eval      *Inlr = *On
     C*
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


TRG01R.txt

     HDATFMT(*YMD) DATEDIT(*YMD)
     FTRG01F@   O    E             DISK
     D*
     D* PROGRAM STATUS DATA STRUCTURE
     D SDS            SDS
     D  WSID                 244    253
     D  USER                 254    263
     D*
     D Buffer          DS         32767
     D  FileName               1     10
     D  LibraryName           11     20
     D  MemberName            21     30
     D  TrgEvent              31     31
     D  TrgTime               32     32
     D  CommitLckLvl          33     33
     D  Filler1               34     36
     D  CCSID                 37     40B 0
     D  Filler2               41     48
     D  OldOff                49     52B 0
     D  OldLen                53     56B 0
     D  OldNullOffset         57     60B 0
     D  OldNullLength         61     64B 0
     D  NewOff                65     68B 0
     D  NewLen                69     72B 0
     D  NewNullOffset         73     76B 0
     D  NewNullLength         77     80B 0
     D  Resv3                 81     96
      *----------------------------------------------------------------
      * Total Buffer length
     D BufLen          DS
     D  Leng                   1      4B 0
      *----------------------------------------------------------------
      * Date and Time
     D TimeDate        DS
     D TimeDate14              1     14  0
     D CurrTime                1      6  0
     D CurrDate                7     14  0
     D CurrMonth               7      8  0
     D CurrDay                 9     10  0
     D CurrYear               11     14  0
     D CYMD            DS
     D CYMDDate                1      8  0
     D CYMDYear                1      4  0
     D CYMDMonth               5      6  0
     D CYMDDay                 7      8  0
      *----------------------------------------------------------------
      * Map the fields from the DB file
      *  to take the before/after images apart.
     D RTRG01F       E DS                  EXTNAME(TRG01F)
      *----------------------------------------------------------------
      *  Work fields
     D Start           s              5P 0
     D StartY          s              5P 0
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C*                  M A I N  L I N E
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C*
     C* Trigger Date
     C                   TIME                    HHMMSS            6 0
     C                   MOVEL     *DATE         TRDATE
     C                   MOVE      HHMMSS        TRDATE
     C                   MOVEL     USER          TRUSER
     C*
     C                   Exsr      S100
     C*
     C     S0End         TAG
     C                   Eval      *Inlr = *On
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C* S100    - Write Records
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C*
     CSR   S100          Begsr
     C*
     C                   Select
     C* 1 = Add
     C                   When      TrgEvent = '1'
     C                   Eval      TRACT  = 'A'
     C                   Eval      Start = NewOff + 1
     C*
     C                   Eval      RTRG01F = %subst(Buffer:Start:NewLen)
     C                   Write     TRG01R1
     C                   EXSR      S200
     C*
     C* 2 = Delete
     C*
     C                   When      TrgEvent = '2'
     C                   Eval      TRACT  = 'D'
     C*
     C                   Eval      Start = OldOff + 1
     C                   Eval      RTRG01F = %subst(Buffer:Start:OldLen)
     C                   Write     TRG01R1
     C                   EXSR      S200
     C*
     C* 3 = Update
     C*
     C                   When      TrgEvent = '3'
     C*
     C* Original data
     C*
     C                   Eval      StartY = OldOff + 1
     C* Changed data
     C*
     C                   Eval      TRACT  = 'B'
     C                   Eval      Start = NewOff + 1
     C*                  MOVEL     SEQA          TRSEQ
     C                   Eval      RTRG01F = %subst(Buffer:StartY:OldLen)
     C                   Write     TRG01R1
     C*
     C                   Eval      TRACT  = 'C'
     C*                  MOVEL     SEQB          TRSEQ
     C                   Eval      RTRG01F = %subst(Buffer:Start:NewLen)
     C                   Write     TRG01R1
     C                   EXSR      S200
     C*
     C                   Endsl
     C*
     C                   Endsr
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C* S200   - Update Files in Other Libraries
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C     S200          Begsr
     C*
     C                   Endsr
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C* *INZSR - Initial one time run subroutine
     C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
     C*
     CSR   *Inzsr        Begsr
     C*
     C     *Entry        Plist
     C     Buffer        Parm                    Buffer
     C     BufLen        Parm                    BufLen
     C*
     C                   Endsr

ADDPFTRG FILE(DAVIDZHAO/TRG01F) TRGTIME(*AFTER) TRGEVENT(*INSERT) PGM(DAV
IDZHAO/TRGCTL@)                                                          
Trigger QSYS_TRIG_DAVIDZHAO__TRG01F_____000001 in library DAVIDZHAO was  
  added to file TRG01F in library DAVIDZHAO.                             
Trigger added to file.                                                   

ADDPFTRG FILE(DAVIDZHAO/TRG01F) TRGTIME(*BEFORE) TRGEVENT(*UPDATE) PGM(DA
VIDZHAO/TRGCTL@)                                                       
Trigger QSYS_TRIG_DAVIDZHAO__TRG01F_____000002 in library DAVIDZHAO was
  added to file TRG01F in library DAVIDZHAO.                           
Trigger added to file.                                                 

ADDPFTRG FILE(DAVIDZHAO/TRG01F) TRGTIME(*AFTER) TRGEVENT(*DELETE) PGM(DAV
IDZHAO/TRGCTL@)                                                          
Trigger QSYS_TRIG_DAVIDZHAO__TRG01F_____000003 in library DAVIDZHAO was  
  added to file TRG01F in library DAVIDZHAO.                             
Trigger added to file.                                                   


RMVPFTRG FILE(DAVIDZHAO/TRG01F) TRGTIME(*AFTER) TRGEVENT(*DELETE)       
Trigger QSYS_TRIG_DAVIDZHAO__TRG01F_____000003 in library DAVIDZHAO was 
  removed from file TRG01F in library DAVIDZHAO.                        
Trigger removed from file.                                              
RMVPFTRG FILE(DAVIDZHAO/TRG01F) TRGTIME(*BEFORE) TRGEVENT(*UPDATE)      
Trigger QSYS_TRIG_DAVIDZHAO__TRG01F_____000002 in library DAVIDZHAO was 
  removed from file TRG01F in library DAVIDZHAO.                        
Trigger removed from file.                                              
RMVPFTRG FILE(DAVIDZHAO/TRG01F) TRGTIME(*AFTER) TRGEVENT(*INSERT)       
Trigger QSYS_TRIG_DAVIDZHAO__TRG01F_____000001 in library DAVIDZHAO was 
  removed from file TRG01F in library DAVIDZHAO.                        
Trigger removed from file.                                              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值