|
-----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!parameter values.
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
--
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.
As an Amazon Associate we earn from qualifying purchases.
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.