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



Wow... I wouldn't use CLEAR *ALL on a based MODS, that seems very
dangerous.  I'm surprised you aren't wiping out other arbitrary variables
in your program...

I've always assumed that the CLEAR op-code doesn't know how much memory
you've allocated to the structure, and will just wipe out the entire
maximum size of the structure.   I haven't tested this, but I'd imagine
you're writing blanks & zeros past the end of your allocation...


On Thu, 20 Jun 2002, Smith, Nelson wrote:

> Hans,
>
> On tighter debugging, I've determined that the 601 error is occuring on a
> CLEAR *ALL to the MODS name.  I'm doing REALLOC's to this MODS one record at
> a time and the pointer address changes each time (as it should) I reallocate
> the additional amount of memory needed.  At the time of the CLEAR operation,
> the pointer is still pointing to the address it was changed to on the last
> REALLOC operation.  The offending code is:
>
> C                   CLEAR     *ALL          ScanReplSrc
>
> An interesting point is that even though ScanReplSrc is a 150 byte
> datastructure, the dump obtained after the MCH0601 shows it to be a type of
> ZONED(5,0).  In the dump, the pointer is still showing the valid address
> that was set at the last REALLOC, but the MODS name shows a value of NOT
> ADDRESSABLE.
>
> Apparently, I just can't use CLEAR *ALL after a MODS has been moved?  Is
> CLEAR trying to clear the MODS at it's original address rather than it's
> current address?  If I just REALLOC the MODS back down to 1 byte, and then
> REALLOC it back up to it's current size, will that effectively clear out all
> the prior data? Or, will it reset the pointer to the same address (since the
> amount of memory is the same) and see the data that was previously loaded
> there?
>
> > -----Original Message-----
> > From:       Hans Boldt [SMTP:boldt@ca.ibm.com]
> > Sent:       Wednesday, June 19, 2002 3:53 PM
> > To: rpg400-l@midrange.com
> > Subject:    Re: Pointer Question
> >
> > Smith, Nelson wrote:
> > > I've got a MODS based on a pointer with OCCURS = 32767.  I ALLOC &
> > REALLOC
> > > memory to the pointer all during the program.  At some point, I DEALLOC
> > the
> > > pointer and it changes to a NULL pointer.  If I then ALLOC to it again,
> > the
> > > pointer takes on a valid address, but references to the MODS cause a
> > space
> > > offset error (MCH0601) due to trying to operate outside of  "an implicit
> > > process space for activation group-based heap storage".
> >
> > For that last ALLOC before the abend, are you allocating *less*
> > storage than the previous?  The occurrence number is assigned to
> > static storage, and does not change when storage for a based MODS is
> > reallocated.  Perhaps the program is abending because the occurrence
> > number points to an occurrence beyond the end of the allocated storage?
> >



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.