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

SPI Programming Examples
SPI Programming Manual427506-006
E-83
Example E-19: Routines for TAL Requesters and
Servers
7 -> l^err^sbuf ':=' "Unlicensed PRIV program " -> @sp;
l^len := fnamecollapse (p^program^fname, sp);
@sp := @sp[l^len];
8 -> l^err^sbuf ':=' "Process Name Error " -> @sp;
CALL format^file^error;
9 -> l^err^sbuf ':=' "Library Conflict" -> @sp;
10 -> l^err^sbuf ':=' "Unable to communicate with System Monitor" -> @sp;
11 -> l^err^sbuf ':=' "File System Error on Library File " -> @sp;
l^len := fnamecollapse (p^program^fname[12], sp);
@sp := @sp[l^len];
CALL format^file^error;
12 -> l^err^sbuf ':=' "Program and Library Files are the Same" -> @sp;
13 -> l^err^sbuf ':=' "Invalid Segment Size" -> @sp;
14 -> l^err^sbuf ':=' "File System Error on Initial Setup of Swap " &
"File " -> @sp;
CALL format^file^error;
15 -> l^err^sbuf ':=' "Illegal Home Terminal " -> @sp;
CALL format^file^error;
16 -> l^err^sbuf ':=' "I/O Error on Home Terminal " -> @sp;
CALL format^file^error;
17 -> l^err^sbuf ':=' "DEFINE context propagation error" -> @sp;
18 -> l^err^sbuf ':=' "OBJECT file with an illegal process Device " &
"subtype" -> @sp;
19 -> l^err^sbuf ':=' "process device subtype specified in Backup " &
"Process not the same as that in primary " &
"process " -> @sp;
OTHERWISE -> l^err^sbuf ':=' "Unknown Error " -> @sp;
END; -- of CASE
CALL writex (term, l^err^sbuf, @sp '-' @l^err^sbuf);
IF <> THEN CALL get^file^error (term);
END; -- of PROC report^newprocess^error
? PAGE "restart^server"
!=========================================================================!
! Proc : restart^server !
! Function : This procedure will start and re-start the server up to a !
! maximum number to times. !
!=========================================================================!
PROC restart^server;
BEGIN
STRING l^err^msg^1 [0:30] := "Server restart retries exceeded",
l^err^msg^2 [0:15] := "Server restarted";
INT l^process^flags := 0,
l^priority := 0; ! Flag to start up server in INSPECT
IF srvr^retry^count > 0 THEN
BEGIN
CALL writex (term, l^err^msg^2, $OCCURS (l^err^msg^2));
IF <> THEN CALL get^file^error (term);
END;
srvr^retry^count := srvr^retry^count + 1;
IF srvr^retry^count > 3 THEN
BEGIN
CALL writex (term, l^err^msg^1, $OCCURS (l^err^msg^1));
IF <> THEN CALL get^file^error (term);
CALL stop;
END;
Example E-19. TAL File: SETRUTIL Supporting Code (page2of4)