Local Objects in Connection Libraries

Local Variables Reinitialized

Any local variables declared in a procedure exported by a connection library are reinitialized each time that procedure is invoked.

Local Variables Example

The following ALGOL example declares a connection library CL_ONE that exports procedure PROC1. Procedure PROC1 declares a variable LOCAL_INT and increments the value of this variable.

EBCDIC ARRAY LIBF[0:23];

TYPE CONNECTION BLOCK CL_CSPEC;
   BEGIN

   PROCEDURE PROC1;
      BEGIN
      INTEGER LOCAL_INT;
      LOCAL_INT:= * + 10;
      END;

   EXPORT PROC1;

   END;

CL_CSPEC LIBRARY CL_ONE (LIBACCESS = BYFUNCTION,
                         FUNCTIONNAME = “TESTF.”,
                         CONNECTIONS = 2);

REPLACE LIBF BY “LIB1.”;
LINKLIBRARY (CL_ONE[0], INTERFACENAME = LIBF);
REPLACE LIBF BY “LIB2.”;
LINKLIBRARY (CL_ONE[1], INTERFACENAME = LIBF);

In this example, variable LOCAL_INT will never exceed a value of 10, no matter how many times procedure PROC1 is invoked.