IMPLEMENTATION MODULE StdChans; (* The standard channels are IOChan's; the "current" channels are settable, defaulting to the standards. NullChan is a closed channel (all operations are safe no-ops). *) IMPORT IOChan; VAR inChan, outChan, errChan : IOChan.ChanId; PROCEDURE StdInChan () : IOChan.ChanId; BEGIN RETURN IOChan.StdInChan() END StdInChan; PROCEDURE StdOutChan () : IOChan.ChanId; BEGIN RETURN IOChan.StdOutChan() END StdOutChan; PROCEDURE StdErrChan () : IOChan.ChanId; BEGIN RETURN IOChan.StdErrChan() END StdErrChan; PROCEDURE NullChan () : IOChan.ChanId; BEGIN RETURN IOChan.MakeChan(NIL) END NullChan; PROCEDURE InChan () : IOChan.ChanId; BEGIN RETURN inChan END InChan; PROCEDURE OutChan () : IOChan.ChanId; BEGIN RETURN outChan END OutChan; PROCEDURE ErrChan () : IOChan.ChanId; BEGIN RETURN errChan END ErrChan; PROCEDURE SetInChan (cid : IOChan.ChanId); BEGIN inChan := cid END SetInChan; PROCEDURE SetOutChan (cid : IOChan.ChanId); BEGIN outChan := cid END SetOutChan; PROCEDURE SetErrChan (cid : IOChan.ChanId); BEGIN errChan := cid END SetErrChan; BEGIN inChan := IOChan.StdInChan(); outChan := IOChan.StdOutChan(); errChan := IOChan.StdErrChan() END StdChans.