• Subject: Re: Pointer not set on returning from an RPG procedure to a
  • From: Jim Langston <jlangston@xxxxxxxxxxxxxxxx>
  • Date: Thu, 06 Jan 2000 13:11:18 -0800
  • Organization: Conex Global Logistics Services, Inc.

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.


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

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2019 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].