Appendix C Direct_IO package with IO_exceptions; generic type ELEMENT_TYPE is private; package DIRECT_IO is type file_type is limited private; package direct_io is type file_mode is (in_file, in_out_file, out_file); type count is range 0.. implementation_defined; subtype positive_count is range 1..count'last; -- File management procedure CREATE( file :in out file_type; mode :in file_mode := out_file; name :in string := ""; form :in string := ""); procedure OPEN( file :in out file_type; mode :in file_mode; name :in string; form :in string := ""); procedure CLOSE (file :in out file_type); procedure DELETE (file :in out file_type); procedure RESET (file :in out file_type; mode :in file_mode); procedure RESET (file :in out file_type); function MODE (file :in file_type) return file_mode; function NAME (file :in file_type) return string; function FORM (file :in file_type) return string; function IS_OPEN( file :in file_type) return boolean; -- Input and output operations procedure READ( file :in file_type; item : out element_type); procedure READ( file :in file_type; item : out element_type; from :in positive_count); procedure WRITE( file :in file_type; item :in element_type; from :in positive_count); procedure WRITE( file :in file_type; item :in element_type); procedure SET_INDEX( file :in file_type; to :in positive_count); function INDEX( file :in file_type) return positive_count; function SIZE( file :in file_type) return count; function END_OF_FILE(file:in file_type) return boolean; -- Exceptions status_error :exception renames IO_EXCEPTIONS.status_error; mode_error :exception renames IO_EXCEPTIONS.mode_error; name_error :exception renames IO_EXCEPTIONS.name_error; use_error :exception renames IO_EXCEPTIONS.use_error; device_error :exception renames IO_EXCEPTIONS.device_error; end_error :exception renames IO_EXCEPTIONS.end_error; private --implementation depenedent end DIRECT_IO;