× 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 entry parm overlay situation
  • From: "Wayne Achenbaum" <wache@xxxxxxxxxxx>
  • Date: Fri, 10 Nov 2000 15:18:14 -0500

Scott, Thanks a lot. It seems the second parm was doing something.

----- Original Message -----
From: Scott Mildenberger <Smildenber@Washcorp.com>
To: <RPG400-L@midrange.com>
Sent: Friday, November 10, 2000 1:58 PM
Subject: RE: Trigger program entry parm overlay situation


> Not sure but it may be related to your second *entry parm which you have
> defined as a data structure.  A trigger program receives a second
paramater
> telling it the length of the first parameter, your definition does not
match
> this so this mismatch may be causing the problem on subsequent calls.
> Temporarily remove the second parameter from your *entry plist (it is
> optional to code this from RPG - I never put it in) and see if that clears
> up the problem.
>
> Scott Mildenberger
>
> > -----Original Message-----
> > From: Wayne Achenbaum [SMTP:wache@slomins.com]
> > Sent: Friday, November 10, 2000 10:57 AM
> > To: RPG400-L@midrange.com; MIDRANGE-L@midrange.com
> > Subject: Trigger program entry parm overlay situation
> >
> > Hello all, I have a trigger question that I hope someone can help me
with.
> > I
> > have an update trigger on a file and need to interagate the first 10
bytes
> > of the entry parm to see what file caused me to be in this trigger
> > program.
> > The problem is the second update from the same  application the entry
> > parm1
> > passed to the trigger has all zeros in the first 10 bytes and appears
the
> > next 4 bytes are over written as well. I,ve debugged the trigger pgm and
> > after my logic is completed and before returning I checked the entry
> > parm1.
> > after the first update its fine at the time the Return is issued.  In
> > actuality I really have a generic program that is on the trigger and the
> > entry parms are flowing through. This allows me to makes changes to the
> > actual trigger pgm w/o getting an exclusive lock on the file (we are
24/7
> > ),
> > it also allows me to call or not call the actual datbase updating
program
> > based on the before and after image of the file that cause the firing of
> > the
> > trigger. I got the same results with or without the front end program
so
> > I
> > omitted it for simplicity sake.
> >
> >                                     The following is the code. Can
Anyone
> > Help???  TIA
> >
> > Basically I am updating a Contract summary file based on some operation
> > against the contract file.
> >
> > Fscpcontsm uf a e           k disk
> >  *
> >  *
> > d Ptr             s                     *
> > d Ptr_B4      s                     *
> >  *
> > d Data          e ds                  extname(scpcont) based(Ptr)
> > d Data_B4       e ds              extname(scpcont) based(Ptr_B4)
> > d                                           prefix(B4_)
> >
> >  *
> > dEntryParm1       ds
> > d @fileName               10
> > d @filelib                    10
> > d @filembr                  10
> > d Insupdflg                     1
> > d filler2                       17
> > dBfrRecOff                    9B 0
> > dBfrRecLen                    9B 0
> > dfiller3                           8
> > dAftRecOff                     9B 0
> > dAftRecLen                     9B 0
> > d EntryArray              1  32767    dim(32767)
> >  dEntryParm2       ds
> >   *
> >  d QtyZero                        9  0
> >  d QtyTot                         9  0
> >   *--------------------------------------------------------------------*
> >  c     *entry        plist
> >  c                   parm                    EntryParm1
> >  c                   parm                    EntryParm2
> >   *
> >  c                   eval      Ptr    = %addr(EntryArray(AftRecOff + 1))
> >  c                   eval      Ptr_B4 = %addr(EntryArray(BfrRecOff + 1))
> >  c                   If        @filename = 'SCPCONT'
> >    * - - - - - - - - - - - - -
> >   * Select for trigger Events
> >   * - - - - - - - - - - - - -
> >  c                   Select
> >   * - - - - - - - - - - - - - -
> >   * This is an Insert Condition
> >   * - - - - - - - - - - - - - -
> >  c                   when      Insupdflg = '1'
> >   *- - - - - - - - - - - - - - - - - - - - - - - - - - -
> >   * Retrieve Summary Record of Contract code of B4 Image
> >   *- - - - - - - - - - - - - - - - - - - - - - - - - - -
> >  c                   If        Cnsta = 'A' or Cnsta = 'B' or Cnsta = 'P'
> >   *
> > c                   Eval      SMccode = B4_ccode
> > c     SMccode       Chain     Contsmfm
> >  *
> > c                   If        cbamt = *zeros
> > c                   Eval      Qtyzero = 1
> > c                   Else
> > c                   Eval      Qtyzero = 0
> > c                   Endif
> >  *
> > c                   If        %found(Scpcontsm)
> > c                   Eval      SMtotqty = SMtotqty + 1
> > c                   Eval      SMtotqtz = SMtotqtz + Qtyzero
> > c                   Update    Contsmfm
> > c                   Else
> > c                   Eval      SMtotqty = 1
> > c                   Eval      SMtotqtz = Qtyzero
> > c                   Write     Contsmfm
> > c                   Endif
> > %found(Scpcontsm)
> >  *
> > c                   Endif
> > Active Status
> >  *- - - - - - - - - - - - - -
> >  * This is a Delete Condition
> >  *- - - - - - - - - - - - - -
> > c                   when      Insupdflg = '2'
> >  *
> > c                   If        B4_Cnsta = 'A' or B4_Cnsta = 'B' or
> > c                             B4_Cnsta = 'P'
> >  *
> > c                   Eval      SMccode = B4_ccode
> > c     SMccode       Chain     Contsmfm
> >  *
> > c                   If        B4_cbamt = *zeros
> > c                   Eval      Qtyzero = 1
> > c                   Else
> > c                   Eval      Qtyzero = 0
> > c                   Endif
> >  *
> > c                   If        %found(Scpcontsm)
> > c                   Eval      SMtotqty = SMtotqty + 1
> > c                   Eval      SMtotqtz = SMtotqtz + Qtyzero
> > c                   Update    Contsmfm
> > c                   Endif
> >  *
> > c                   Endif
> > Status = Active
> >  * - - - - - - - - - - - - - -
> >  * This is an Update Condition
> >  * - - - - - - - - - - - - - -
> > c                   when      Insupdflg = '3'
> >  *
> > c                   If        (B4_Cnsta = 'A' or B4_Cnsta = 'B' or
> > c                              B4_Cnsta = 'P') and
> > c                             (Cnsta = 'D' or Cnsta = 'C') or
> >
> > c                             (B4_Cnsta = 'C' or B4_Cnsta = 'D') and
> > c                             (Cnsta = 'A' or Cnsta = 'P' or Cnsta='
> >  *- - - - - - - - - - - - - - - - - - - - - - - - - - -
> >  * Retrieve Summary Record of Contract code of B4 Image
> >  *- - - - - - - - - - - - - - - - - - - - - - - - - - -
> > c                   Eval      SMccode = B4_ccode
> > c     SMccode       Chain     Contsmfm
> >  *
> > c                   If        B4_cbamt = *zeros
> > c                   Eval      Qtyzero = 1
> > c                   Else
> > c                   Eval      Qtyzero = 0
> > c                   Endif
> >  *
> > c                   If        Cnsta = 'D' or Cnsta = 'C'
> > c                   Eval      Qtyzero = Qtyzero * -1
> > c                   Eval      QtyTot = -1
> > c                   Else
> > c                   Eval      QtyTot  = 1
> > c                   Endif
> >  *
> > c                   If        %found(Scpcontsm)
> > c                   Eval      SMtotqty = SMtotqty + Qtytot
> > c                   Eval      SMtotqtz = SMtotqtz + Qtyzero
> > c                   Update    Contsmfm
> > c                   Else
> > c                   Eval      SMtotqty = Qtytot
> > c                   Eval      SMtotqtz = Qtyzero
> > c                   Write     Contsmfm
> > c                   Endif
> > %found(Scpcontsm)
> >  *
> > c                   Endif
> > @filename = 'SCPCONT'
> >  c                  Endif
> > Status changed
> >  *
> > c                   endsl
> > Insupdflg select
> >  * - - - - - - - - - - - - - - - - - - - - -
> > c     Eomod         Tag
> > c                   Eval      *inlr = *on
> > c                   Return
> >
> > +---
> > | 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
> > +---
> +---
> | 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
> +---

+---
| 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
+---

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.