|
Reading the posts on midrange.com that were pointed to, it seems this is a problem only with 1 byte return values. It would appear that they are translated to integers. Accordingly, fastest solution is to return 2 bytes. Regards, Jim Langston AS400MAIL@smtpmail.nationcredit.com wrote: > The following answer is directly from "Programming in RPG IV" by Judy > Yaeger, page 222-3 > > RPGIV includes 2 kinds of pointer data types: basing pointers and > procedure pointers... Basing pointers reference storage locations of > variables while procedure pointers reference storage locations of > program modules. > > Both basing and procedure pointers are type *, with a fixed length of > 16 bytes. > > Hope this helps... > > Bob Arlia, Nationwide Credit Inc. > ______________________________ Reply Separator >_________________________________ > Subject: Pointer not set on returning from an RPG procedure to a CL o > Author: MIDRANGE-L@midrange.com at unix > Date: 1/6/2000 12:36 PM > > Hi all. > > This is weird. > > I was typing up this message, and before I completed it, I tried > something out which fixed the problem. But I thought I'd share it with > the list anyway, as I don't understand it. > > Here's my original question: > > I have a simple RPG procedure which returns a one-character value (*on > or *off, but that doesn't seem to be relevant, as I get the same problem > if I code a literal '1' or '0'). I'm calling it from a CL procedure, > using CALLPRC with the RTNVAL parameter. The field for RTNVAL is > defined as *CHAR 1. > > I get MCH3601, pointer not set for location referenced, on the RETURN > opcode. Neither debug nor a dump tells me anything. > > We are on V4R3. Anybody got any ideas? > > *** End of original question *** > > And then I prompted CALLPRC and hit help on RTNVAL; it mentioned the > return value being 'aligned on a sixteen-byte boundary'. So on an > impulse I redefined my return value field as *char 16. And it worked. > > I've come across this 'aligned on a sixteen-byte boundary' expression > before, and never understood it; I eventually had concluded that it was > a fancy way of saying pointers are sixteen bytes long; but I see that > there's more to it than that. Can anybody explain what's going on here? > > Cheers, > > Martin. +--- | This is the Midrange System Mailing List! | To submit a new message, send your mail to MIDRANGE-L@midrange.com. | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. | To unsubscribe from this list send email to MIDRANGE-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 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.