|
Thanks to all that replied...Michael, you were right on with my mis-conception of the offsets being actual positions. Thanks for the link to the sample, I am going to try that right now. This is one of the reasons I love this list... Eric ----- Original Message ----- From: "Michael Naughton" <mnaughton@xxxxxxxxxxxx> To: "RPG programming on the AS400 / iSeries" <rpg400-l@xxxxxxxxxxxx> Sent: Monday, September 22, 2003 2:11 PM Subject: Re: Trigger question > 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 > > > _______________________________________________ > 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 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.