TS/MP Pathsend and Server Programming Manual (H06.05+, J06.03+)

! and 919 all return the same file system error (error 2,
! FEInvalOp).
IF pathsend^error = FEScInvalidSegmentId !907!
OR pathsend^error = FEScNoSegmentInUse !908!
OR pathsend^error = FEScInvalidFlagsValue !909!
OR pathsend^error = FEScMissingParameter !910!
OR pathsend^error = FEScInvalidBufferLength !911!
OR pathsend^error = FEScParameterBoundsError !912!
OR pathsend^error = FEScInvalidTimeoutValue !919!
THEN ! the error returned from serverclass_send_ was a param error
sp ':=' "(BAD PARAMETER PASSED TO SERVERCLASS_SEND_)" -> @sp;
! Include a msg if the file system error is a security violation
IF filesystem^error = e^security^violation !48!
THEN ! add error text for the user
st ':=' "(SECURITY VIOLATION)";
END; ! else trap parameter errors
END; ! PROC analyze^send^error^233
?PAGE "PROCESS THE ASSIGN MESSAGES"
! This procedure is called by the GUARDIAN 90 PROC INITIALIZER from
! PROC initialize. It saves ASSIGN msgs, passed from our ancestor
! TACL, in our ASSIGN table, and is called once for each ASSIGN msg
! passed.
! A count of the number of ASSIGNs in the table is kept in global
! var assign^count, and is used in table lookups.
PROC assign^proc (rucb, passthru, assign^msg, msg^len, match) VARIABLE;
INT .rucb,
.passthru,
.assign^msg,
msg^len,
match;
BEGIN
INT .buf [0:79];
STR .sbuf := @buf '<<' 1;
STR .sp;
IF assign^count >= max^assigns
THEN ! will exceed the size of our assign table
BEGIN
sbuf ':=' "NUMBER OF ASSIGNS EXCEEDS MAX^ASSIGNS" -> @sp;
CALL WRITE (term^fnum, buf, @sp '-' @sbuf);
IF <
THEN ! print an error msg and abend
CALL IO^error (term^fnum);
CALL ABEND;
END;
assign^table [assign^count] ':=' assign^msg FOR (msg^len + 1) / 2;
assign^count := assign^count + 1;
END; ! PROC assign^proc
146 Examples