The symbols identified between a STRPGMEXP PGMLVL(*CURRENT) and
ENDPGMEXP pair define the public interface to a service program. That
public interface is represented by a signature.
A signature is a value that identifies the interface supported by
a service program.
Note: Do not confuse the signatures discussed in this topic
with digital object signatures. Digital signatures
on IBM® i objects ensure the
integrity of software and data. They also act as a deterrent to data
tampering or the unauthorized modification to an object. The signature
also provides positive identification of the data's origin. For more
information about digital object signatures, see the Security category
of information in the IBM i
Information Center.
If you choose to specify an explicit signature, your binder language
source only needs to have one export block; new exports can be added
to the end of the list of exports. If you choose not to specify an
explicit signature, the binder generates a signature from the list
of procedure and data item names to be exported and from the order
in which they are specified. You must add a new export block to your
binder source every time you add new exports to your service program.
Note: To avoid making incompatible changes to a service program,
existing procedure and data item names must not be removed or rearranged
in the binder language source. Additional export blocks must contain
the same symbols in the same order as existing export blocks. Additional
symbols must be added only to the end of the list. This rule applies
whether you specify an explicit signature, or whether you allow the
binder to generate a new signature.
There is no way to remove a
service program export in a way compatible with existing programs
and service programs because that export might be needed by programs
or service programs bound to that service program.
If an incompatible
change is made to a service program, existing programs that remain
bound to it might no longer work correctly. An incompatible change
to a service program can be made only if it can be guaranteed that
all programs and service programs bound to it are re-created with
the CRTPGM or CRTSRVPGM command after the incompatible change is made.
A
signature does not validate the interface to a particular procedure
within a service program. An incompatible change to the interface
of a particular procedure requires that all modules that call the
procedure be recompiled, and all programs and service programs that
contain those modules be re-created with CRTPGM or CRTSRVPGM.