× 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 difference is the RPG has to handle the reference counting and object
cleanup ( dealloc once the object is no longer referenced. )

By that statement do you mean the RPG programmer has to keep track of that
or the RPG runtime? I guess the way I look at it is a piece of memory in
both languages would be put up for re-allocation once the scope had expired
(i.e. local variables within a sub procedure, setting on *INLR, ending an
activation group). How are they different other than OS/400 has had this
"reclaiming of resources) for probably much longer than Java/C#? (which I
would also translate into it most likely being much more robust and
efficient)

All in memory. Crudely stated, as long as there is a reference in the call
stack to the result set object, that object will not be garbage collected.
It is a very elegant system. None of the time consuming reference counting
you see in C++ smart pointers.

I wasn't look at it as being a positive if it was done in memory as you are
:-) Joining result sets, IMO, should be done by the DBMS and not the
language. How does such an application scale well if all this work is being
done in memory and NOT by the OS or DBMS but instead by the language? In
the same breath I would be curious to know how RPG handles this under the
covers for embedded SQL - is it caching it all in memory or using a table in
QTEMP?

Aaron Bartell
http://mowyourlawn.com

On Mon, Jun 23, 2008 at 7:58 AM, Steve Richter <stephenrichter@xxxxxxxxx>
wrote:

On Mon, Jun 23, 2008 at 8:06 AM, Aaron Bartell <aaronbartell@xxxxxxxxx>
wrote:
I am wondering if the fundamental infrastructure difference in the
languages
is what necessitates garbage collection more in Java and xxx.NET vs. RPG.
For example, in RPG you pass around less information in memory than Java
(in
my experience) in that you don't (or rather aren't able to) pass entire
Collections (i.e. result sets) from one method/object to another.

in Java you pass a reference to the object. In RPG and C you pass a
pointer. Both are trivial in terms of not having to copy the data as
the collection is passed from module to module. The difference is the
RPG has to handle the reference counting and object cleanup ( dealloc
once the object is no longer referenced. )


Unfortunately I am not well versed on memory management and the like so I
can't speak with much authority other than offering up questions. Can
anybody speak to that?

... join to columns in another result set, sort the rows, then pass the
object on to another program which creates an XML document from the
collected data.

Is all this being done in memory? How involved are temporary MSSQL
tables
involved in the process, or is it more part of C# that is performing
these
functions?

All in memory. Crudely stated, as long as there is a reference in the
call stack to the result set object, that object will not be garbage
collected. It is a very elegant system. None of the time consuming
reference counting you see in C++ smart pointers.

I doubt there is a need for temporary SQL tables. A static btree
routine can sort and filter a collection, returning a reference to a
new collection, just as effectively as a DBMS can.

-Steve
--
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 thread ...

Follow-Ups:
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.