The following connection library program serves as a switch, connecting client libraries to any of several similar server libraries. These server libraries each export a procedure called A2.
Note that this example includes only the connection library program; the server libraries and client libraries would be in separate programs, which are not shown here.
TYPE CONNECTION BLOCK SERVER_CL_TYPE;
BEGIN
PROCEDURE A2;
IMPORTED;
END OF SERVER_CL_TYPE;
SERVER_CL_TYPE LIBRARY SERVER_CL(CONNECTIONS = 10,
LIBACCESS = BYFUNCTION,
INTERFACENAME = “SECONDLINK.”);
TYPE CONNECTION BLOCK CLIENT_CL_TYPE;
BEGIN
INTEGER SERVER_ID,
SERVER_CL_INDEX;
PROCEDURE LINK_ME (ID);
VALUE ID; INTEGER ID;
BEGIN
EBCDIC ARRAY A[0:15];
INTEGER I;
SERVER_ID:= ID;
% FIND A VALID CONNECTION
I:= 1;
WHILE I LSS LIBRARY(SERVER_CL).CONNECTIONS AND
SERVER_CL_INDEX = 0 DO
IF LIBRARY(SERVER_CL[I]).STATE = VALUE(NOTLINKED) THEN
SERVER_CL_INDEX:= I
ELSE
I:= * + 1;
IF SERVER_CL_INDEX = 0 THEN
BEGIN
LIBRARY(SERVER_CL).CONNECTIONS:=
LIBRARY(SERVER_CL).CONNECTIONS + 1;
SERVER_CL_INDEX:= LIBRARY(SERVER_CL).CONNECTIONS;
END;
REPLACE A BY “SERVERNAME”, ID FOR * NUMERIC;
LINKLIBRARY(SERVER_CL[SERVER_CL_INDEX], FUNCTIONNAME = A);
END OF LINK_ME;
PROCEDURE A1;
BEGIN
SERVER_CL[SERVER_CL_INDEX].A2;
END OF A1;
EXPORT LINK_ME, A1;
END OF CLIENT_CL_TYPE;
CLIENT_CL_TYPE LIBRARY CLIENT_CL(CONNECTIONS = 10,
INTERFACENAME = “FIRSTLINK.”);
RSLT:= READYCL(CLIENT_CL); In this example, the client program submits a linkage request by invoking the procedure LINK_ME in connection library CLIENT_CL. The client program uses parameter ID to procedure LINK_ME to specify which server library to link to. LINK_ME performs the following actions:
-
Searches for a CLIENT_CL connection that is not in use, and increases the CONNECTIONS value if necessary.
-
Builds a FUNCTIONNAME value out of the string SERVERNAME and the value of parameter ID.
-
Links through the selected connection using the selected FUNCTIONNAME value.
Once procedure LINK_ME is finished, the client program can invoke the procedure A1 of connection library CLIENT_CL. Procedure A1 in turn executes a call on procedure A2 of the server library that was linked to previously.

