IMPLEMENTATION MODULE KermFini; (************************************************************************) (* Shut down remote server *) (* written: 14.12.85 Matthias Aebi *) (* last modification: 18.03.85 Matthias Aebi *) (************************************************************************) FROM Terminal IMPORT WriteString, Write, WriteLn; FROM KermRecv IMPORT RecvPacket; FROM KermSend IMPORT SendPacket; FROM KermParam IMPORT Packet, LMaxRetries; FROM KermMisc IMPORT PrtErrPacket; (************************************************************************) PROCEDURE Finish(command: CHAR); (************************************************************************) VAR recvPack : Packet; sendPack : Packet; typ : CHAR; num : CARDINAL; len : CARDINAL; numTry : CARDINAL; BEGIN numTry := 0; sendPack[0] := command; (* F->Finish, L->Bye/Logout *) LOOP SendPacket("G",0,1,sendPack); RecvPacket(typ, num, len, recvPack); CASE typ OF "Y","N": IF ((typ = "N") AND (num = 1)) OR (typ = "Y") THEN RETURN; END; | "E": (* got error packet *) PrtErrPacket(recvPack, len); EXIT; | "T": (* timeout (receive) *) INC(numTry); | "A": (* user abort *) EXIT; ELSE EXIT; END; IF numTry > LMaxRetries THEN EXIT; END; END; WriteLn; WriteString("Unable to logout server"); WriteLn; END Finish; END KermFini.