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



The RPGLE program is interactive and runs in the default activation group. Before the CLLE ends, I'll call the RPG one last time to set on LR and reclaim the dynamic storage with dealloc. Thanks for your time Jon.

I did notice that:
- After the RPG program ran the first time, loading the dynamic arrays and returning to the CL with LR off and no dealloc being executed.
- Then a RCLRSC was executed.
- Finally, when the same RPG program was run again with a breakpoint at the first statement, that the arrays pointer was set to null and the array elements themselves contained garbage (like they were the first time it is called before the array is loaded). This is what made me suspect that the RCLRSC reclaimed the dynamic memory, but it looks like the way to be sure is call it one last time and run the dealloc command and set on LR.




-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Jon Paris
Sent: Monday, February 24, 2014 1:22 PM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: Re: Dynamic Storage

Couple of essential bits of information are missing. The heap belongs to the AG in which the program is running. Where the CL runs is irrelevant - does the RPG run as *CALLER - in which case it is in that AG, or in a named AG? Is it a batch run or interactive?

If batch the heap will get cleaned up when the job ends. If interactive then RCLACTGRP (or switching the program to run as *NEW) is the way to clear up the storage if the RPG runs in a named AG. If the RPG runs *CALLER it is running in the default and cannot be cleaned up until the job ends. In this latter case a final call to dealloc and set on LR would be the way to go.


On 2014-02-24, at 12:52 PM, Gary Thompson <gthompson@xxxxxxxxxxx> wrote:

Walter,
Just a guess, but since you mention CLLE, I think you want to think
about using RCLACTGRP in place of RCLRSC - which is an OPM command.
RCLACTGRP should be used for ILE.

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Walter Bellisio
Sent: Monday, February 24, 2014 6:53 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: Dynamic Storage


I have a quick question concerning the release of heap storage that we use for dynamic sizing arrays. I understand that heap storage is released with the RPGLE dealloc command. We have a case where we load dynamic arrays in the *INZSR routine and leave LR off so the arrays are only loaded once since this program is called multiple times. The program is called in a CLLE stream running in the default activation group. When the RPGLE program finishes being called multiple times, will a RCLRSC command free up heap storage? I've read in multiple places where RCLRSC will free up static storage, but no mention is made of heap storage. I could call the RPGLE program one last time with a flag that would do the deAlloc, but if RCLRSC does it, then no need to do the last call.

--
This is the RPG programming on the IBM i (AS/400 and 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.

--
This is the RPG programming on the IBM i (AS/400 and 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.


Jon Paris

www.partner400.com
www.SystemiDeveloper.com




--
This is the RPG programming on the IBM i (AS/400 and 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 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.