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



I appreciate the ideas everyone.

In particular I was trying to avoid making the variable global (since it
is only used by the one procedure).
I think I'll do a little research on descriptors per Scott's suggestion
(since I have absolutely no idea what a descriptor is).

Thanks,

Kurt Anderson
Application Developer
Highsmith Inc

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of HauserSSS
Sent: Wednesday, August 03, 2005 12:36 PM
To: RPG programming on the AS400 / iSeries
Subject: AW: Static and non-static variables in subprocedures

Do you want to define the static variables locally or could you define
global variables instead?
If you can use global variables, you can add an exported procedure in
the same member where your the procedure with the static variables is
located.
This exported procedure does nothing else then reinitializing the global
variables.

If your program ends or at program start or whenever you want, just call
this exported procedure and your variables get reinitialized.

Birgitta
-----Ursprungliche Nachricht-----
Von: rpg400-l-bounces+hauser=sss-software.de@xxxxxxxxxxxx
[mailto:rpg400-l-bounces+hauser=sss-software.de@xxxxxxxxxxxx]Im Auftrag
von Kurt Anderson
Gesendet: Mittwoch, 3. August 2005 17:51
An: RPG programming on the AS400 / iSeries
Betreff: RE: Static and non-static variables in subprocedures


Sorry, hard to find time to reply.
Larry hit it on the head.  The ability to allow local variables to
persist like global variables naturally do.

This would be helpful if I have a procedure that controls the paging
down of a subfile so it could remember what it needs to remember without
me having to pass the values out of the procedure for the sole reason to
pass them back in when the user pages down again.

Hoping for a non activation group answer simply because we aren't
explicitly using them at this time.  If using activation groups is the
only way to do this, then I'll have to consider bringing that up in a
team meeting sometime.

Thanks,

Kurt Anderson
Application Developer
Highsmith Inc

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Larry Ducie
Sent: Wednesday, August 03, 2005 9:53 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: RE: Static and non-static variables in subprocedures

Hi Duane,

<snip>
I think what Kurt is saying he wants is a static variable for the life
of the subprocedure no mater which activation group calls it. To do this
your subprocedure would need to be in a service program which has it's
own named activation group. The service program would then be isolated
and the value of the static variable within the subprocedure would be
"static" for the life of the service program's activation group.
</snip>

I think Kurt is alluding to the fact that variables declared as static
within subprocedures are not re-initialised if the program returns with
*INLR on and is called again. This, I believe, is a result of the
program being closed, but not unloaded (it is still active).

The easy way to unload the program (de-activate it) is to end the
activation group the program resides within. Of course, putting the
program in a *NEW activation group does this implicitely. But this is
not what Kurt wants.
Kurt wants the static subprocedure variables to re-initialise each time
the program is closed and re-called (just as global variables are). - At
least I think that's what he wants.

Kurt,

I don't believe there is a standard way to do this as the variables are
only visible within the subprocedure and your prototype is already
defined.

The only way I know is to include an additional (optional) parm to the
subprocedure call which specifies initialisation. OR, make all parms
optional and initialise if you pass nothing.

Such as:

//call as usual...
callProcAsUsual(parm1 :parm2 :parm3);


//call within *inzsr...
callProcAsUsual(*blanks :*blanks :*blanks :initialise); OR
callProcAsUsual();

Cheers

Larry Ducie


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


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



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