| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- (* Release 3.10 *)
- (*-------------------------------------------------------------------------*
- * *
- * FIO.DEF - Modula-2 file input/output *
- * *
- * COPYRIGHT (C) 1987..1992 Clarion Software Corporation. *
- * All Rights Reserved *
- * *
- *--------------------------------------------------------------------------*)
- (*# call(o_a_copy => off) *)
- (*%F _fdata *)
- (*# call(seg_name => null) *)
- (*# data(seg_name => null) *)
- (*%E *)
- (*# module(implementation=>off,init_code => on) *)
- DEFINITION MODULE FIO;
- IMPORT CoreFile, Str;
- CONST
- MaxOpenFiles = 15;
- (* If this value is changed, OPEN_MAX in CoreFile.a MUST be changed accordingly *)
- TYPE
- File = CoreFile.File;
- FileInf = CoreFile.FileInf;
- CONST
- DiskFull = 112 ; (* Error if Write fails with disk full *)
- StandardInput = 0 ; (* MSDOS standard handles *)
- StandardOutput = 1 ;
- ErrorOutput = 2 ;
- AuxDevice = 3 ;
- PrinterDevice = 4 ;
- (*
- TYPE
- BufRec = RECORD
- RWPos,
- EOB,
- BufSize : CARDINAL;
- Buffer : ARRAY[0..0] OF SHORTCARD;
- END;
- *)
- CONST
- BufferOverhead = 0;
- VAR
- IOcheck : BOOLEAN; (* if true errors terminate program with report *)
- EOF : BOOLEAN;
- PROCEDURE IOresult() : CARDINAL;
- PROCEDURE Open (Name: ARRAY OF CHAR) : File;
- PROCEDURE OpenRead(Name: ARRAY OF CHAR) : File;
- PROCEDURE Create (Name: ARRAY OF CHAR) : File;
- PROCEDURE Append (Name: ARRAY OF CHAR) : File;
- PROCEDURE Close (F: File);
- PROCEDURE Size (F: File) : LONGCARD;
- PROCEDURE GetPos(F: File) : LONGCARD;
- PROCEDURE Seek (F: File; Pos: LONGCARD);
- PROCEDURE Truncate(F: File);
- PROCEDURE Exists(Name: ARRAY OF CHAR) : BOOLEAN;
- PROCEDURE Erase (Name: ARRAY OF CHAR);
- PROCEDURE Rename(Name,NewName : ARRAY OF CHAR);
- PROCEDURE AssignBuffer(F : File; VAR Buf: ARRAY OF BYTE);
- PROCEDURE GetStreamPointer(F: File): FileInf;
- PROCEDURE AppendStream(St: FileInf): File;
- PROCEDURE AppendHandle(F: File; ReadOnly: BOOLEAN);
- PROCEDURE Flush(F: File);
- PROCEDURE ChDir (Name: ARRAY OF CHAR);
- PROCEDURE MkDir (Name: ARRAY OF CHAR);
- PROCEDURE RmDir (Name: ARRAY OF CHAR);
- PROCEDURE GetDir(Drive: SHORTCARD; VAR Name: ARRAY OF CHAR);
- VAR
- ShareMode: BITSET; (* File sharing mode used by Open and OpenRead *)
- CONST
- ShareNoInherit = {7};
- ShareCompat = {};
- ShareDenyRW = {4};
- ShareDenyWR = {5};
- ShareDenyRD = {4, 5};
- ShareDenyNone = {6};
- ShareAll = {4..6};
- TYPE
- PathStr = ARRAY[0..64] OF CHAR;
- PathTail = ARRAY[0..12] OF CHAR;
- TYPE
- Attrib = (readonly,hidden,system,volume,directory,archive);
- FileAttr = SET OF Attrib;
- DirEntry = RECORD
- Reserved_Handle: CARDINAL;
- rsvd : ARRAY[0..18] OF SHORTCARD;
- attr : FileAttr;
- time : CARDINAL;
- date : CARDINAL;
- size : LONGCARD;
- Name : PathTail;
- END;
- PROCEDURE ReadFirstEntry(DirName : ARRAY OF CHAR;
- Attr : FileAttr;
- VAR D : DirEntry) : BOOLEAN;
- PROCEDURE ReadNextEntry (VAR D : DirEntry) : BOOLEAN;
- PROCEDURE WrChar (F: File; V: CHAR );
- PROCEDURE WrBool (F: File; V: BOOLEAN ; Length: INTEGER);
- PROCEDURE WrShtInt (F: File; V: SHORTINT ; Length: INTEGER);
- PROCEDURE WrInt (F: File; V: INTEGER ; Length: INTEGER);
- PROCEDURE WrLngInt (F: File; V: LONGINT ; Length: INTEGER);
- PROCEDURE WrShtCard(F: File; V: SHORTCARD; Length: INTEGER);
- PROCEDURE WrCard (F: File; V: CARDINAL ; Length: INTEGER);
- PROCEDURE WrLngCard(F: File; V: LONGCARD ; Length: INTEGER);
- PROCEDURE WrShtHex (F: File; V: SHORTCARD; Length: INTEGER);
- PROCEDURE WrHex (F: File; V: CARDINAL ; Length: INTEGER);
- PROCEDURE WrLngHex (F: File; V: LONGCARD ; Length: INTEGER);
- PROCEDURE WrReal (F: File; V: REAL ; Precision: CARDINAL; Length: INTEGER);
- PROCEDURE WrLngReal (F: File; V: LONGREAL ; Precision: CARDINAL; Length: INTEGER);
- PROCEDURE WrFixReal (F: File; V: REAL ; Precision: CARDINAL; Length: INTEGER);
- PROCEDURE WrFixLngReal(F: File; V: LONGREAL ; Precision: CARDINAL; Length: INTEGER);
- PROCEDURE WrStr (F: File; V: ARRAY OF CHAR);
- (*# save,
- call(o_a_copy => on) *)
- PROCEDURE WrStrAdj (F: File; S: ARRAY OF CHAR; Length: INTEGER);
- (*# restore *)
- PROCEDURE WrLn (F: File);
- PROCEDURE WrCharRep(F: File; V: CHAR; Count: CARDINAL );
- PROCEDURE WrBin (F: File; Buf: ARRAY OF BYTE; Count: CARDINAL);
- PROCEDURE RdChar (F: File) : CHAR;
- PROCEDURE RdBool (F: File) : BOOLEAN;
- PROCEDURE RdShtInt (F: File) : SHORTINT;
- PROCEDURE RdInt (F: File) : INTEGER;
- PROCEDURE RdLngInt (F: File) : LONGINT;
- PROCEDURE RdShtCard(F: File) : SHORTCARD;
- PROCEDURE RdCard (F: File) : CARDINAL;
- PROCEDURE RdLngCard(F: File) : LONGCARD;
- PROCEDURE RdShtHex (F: File) : SHORTCARD;
- PROCEDURE RdHex (F: File) : CARDINAL;
- PROCEDURE RdLngHex (F: File) : LONGCARD;
- PROCEDURE RdReal (F: File) : REAL;
- PROCEDURE RdLngReal(F: File) : LONGREAL;
- PROCEDURE RdItem (F: File; VAR V: ARRAY OF CHAR);
- PROCEDURE RdStr (F: File; VAR V: ARRAY OF CHAR);
- PROCEDURE RdBin (F: File; VAR Buf: ARRAY OF BYTE; Count: CARDINAL) : CARDINAL;
- PROCEDURE GetDrive() : SHORTCARD ;
- PROCEDURE SetDrive(Drive: SHORTCARD): SHORTCARD;
- PROCEDURE GetCurrentDate () : LONGCARD ;
- PROCEDURE GetFileDate( f : File) : LONGCARD;
- PROCEDURE SetFileDate( f : File ; d : LONGCARD ) ;
- TYPE
- FileStamp = RECORD
- Year, Month, Day : SHORTCARD;
- Hour, Min, Sec : SHORTCARD;
- END;
- PROCEDURE GetFileStamp(f : File ; VAR b: FileStamp) : BOOLEAN;
- PROCEDURE ThreadEOF(): BOOLEAN;
- PROCEDURE ThreadOK(): BOOLEAN;
- VAR Separators : Str.CHARSET;
- VAR OK : BOOLEAN;
- VAR ChopOff : BOOLEAN;
- VAR Eng : BOOLEAN; (* Engineering notation *)
- VAR PrefixChar : CHAR;
- VAR SuffixChar : CHAR;
- VAR EOL : CHAR; (* end-of-line character for RdStr *)
- END FIO.
|