The following example includes the ALGOL host program and an ALGOL subprogram that references connection block items from outside the connection block.
ALGOL Host Program
BEGIN
TYPE CONNECTION BLOCK CB;
BEGIN
REAL PROCEDURE R1;
BEGIN
REAL R;
R:= 5.5
R1:= R;
END R1;
END CB;CB SINGLE LIBRARY CL;
PROCEDURE EXTERNAL_PROC; EXTERNAL;
EXTERNAL_PROC; END.
ALGOL Subprogram
[
TYPE CONNECTION BLOCK CB; FORWARD;
CB SINGLE LIBRARY CL;
]TYPE CONNECTION BLOCK CB; % CB is fully specified here
BEGIN
REAL PROCEDURE R1;
BEGIN
REAL R;
R:=5.5;
R1:=R;
END R1;
END CB;$ SET LEVEL 3 PROCEDURE EXTERNAL_PROC; BEGIN REAL REEL; REEL := CL.R1; END.
The following example includes an ALGOL host program that declares a connection block with imported library objects and an external procedure. Also included is an example of a subprogram containing the procedure to be bound and, for completeness, an example of the library file.
ALGOL Library Program
BEGIN
EVENT EV;
TYPE CONNECTION BLOCK CB;
BEGIN
EBCDIC ARRAY OUTPUTMSG[0:30];
PROCEDURE SENDOUTPUT;
BEGIN
DISPLAY (STRING (OUTPUTMSG[0],10));
END; EXPORT
OUTPUTMSG (READWRITE),
SENDOUTPUT;
END CB;CB SINGLE LIBRARY CL_LIB;
EXPORT EV;
READYCL (CL_LIB);
FREEZE (TEMPORARY); END.
ALGOL Host Program
BEGIN
TYPE CONNECTION BLOCK CB;
BEGIN
REAL R;
IMPORTED EBCDIC ARRAY % Imported library object
OUTPUTMSG[0] (READWRITE);
PROCEDURE SENDOUTPUT; % Imported library object
IMPORTED;
PROCEDURE P1;
EXTERNAL;
END CB;CB SINGLE LIBRARY CL
(AUTOLINK=TRUE,
INTERFACENAME="CL_LIB.",
TITLE="OBJECT/IMPORTED/CL/LIB."
);CL.P1; END.
ALGOL Subprogram
$ set level 4 [TYPE CONNECTION BLOCK CB; EXTERNAL; ]
TYPE CONNECTION BLOCK CB;
BEGIN
IMPORTED EBCDIC ARRAY % Imported library object
OUTPUTMSG[0] (READWRITE);
PROCEDURE SENDOUTPUT; % Imported library object
IMPORTED;
PROCEDURE P1;
PENDING;
END CB;PROCEDURE CB.P1; BEGIN REPLACE OUTPUTMSG[0] BY "IN P1"; SENDOUTPUT; END P1.

