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



Alan,

I have a variety of procedures that do more than one (and only one) thing.
There are good reasons for this. Some of those procedures use large DS's and
some of those DS's aren't used in every call - there may be multiple
slightly different DS's, each of which are used on different calls. An
example is a procedure to load/update/retrieve file data which is
'pre-loaded' into an array. Also various DBCS string-handling routines.
There is a long list.

Yeah, I probably could do a pointer-based structure, but this method works
fine too. Sure, it will increase the Static storage, but I haven't noticed a
performance hit because of that. However, I did notice a performance
improvement when I went to using STATIC on these DS's.

Hell, I've seen performance improvements simply with adding STATIC to a
32767-byte string in a frequently-called procedure.

Rory.

On Tue, Oct 20, 2009 at 9:58 AM, Alan Campin <alan0307d@xxxxxxxxx> wrote:

Why would a data structure not be used on a procedure call? If a procedure
does one thing and one thing only why would you have variables that don't
do
anything?

Also wouldn't using Static increasing your static storage requirement slow
down the program? The more static, the more it has to manage.

Why would a procedure have large data structures?

Couldn't you just base the data structure on a pointer and allocate storage
to it when you need it rather than chewing up a bunch of static storage?

Just curious.

On Tue, Oct 20, 2009 at 10:32 AM, Rory Hewitt <roryhewitt@xxxxxxxxx>
wrote:

As has been pointed out in the past, fields and DS's in the D-specs are
automatically initialized, *unless* you specify the STATIC keyword (only
valid for procedure variables). Therefore, from a performance standpoint,
I
tend to declare very large DS's etc. as STATIC and then explicitly
initialize them immediately prior to their use. That way, if the DS isn't
actually used every time the procedure is called, it won't be needlessly
initialized.

On Tue, Oct 20, 2009 at 8:20 AM, Alan Campin <alan0307d@xxxxxxxxx>
wrote:

You have to be careful with Reset if you are writing modern ILE RPG.
(Local
variables, subprocedures, etc) unless you don't care about static
storage.

I had a program that was using a bunch of static storage but I had
nothing
declared in static. I talked to IBM and it turns out all the values for
the
Reset are stored in static storage even though the reset is to a
variable
in
local storage. Why I have no idea.

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