| (* Library module defined by the International Standard |
| Information technology - programming languages |
| BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. |
| |
| Copyright ISO/IEC (International Organization for Standardization |
| and International Electrotechnical Commission) 1996-2021. |
| |
| It may be freely copied for the purpose of implementation (see page |
| 707 of the Information technology - Programming languages Part 1: |
| Modula-2, Base Language. BS ISO/IEC 10514-1:1996). *) |
| |
| DEFINITION MODULE StreamFile; |
| |
| (* Independent sequential data streams *) |
| |
| IMPORT IOChan, ChanConsts; |
| |
| TYPE |
| ChanId = IOChan.ChanId; |
| FlagSet = ChanConsts.FlagSet; |
| OpenResults = ChanConsts.OpenResults; |
| |
| (* Accepted singleton values of FlagSet *) |
| |
| CONST |
| read = FlagSet{ChanConsts.readFlag}; (* input operations are requested/available *) |
| write = FlagSet{ChanConsts.writeFlag}; (* output operations are requested/available *) |
| old = FlagSet{ChanConsts.oldFlag}; (* a file may/must/did exist before the channel is |
| opened *) |
| text = FlagSet{ChanConsts.textFlag}; (* text operations are requested/available *) |
| raw = FlagSet{ChanConsts.rawFlag}; (* raw operations are requested/available *) |
| |
| |
| PROCEDURE Open (VAR cid: ChanId; name: ARRAY OF CHAR; |
| flags: FlagSet; VAR res: OpenResults); |
| (* Attempts to obtain and open a channel connected to a |
| sequential stream of the given name. |
| The read flag implies old; without the raw flag, text is |
| implied. If successful, assigns to cid the identity of |
| the opened channel, and assigns the value opened to res. |
| If a channel cannot be opened as required, the value of |
| res indicates the reason, and cid identifies the invalid |
| channel. |
| *) |
| |
| PROCEDURE IsStreamFile (cid: ChanId): BOOLEAN; |
| (* Tests if the channel identified by cid is open to a sequential stream. *) |
| |
| PROCEDURE Close (VAR cid: ChanId); |
| (* If the channel identified by cid is not open to a sequential stream, the exception |
| wrongDevice is raised; otherwise closes the channel, and assigns the value identifying |
| the invalid channel to cid. |
| *) |
| |
| END StreamFile. |
| |