× 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 think Adam hit it on the head...

Consider 50 programs PGM01 to PGM50, all of which have UTILMOD bound in by copy.

If you have 50 people all using the same PGM01, then you have 50 activations of the program sharing
one copy of the executable code in PGM01 and UTILMOD.

If you have 50 people all using different programs, PGM01 to PGM50, then you end up with 50 copies of
the executable code found in UTILMOD.

If UTILMOD is in a service program, and thus bound to PGM01 to PGM50 by reference, then you'd have all
50 people using different programs PGM01 to PGM50, sharing a single copy of the executable code in
UTILMOD from the service pgm.


Shared code belongs in a *SRVPGM, no ifs and or buts!



Charles Wilt
--
Software Engineer
CINTAS Corporation - IT 92B

513.701.1307

wiltc@xxxxxxxxxx


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of David FOXWELL
Sent: Thursday, July 31, 2008 4:11 AM
To: RPG programming on the AS400 / iSeries
Subject: RE: Question about service programs

Hi,

We have not yet implemented the use of service programs. So each program
has its own copy of the code.

When a procedure is modified, we recompile all programs that reference a
procedure in the module of the procedure that is modified. This is making
installation longer each time, as the modules become bound to more and
more programs and more programs must be recompiled.

If we have 50 people using the same interactive program that weighs 40 Mb,
made up of many modules bound by copy and no service programs, are there
50 copies of that program in activated or is it shared ? Can we imagine
any performance differences with the use of service programs instead of
modules?

Thanks.

-----Message d'origine-----
De : rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
De la part de Mark S. Waterbury
Envoyé : mercredi 30 juillet 2008 22:40
À : RPG programming on the AS400 / iSeries
Objet : Re: Question about service programs

Hello, Charles:

The executable code within *PGMs and *SRVPGMs is "reentrant" so the
executable code is "shared" (read-only pages) across multiple jobs (and so
is a lot of other stuff in the vast single-level-storage address space).

Unique to each job is the "activation" of each program and service
program, which includes the allocation of static and automatic (dynamic)
storage for the programs, etc. The "activation group" is the container
for all of these various 'activations' of *PGMs and *SRVPGMs, allowing for
programs to control "clean-up" by activation group. You can think of each
job as initially having just one activation group. (Actually, there are
always at least two AGs, the DAG or default activation group where OPM
programs must run, and an ILE activation group where ILE *PGMs
run.) There is also a "System-wide Activation Group" (or SAG) where many
ILE components of OS/400 run, so they are initialized once (usually at
IPL) and they can remain activated and "in use" across the entire system.

As others have pointed out, one way you can do something similar is to
create a (never-ending) "server job" to service requests.

Traditionally, (going back to System/38 CPF), you would implement this
approach using data queues. Today, you might also want to consider using a
TCP/IP sockets interface. One advantage of the TCP/IP sockets approach is
that the client programs can run on a PC under Windows or Linux, or on
another Unix or Linux server, or even another iSeries system, while the
"server jobs" run on your System i. There are various approaches for
spawning multiple jobs (or threads) so that as the frequency of requests
(or volume of transactions) increases, your server can "keep up" or "scale
up" as needed. (In fact, this is exactly what most HTTP servers do.)

I hope this explanation helps?

All the best,

Mark S. Waterbury

> Charles St-Laurent wrote:
Hi!

I wonder if what I want to do is possible on iSeries (V5R4).

I want to load many service programs in a kind of shared memory and
then use the loaded service programs from interactive or batch jobs,
so the loaded programs won't be loaded each time I start a new batch
or interactive job that wants to use them.

For example:

1) I load all my service programs once and initialize them correctly
2a) I submit a job and I want the submitted job to use the loaded
service programs that have been loaded previously and passing them
parameters
2b) I launch an interactive job and I want this interactive job to use
service programs that have been loaded previously and passing them
parameters

I read about activation groups. Activation groups are effective within
the same job. But in my case, I also want to use persistent programs
between jobs (each batch job is a new job and I don't want my service
programs to be allocated/released each time). I want my batch jobs to
execute previously loaded service programs, each time with different
parameter values.


Charles St-Laurent
Consultant Berco
Technologies
Industrielle Alliance, Assurance auto et habitation Téléphone : 418
650-4600, poste 3216 Sans frais : 1 800 463-4382 Télécopieur : 418
650-4612 Sans frais : 1 877 650-4612 Courriel :
charles.st-laurent@xxxxxxx <mailto:pcharles.st-laurent@xxxxxxx>
www.inalco.com/assurancegenerale



--
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 e-mail transmission contains information that is intended to be confidential and privileged. If you receive this e-mail and you are not a named addressee you are hereby notified that you are not authorized to read, print, retain, copy or disseminate this communication without the consent of the sender and that doing so is prohibited and may be unlawful. Please reply to the message immediately by informing the sender that the message was misdirected. After replying, please delete and otherwise erase it and any attachments from your computer system. Your assistance in correcting this error is appreciated.

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.