× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.


  • Subject: Re: Trigger program
  • From: "Eric N. Wilson" <doulos1@xxxxxxxx>
  • Date: Sun, 24 Oct 1999 01:48:04 -0700

Please find attached a set of routines that we have created, and some parts
come from News/400. This will provide you with the information that you
would like to record. Note: It potentially could fill up your job's message
queue if you have a PC running a big batch program using the AS/400 as a
database server. If that is the case you may want to add some code to call
the Remove Program message API.

and here is an example of a trigger program that we use to update audit
stamps for a given file

     h Debug(*Yes) Option(*SrcStmt) Indent('| ') Actgrp(*Caller)
     h Bnddir('DAADITRG')
      *----------------------------------------------------------------
      * Program: DAADITRG - DAADIPD trigger program
      * Author:  Brent Sauser
      * Date:    08/24/1999
      *
      * Description:
      *   This trigger program will add the create/change user, program
      *   and timestamp to the file based on the trigger event.
      *
      * Input:   InBuffer - Input buffer of record images and offsets
      *          InBufLen - Input buffer length
      *
      * Output:  Changes input buffer, which are then written to the file
      *
      * Special Instructions:
      *   When adding the trigger to the file, use ALWREPCHG(*YES)
      *   and TRGTIME(*BEFORE)
      *----------------------------------------------------------------

      * Before trigger image
     d B_RecordP       s               *
     d B_Record      e ds                  Extname(DAADIPD ) Prefix(B_)
     d                                     Based(B_RecordP)

      * After trigger image
     d A_RecordP       s               *
     d A_Record      e ds                  Extname(DAADIPD ) Prefix(A_)
     d                                     Based(A_RecordP)

     d InBuffer        ds         32000
     d  TrgFile                1     10
     d  TrgEvent              31     31
     d  B_Offset              49     52i 0
     d  B_Length              53     56i 0
     d  A_Offset              65     68i 0
     d  A_Length              69     72i 0

     d InBufLen        s             10i 0
     d InPSSR          s               N   Inz(*off)

      /Copy Qcpylesrc,Gettrginfh

     c     *Entry        plist
     c                   parm                    InBuffer
     c                   parm                    InBufLen

     c                   eval      B_RecordP = %addr(InBuffer) + B_Offset
     c                   eval      A_RecordP = %addr(InBuffer) + A_Offset

      * Trigger events
     c                   select

      * On insert, do both the created and changed audit stamp
     c                   when      TrgEvent = '1'
     c                   callp     GetTrgInf(A_Crtu95:A_Crtp95:A_Crts95)
     c                   eval      A_Chgu95 = A_Crtu95
     c                   eval      A_Chgp95 = A_Crtp95
     c                   eval      A_Chgs95 = A_Crts95

      * On update, do the changed audit stamp
     c                   when      TrgEvent = '3'
     c                   callp     GetTrgInf(A_Chgu95:A_Chgp95:A_Chgs95)
     c                   endsl

     c                   eval      *inlr = *on
     c                   return

      *---------------------------------------------------------------------
     c     *PSSR         begsr
     c                   if        InPSSR = *off
     c                   eval      InPSSR = *on
     c                   dump
     c                   endif
     c                   endsr     '*CANCL'

I hope that helps!
Eric
______________________________________________
Eric N. Wilson
President
Doulos Software & Computer Services
2913 N Alder St.
Tacoma WA 98407


----- Original Message -----
From: Bill Graziano <Bill.Graziano@besi.com>
To: <RPG400-L@midrange.com>
Sent: Friday, October 22, 1999 4:21 AM
Subject: Trigger program


> I have a file that is being written to an excessive number of times. For
> example, one record should be written for each of 40 business locations.
> Instead of one record, as many as 400 records are being written for some
> business locations. I am trying to pin down when and by which program are
> the records being written. According to my system administrator,
journaling
> did not help determine this. I believe that I need to add a physical file
> trigger and write a trigger program.
>
> I have not written any trigger programs and need some suggestions. I have
> identified the file update program. What I need to know is when is this
> update program being executed and, if possible, what program is calling
the
> file update program. Any suggestions or ideas will be greatly appreciated.
>
> Thanks,
> Bill Graziano
>
> +---
> | This is the RPG/400 Mailing List!
> | To submit a new message, send your mail to RPG400-L@midrange.com.
> | To subscribe to this list send email to RPG400-L-SUB@midrange.com.
> | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
> | Questions should be directed to the list owner/operator:
david@midrange.com
> +---

Trigger.zip


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.