A calling program calls entry points provided by a library. It uses LIBRARY declarations and PROCEDURE declarations that contain the <library entry point specification> construct.
A library can itself function as a calling program and can call other libraries. A library cannot reference itself, but circular references are allowed with the following restrictions:
-
A circular linkage can be made only if all libraries are frozen and at least one of the libraries was frozen TEMPORARY or PERMANENT at the time it linked to its neighbor in the circle.
-
A circular reference of indirectly provided objects is not allowed. An indirectly provided object is an object imported from another library and then exported.

