If you have a *PGM object, then it can be compiled to enforce having 1
point of entry (using *ONLY on the ENTMOD parameter). Also in
multi-module *PGMs you do not really 'export' the functions used between
the modules - they are statically bound and built into the program
object in the compile process, and should not be available for external
use under 'normal' conditions. This should be evident if you compare the
output for DSPPGM output of your program to a DSPSRVPGM of a similar
type of service program (which does export functions and can have many
entry points). (For that matter even in a service program you do not
have to export all the functions if you make a multi-module service
program and you want some of the functions to stay internal to the
service program's operation using binder language.)

I would also compile it with 'Allow Update' *NO so none of the modules
inside the program or any bound service programs can be replaced using

If you do not ship the modules that make up your compiled program (and I
cannot see any reason to do this), and you do not make the source
available, and compile it properly so it can't be updated or debugged,
and if you set the program to the highest optimization level, I do not
see how someone can directly invoke those procedures that are in the
modules that make up the program - they should come only through the
call level interface.

Take care,

Genyphyr Novak


message: 8
date: Wed, 24 May 2006 10:32:45 -0500
from: "Elvis Budimlic" <ebudimlic@xxxxxxxxxxxxxxxxxxxxxxxxx>
subject: Re: [C400-L] modules and exported symbols

To the best of my knowledge, there's no legit way to do that.  You could
on the MI list, as those guys would probably know if there is a
way to do that.  
In any case, I suspect you're not selling your product to MI guys anyway
I wouldn't fret about it.


-----Original Message-----
Subject: [C400-L] modules and exported symbols

Say that I create some modules with CRTCMOD and create a program out of
with CRTPGM.

Can any of the functions exported from the modules be used by a third
the same way one might use a service program? I think the answer is "not
easily", but I'm not sure.

I have a function that determines whether a given license key is valid.
not static to the module it's in, because, of course, other parts of the
program need to call it. But I don't want to provide an API that helps
brute out a key.

This thread ...

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2019 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].