Signature

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.