|
Okay, let me see if I have this straight...
I created 3 modules, CARTAGE, DATETIME, SYSTEM. I then created 2 service
programs from these 3 modules, CARTAGE and GENERAL. Then I created a binding
directory from these 2 service programs, CARTAGE.
When I compile my program BSTORDADD it uses this header:
H DftActGrp( *No ) BndDir('CARTAGE')
I am using 2 different methods to call the functions in the modules in my
program:
C Eval FileSuffix = GetNextSuffix(FilePrefix)
C CallP CloseCCOHD
Eval when the function is returning a value, CallP when the function is not
returning a value.
Now. What is included in my *PGM? I was thinking the only thing that would
be included in the *PGM object would be the source file, BSTORDADD and that
the modules included in the 2 service programs would be loaded at run time.
Am I wrong?
Regards,
Jim Langston
Me transmitte sursum, Caledoni!
"DeLong, Eric" wrote:
>
> Ok, here's my take.....
>
> Module objects are bound directly into the program or service program. That
> is, since a module contains executable code (more or less), you've
> essentially done a /copy. You've made a bigger program because the
> executable code has been bound directly into the compiled program object.
>
> Service programs are bound by reference only. As each service program has
> details about the public and private methods contained within it (binder
> language), the compiler retrieves the address and interface details of the
> exported procedure from the service program and binds that into the program
> rather than the actual executable code. This keeps the program object
> smaller since that executable code was not actually copied into the program
> referencing the exported method. You're really just calling an external
> proc, just like a dynamic call in RPG400. But because the address and
> interface of the program/procedure is determined at compile time, you save a
> heap of work involved in the dynamic call.......
>
> That really didn't come out like I wanted it to. If this doesn't make any
> sense, let me know and I'll try to do better.
>
> hth,
> Eric DeLong
>
> -----Original Message-----
> From: Jim Langston [mailto:jimlangston@conexfreight.com]
> Sent: Friday, April 27, 2001 4:03 PM
> To: RPG400-L@midrange.com
> Subject: Re: Quick ILE question about service programs
>
> When you use the C functions, you bind with the directory QC2LE.
>
> I am a little fuzzy myself and when the modules are included in the *PGM
> object and when they aren't. It is my understanding, which may be wrong,
> that when I CRTBNDRPG I am not including the modules into my *PGM file, but
> just linking to them at run time.
>
> It should be the same with the QC2LE, these modules should just be linked
> so that at run time the OS will load the module and run the code.
>
> Anyone have a different angle on this?
>
> Regards,
>
> Jim Langston
>
> Slava Zharichenko wrote:
> >
> > Hi,
> > i am reading 'Who Knew you....' and finding it very helpful. It written in
> > the plain language and have a bunch of examples, i start reading it and
> > could not stop until reached Chapter 5.
> >
> > I have a question about service program and binding and i think i have an
> > answer but not 100% sure.
> >
> > If i create service program which includes some of system supplied
> > procedures like C math for example, will service program object contain
> > those procedures or it will just bind them the way CRTPGM does? I think i
> > understand correctly when program is created by binding Main procedure
> with
> > service program , service program itself is not 'added' to the Main PGM it
> > just being 'bind' to it for quick address resolution e.t.c
> >
> > Thank you
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.