× 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.



You get indicators in the Trigger DS that twll you whether commitment control 
is active....

Here's an old trigger skeleton I have...  Buffer (position 33) provides 
TrgCmtLvl, to tell you whether to set RUNCOMMIT.  I see that this is set in 
this shell, but never checked....  Hmm.  

     /TITLE TRIGGER ** Trigger program shell **

     * Replace <PFile> with physical file name
     * Replace <AFile> with ancillary file name

     * --------------------------------------------- * Ancillary files
     * ---------------------------------------------
     F<AFile>   UF A E           K DISK    Commit(RunCommit) UsrOpn

     * --------------------------------------------- * Entry Parameters
     * ---------------------------------------------
     DBuffer           DS         32767
     D PFName                        10
     D PFLibrary                     10
     D PFMember                      10
     D TrgEvent                       1
     D TrgTime                        1
     D TrgCmtLvl                      1
     D                                3
     D TrgCCSID                       7B 0
     D                                8
     D OrOffset                       7B 0
     D OrRcdLen                       7B 0
     D OrNBMapOfs                     7B 0
     D OrNBMapLen                     7B 0
     D NwOffset                       7B 0
     D NwRcdLen                       7B 0
     D NwNBMapOfs                     7B 0
     D NwNBMapLen                     7B 0
     D DataSpace               1  32767
     D Bytes                          1    Overlay(DataSpace) Dim(32767)

     DBufferLen        S              7B 0

     * --------------------------------------------- * Original Record
     * ---------------------------------------------
     D@OrRecord        S               *   Inz(*Null)

     DOrRecord       E DS                  ExtName(<PFile>) Prefix(OR_)

     D                                     Based(@OrRecord)

     * --------------------------------------------- * New Record
     * ---------------------------------------------
     D@NwRecord        S               *   Inz(*Null)

     DNwRecord       E DS                  ExtName(<PFile>) Prefix(NW_)
     D                                     Based(@NwRecord)

     * --------------------------------------------- * Constant Definitions
     * --------------------------------------------- * Commit Levels
     DCL_NONE          C                   '0'
     DCL_CHG           C                   '1'
     DCL_CS            C                   '2'
     DCL_ALL           C                   '3'

     * Null byte status
     DNB_NOTNULL       C                   '0'
     DNB_NULL          C                   '1'

     * Trigger events
     DTE_INSERT        C                   '1'
     DTE_DELETE        C                   '2'
     DTE_UPDATE        C                   '3'

     * Trigger times
     DTT_AFTER         C                   '1'
     DTT_BEFORE        C                   '2'


     C     *ENTRY        plist
     C                   parm                    Buffer
     C                   parm                    BufferLen


     * --------------------------------------------- * Main-line Procedure
     * ---------------------------------------------

     * Assign the record templates to their data space
     C                   eval      @OrRecord = %Addr(Bytes(OrOffset+1))
     C                   eval      @NwRecord = %Addr(Bytes(NwOffset+1))

     * Execute the correct procedure based on trigger event
     C     TrgEvent      caseq     TE_INSERT     DoInsert
     C     TrgEvent      caseq     TE_DELETE     DoDelete
     C     TrgEvent      caseq     TE_UPDATE     DoUpdate
     C                   endcs

     C                   return

     * --------------------------------------------- * Process a delete event
     * ---------------------------------------------
     CSR   DoDelete      BEGSR


     CSR                 ENDSR

     * --------------------------------------------- * Process an insert event
     * ---------------------------------------------
     CSR   DoInsert      BEGSR


     CSR                 ENDSR

     * --------------------------------------------- * Process an update event
     * ---------------------------------------------
     CSR   DoUpdate      BEGSR


     CSR                 ENDSR

     * --------------------------------------------- * Program Initialization
     * ---------------------------------------------
     CSR   *INZSR        BEGSR

     C                   if        TrgCmtLvl > CL_NONE
     C                   move      *ON           RunCommit
     C                   endif
     *                                          > if TrgCmtLvl > CL_NONE
     C                   open      <AFile>

     CSR                 ENDSR


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of Wilt, Charles
Sent: Tuesday, November 14, 2006 1:53 PM
To: RPG programming on the AS400 / iSeries
Subject: RE: Commitment control and triggers


Your trigger program would need to use commitment control also.

Which could be a problem unless every program that writes to the file
uses commitment control.

IIRC, I remember seeing some article about having a writing a trigger
program so that sometimes it could use commitment control and sometimes
it wouldn't.

Good Luck,

Charles Wilt
--
iSeries Systems Administrator / Developer
Mitsubishi Electric Automotive America
ph: 513-573-4343
fax: 513-398-1121
  

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx 
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Bob P. Roche
Sent: Tuesday, November 14, 2006 2:33 PM
To: RPG programming on the AS400 / iSeries
Subject: Commitment control and triggers

I am adding commitment control to a program that updates a 
file. There is 
a trigger on the file to write tracking records to a different file 
whenever a change is made. Is there a way to get the trigger 
to rollback 
it's changes when I use the ROLBCK opcode in my program?
-- 
This is the RPG programming on the AS400 / iSeries (RPG400-L) 
mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.




As an Amazon Associate we earn from qualifying purchases.

This thread ...


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.