home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / xc212os2.zip / ISODEF / seqfile.def < prev    next >
Text File  |  1994-12-22  |  4KB  |  85 lines

  1. DEFINITION MODULE SeqFile;
  2.  
  3.   (* Rewindable sequential files *)
  4.  
  5. IMPORT IOChan, ChanConsts;
  6.  
  7. TYPE
  8.   ChanId = IOChan.ChanId;
  9.   FlagSet = ChanConsts.FlagSet;
  10.   OpenResults = ChanConsts.OpenResults;
  11.  
  12.   (* Accepted singleton values of FlagSet *)
  13.  
  14. CONST
  15.   read = FlagSet{ChanConsts.readFlag};   (* input operations are requested/available *)
  16.   write = FlagSet{ChanConsts.writeFlag}; (* output operations are requested/available *)
  17.   old = FlagSet{ChanConsts.oldFlag};     (* a file may/must/did exist before the channel is
  18.                                             opened *)
  19.   text = FlagSet{ChanConsts.textFlag};   (* text operations are requested/available *)
  20.   raw = FlagSet{ChanConsts.rawFlag};     (* raw operations are requested/available *)
  21.  
  22. PROCEDURE OpenWrite (VAR cid: ChanId; name: ARRAY OF CHAR; flags: FlagSet;
  23.                      VAR res: OpenResults);
  24.   (* Attempts to obtain and open a channel connected to a stored rewindable file of the
  25.      given name.
  26.      The write flag is implied; without the raw flag, text is implied.
  27.      If successful, assigns to cid the identity of the opened channel, assigns the value
  28.      opened to res, and selects output mode, with the write position at the start of the
  29.      file (i.e. the file is of zero length).
  30.      If a channel cannot be opened as required, the value of res indicates the reason, and
  31.      cid identifies the invalid channel.
  32.   *)
  33.  
  34. PROCEDURE OpenAppend (VAR cid: ChanId; name: ARRAY OF CHAR; flags: FlagSet;
  35.                       VAR res: OpenResults);
  36.   (* Attempts to obtain and open a channel connected to a stored rewindable file of the
  37.      given name.
  38.      The write and old flags are implied; without the raw flag, text is implied.
  39.      If successful, assigns to cid the identity of the opened channel, assigns the value
  40.      opened to res, and selects output mode, with the write position corresponding to the
  41.      length of the file.
  42.      If a channel cannot be opened as required, the value of res indicates the reason, and
  43.      cid identifies the invalid channel.
  44.   *)
  45.  
  46. PROCEDURE OpenRead (VAR cid: ChanId; name: ARRAY OF CHAR; flags: FlagSet;
  47.                     VAR res: OpenResults);
  48.   (* Attempts to obtain and open a channel connected to a stored rewindable file of the
  49.      given name.
  50.      The read and old flags are implied; without the raw flag, text is implied.
  51.      If successful, assigns to cid the identity of the opened channel, assigns the value
  52.      opened to res, and selects input mode, with the read position corresponding to the
  53.      start of the file.
  54.      If a channel cannot be opened as required, the value of res indicates the reason, and
  55.      cid identifies the invalid channel.
  56.   *)
  57.  
  58. PROCEDURE IsSeqFile (cid: ChanId): BOOLEAN;
  59.   (* Tests if the channel identified by cid is open to a rewindable sequential file. *)
  60.  
  61. PROCEDURE Reread (cid: ChanId);
  62.   (* If the channel identified by cid is not open to a rewindable sequential file, the
  63.      exception wrongDevice is raised; otherwise attempts to set the read position to the
  64.      start of the file, and to select input mode.
  65.      If the operation cannot be performed (perhaps because of insufficient permissions)
  66.      neither input mode nor output mode is selected.
  67.   *)
  68.  
  69. PROCEDURE Rewrite (cid: ChanId);
  70.   (* If the channel identified by cid is not open to a rewindable sequential file, the
  71.      exception wrongDevice is raised; otherwise, attempts to truncate the file to zero
  72.      length, and to select output mode.
  73.      If the operation cannot be performed (perhaps because of insufficient permissions)
  74.      neither input mode nor output mode is selected.
  75.   *)
  76.  
  77. PROCEDURE Close (VAR cid: ChanId);
  78.   (* If the channel identified by cid is not open to a rewindable sequential file, the
  79.      exception wrongDevice is raised; otherwise closes the channel, and assigns the value
  80.      identifying the invalid channel to cid.
  81.   *)
  82.  
  83. END SeqFile.
  84.  
  85.