SPI Programming Manual (G06.24+, H06.03+, J06.03+)

SPI Programming Examples
SPI Programming Manual427506-006
E-32
Example E-9: A Simple SPI Requester in TAL
sp[3] ':=' ") on OPEN of the SERVER" -> @sp;
CALL writex (term, sline, @sp '-' @sline);
IF <> THEN CALL get^file^error (term);
RETURN;
END;
! Now write the STARTUP msg to the server
CALL writex (srvr^file^num, startup^msg, $LEN(startup^msg));
IF <> THEN
BEGIN
CALL fileinfo (srvr^file^num, file^error);
! Ignore error 70 (continue operation)
IF file^error <> 70 THEN
BEGIN
sline ':=' "File system error (" -> @sp;
CALL numout (sp, file^error, 10, 3);
sp[3] ':=' ") on WRITE to the SERVER" -> @sp;
CALL writex (term, sline, @sp '-' @sline);
IF <> THEN CALL get^file^error (term);
RETURN;
END;
END;
CALL close (srvr^file^num);
IF <> THEN
BEGIN
CALL fileinfo (srvr^file^num, file^error);
sline ':=' "File system error (" -> @sp;
CALL numout (sp, file^error, 10, 3);
sp[3] ':=' ") on CLOSE of the SERVER" -> @sp;
CALL writex (term, sline, @sp '-' @sline);
IF <> THEN CALL get^file^error (term);
RETURN;
END;
! Re-open the server
open^flags := 0;
open^flags.<12:15> := 1; ! NOWAIT IO !
! Open the server using SPI
process^id [4] ':=' "#ZSPI ";
CALL open (process^id, srvr^file^num, open^flags);
IF <> THEN
BEGIN
CALL fileinfo (-1, file^error);
sline ':=' "File system error (" -> @sp;
CALL numout (sp, file^error, 10, 3);
sp[3] ':=' ") on REOPEN of the SERVER" -> @sp;
CALL writex (term, sline, @sp '-' @sline);
IF <> THEN CALL get^file^error (term);
RETURN;
END;
process^id [4] ':=' " "; ! Fix the process ID
server^up := true;
END; ! -- of PROC open^server;
?PAGE "PROC requester MAIN"
!===========================================================================!
! MAINLINE ROUTINE STARTS HERE !
! !
!===========================================================================!
Example E-9. TAL File: A Simple SPI Requester (page 5 of 8)