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



I got something like this working, using Pete Hall's template at
http://www.martinvt.com/Code_Samples/Trigger/trigger.html

I think your problem may be that the offsets in the buffer are not numbers
of bytes from the beginning of the buffer but differences between the
memory addresses of the "old" and "new" data and the beginning of the
buffer. Thus, you find the old data by looking at the memory address is
calculated as the address of the buffer plus the "old" offset; similarly
with the new data.

If you set up externally described (by the file that the trigger is
attached to), pointer-based, prefixed data structures, then things get
pretty easy to work with - you set the basing pointers using the above
logic, and then you can refer to field names just as if you had read in
the record (of course, you need the prefixes to distinguish between the
old and new versions). I'm a long way from being an expert on these, but I
think trying to use %subst is heading in the wrong direction. . . .

I think if you look at the template, this will all make sense.

hth

PS: As I discovered, the ALWREPCHG(*YES) is crucial
 


RPG programming on the AS400 / iSeries <rpg400-l@xxxxxxxxxxxx> writes:
>I am not performing any data access to any files but am now having
>problems
>replacing the new output version of the file to the buffer.  Here is how I
>am getting the after image before attempting to fill in the field:
>
>C                   Eval      OUTDS = %subst(PARM1:NEWOFF+1:NEWLEN)      
>*
>This is retrieving the data correctly *
>
>And here is how I am attempting to replace the new version of the file
>into
>the buffer.  I am getting a data mapping error.  I know the starting
>position is wrong but how do I get the correct starting position for the
>%REPLACE?  The OUTDS is an external datastructure of the "after" image.
>
>C                   EVAL      PARM1 =
>%REPLACE(OUTDS:PARM1:NEWOFF+1:NEWLEN)
>
>Thanks...
>Eric


Mike Naughton
Senior Programmer/Analyst
Judd Wire, Inc.
124 Turnpike Road
Turners Falls, MA  01376
413-863-4357 x444
mnaughton@xxxxxxxxxxxx



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
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.