<> <> <> DIRECTORY MessagesOut USING [], MessageWindow USING [Append], IO USING [PutRope, STREAM], Process USING [CheckForAbort], Rope USING [ROPE]; MessagesOutImpl: CEDAR MONITOR IMPORTS MessageWindow, IO, Process EXPORTS MessagesOut = BEGIN ROPE: TYPE = Rope.ROPE; STREAM: TYPE = IO.STREAM; PutRopes: PUBLIC ENTRY PROC [stream: STREAM, r1,r2,r3,r4: ROPE _ NIL] = { ENABLE UNWIND => NULL; IF stream # NIL THEN { IO.PutRope[stream, "\n"]; IF r1 # NIL THEN IO.PutRope[stream, r1]; IF r2 # NIL THEN IO.PutRope[stream, r2]; IF r3 # NIL THEN IO.PutRope[stream, r3]; IF r4 # NIL THEN IO.PutRope[stream, r4]; }; Process.CheckForAbort[]; }; PutMsg: PUBLIC ENTRY PROC [r1,r2,r3,r4: ROPE _ NIL] = { ENABLE UNWIND => NULL; MessageWindow.Append[r1, TRUE]; IF r2 # NIL THEN MessageWindow.Append[r2, FALSE]; IF r3 # NIL THEN MessageWindow.Append[r3, FALSE]; IF r4 # NIL THEN MessageWindow.Append[r4, FALSE]; Process.CheckForAbort[]; }; END.